T
Biên
www.hutech.edu.vn
*1.2020.cmp3017*
này, xin
tailieuhoctap@hutech.edu.vn
-
:
I
...................................................................................................................I
.......................................................................................................... III
BÀI 1: LÀM QUEN V
1.1 TÓM
LÝ
.................................................................... 1
........................................................................................... 1
.................................................................................................... 1
1.1.2
......................................................................... 2
1.1.3
à phép toán ............................................................................... 2
1.1.4
......................................................................... 3
1.1.5
......................................................................................... 3
1.2
HÀNH
1.3
HÀNH NÂNG CAO....................................................................................... 7
BÀI 2: C
2.1 TÓM
........................................................................................... 3
U KHI N
LÝ
C U TRÚC IF VÀ SWITCH .......................................... 8
........................................................................................... 8
...................................................................................................... 8
............................................................................................. 8
............................................................................................... 9
2.2
HÀNH
2.3
HÀNH NÂNG CAO..................................................................................... 13
BÀI 3: C
3.1 TÓM
......................................................................................... 10
U KHI N - C U TRÚC L P ......................................................... 14
LÝ
......................................................................................... 14
.................................................................................................. 14
............................................................................................... 15
....................................................................................... 15
3.2
HÀNH
......................................................................................... 16
3.3
HÀNH NÂNG CAO..................................................................................... 21
...................................................................................... 22
4.1 TÓM
LÝ
......................................................................................... 22
............................................................ 22
.......................................................................... 23
.......................................................................................... 24
........................................................................ 24
4.2
HÀNH
......................................................................................... 25
4.3
HÀNH NÂNG CAO..................................................................................... 28
BÀI 5: M NG ............................................................................................................. 29
5.1 TÓM
LÝ
......................................................................................... 29
5.2
HÀNH
......................................................................................... 30
5.3
HÀNH NÂNG CAO..................................................................................... 34
II
BÀI 6: KI U D
6.1 TÓM
LI U CÓ C U TRÚC........................................................................... 35
LÝ
......................................................................................... 35
6.2
HÀNH
......................................................................................... 36
6.3
HÀNH NÂNG CAO ..................................................................................... 39
6.4
TRA
TÀI
THAM
HÀNH ...................................................................................... 45
............................................................................................. 46
III
Môn Th c hành K
thu t L p trình cung c p cho sinh viên nh ng k
n v ngôn ng
l p trình C. Môn h c này là n n t
môn h
phát tri
c
ti p thu h u h t các
o. M t khác, n m v
y và k
gi i các bài toán và các
ng d
t .
H c xong môn này, sinh viên ph i n
-
T ng quan v Ngôn ng l p trình C.
-
Các ki u d
-
Các l nh có c u trúc.
-
Cách thi t k và s d ng các hàm trong C.
-
X
-
Bi t xây d ng và x
c các v
sau:
li u trong C.
lý các bài toán trên m ng m t chi u.
-
và x
lý các bài toán trên d
li u có c u trúc do ng
lý các file trong C.
N I DUNG MÔN H C
-
Bài 1: Làm quen v
C.
-
Bài 2: C
u khi n
c u trúc IF và SWITCH
-
Bài 3: C
u khi n
c u trúc l p
-
Bài 4: C
-
Bài 5: M ng
-
Bài 6: Ki u d li u có c u trúc
YÊU C U MÔN H C
t v logic và ki n th c toán h
n.
i dùn
nh
IV
CÁCH TI P NH N N I DUNG MÔN H C
Th c hành K
thu t l p trình là môn h
u tiên giúp sinh viên làm quen v i
l p trình trên máy tính, giúp sinh viên có khái ni m c
n v cách ti p
c n và gi i quy t các bài toán tin h c, giúp sinh viên có kh
duy c
i l p trình, và là ti
c a ngành Công ngh
ti p c n v i các h c ph n quan tr ng còn l i
Thông tin. Vì v y, yêu c
bu i th c hành t i l p, th c hành l i các bài t p
n l p và g ch chân nh ng v
pc nv
i h c ph i d
h c
các
nhà, nghiên c u tài li
c khi
không hi
c tài li
nl
i.
ÁNH GIÁ MÔN H C
h c t
i h c c n ôn t p các b
bài t
c, tr
l i các câu h i và
c bài m
n bài
h c.
i v i m i bài h
i h
th c hành các bài t
c ph n tóm t t ki n th c lý thuy
n nâng ca
ý xem k
ng d n trong m i bài
th c hành và làm theo. K t thúc m i bài h c, h c viên c n làm l i các bài th c hành
nhà và luy n t p thêm.
m 2 ph n
1.
m quá trình (chuyên c
m bài th c hành hàng tu n).
2.
m cu i k (bài thi th c hành trên máy).
1
BÀI 1:
BÀI 1: LÀM QUEN V
TRÌNH C
Sau khi th c hành xong bài này, sinh viên có th n
-
Làm quen v i c u trúc chung c a m t
-
Các l nh nh p, xu t d
-
Các ki u d
-
Các phép toán và các hàm chu n c a ngôn ng
-
Th c hi n vi
c:
n.
li u (printf, scanf).
li u chu
nh s
l p trình C.
d ng các l
n.
1.1
1.1.1
Ký hi u
{}
Di n gi i
B
u và k t thúc hàm hay kh i l nh.
Ví d
int main()
{
}
;
K t thúc khai báo bi n, m t l nh, m t int x;
l i g i hàm, hay khai báo nguyên m u void NhapMang(int a[], int &n);
hàm.
//
Chú thích (ghi chú) cho m t dòng. Ch
có tác d
i v
trình.
/*
*/
ng h p nhi u dòng.
//Ham nay dung de nhap mang
void NhapMang(int a[], int &n);
/* Dau tien nhap vao n. Sau do
nhap cho tung phan tu */
void NhapMang(int a[], int &n);
2
BÀI 1:
1.1.2
Ki u
Ghi chú
Ki u liên t c (s
c
nh d ng
th c)
Float
4 bytes
%f
double
8 bytes
%f
long double
10 bytes
%lf
Ký t
1 byte
%c
S nguyên
1 byte
%d
unsigned char
S
1 byte
%d
Int
S nguyên
2 bytes
%d
unsigned int
S
2 bytes
%u
Long
S nguyên
4 bytes
%ld
unsigned long
S
4 bytes
%lu
Ki u r i r c (s
nguyên)
Char
1.1.3
Phép toán
Ghi chú
+,-,*,/
C ng, tr , nhân, chia
%
Chia l y ph
>, >=, <, <=,
L
nh
==
B ng nhau
!=
Khác nhau
!
NOT
&&
AND
||
OR
++
--
Ví d : 5%2=1
c b ng,
c b ng
N u toán t
Gi m 1
ho
gi m
c thì
c r i tính bi u th c
c l i.
3
BÀI 1:
1.1.4
Cú pháp
Di n gi i
Nh p d
nh p t
bi n
nh d
a ch c a các bi n);
li u: l y d
Ví d
li u
Xu t 1 thông báo ra màn
hình.
nh d
Các bi u th c);
int x; float y;
minh hoa\
Xu t giá tr c a các bi u
th c lên màn hình.
1.1.5
if (bi u th
u ki n)
công vi c 1;
else
công vi c 2;
-
Bi u th
u ki n ph
-
Công vi c c n th c hi n có th
các l nh con ph
t trong c p d u ngo c ( ).
g m 1 hay nhi u l nh. N u g m nhi u l nh con thì
c gom vào trong c p d u {}
g i là kh i l nh.
1.2
Câu 1: Làm quen v i c u trúc chung c a m
n:
M C-free/Dev-C, vào File/New/Source file.
i ph n m r ng là .cpp (Ví d : Cau1.cpp)
n stdio.h vì nó ch a hàm printf.
#include<stdio.h>
int main()
{
printf("Hello, World!");
4
BÀI 1:
printf("Hello, World!\n");
printf("Hello, \nWorld!\n");
printf("Hello, \tWorld!\n");
return 0;
}
Hãy biên d ch và ch
t qu
hi n ra màn hình và rút ra nh n
xét.
Phím t
-
C-free: F5
-
Dev-C: F11
biên d ch và ch
Câu 2: Vi
Run):
t thi p m i d
sinh nh t có d ng:
*******************************************
THIEP MOI
Toi du le sinh nhat cua minh
Vao luc 19h ngay 20/10/2016
Tai: 05/42 Vinh Vien
TP. HCM
Rat mong duoc don tiep!
Ho Le Thu
*******************************************
-
ng d n: Áp d ng \t (tab), \n (xu ng dòng), \
Câu 3: Vi
c hi n:
a. Nh p m t s nguyên. Xu t ra màn hình s nguyên v a nh p.
b. Nh p m t s th c. Xu t ra màn hình s th c v a nh p.
c. Nh p m t kí t . Xu t ra màn hình kí t
v a nh p.
5
BÀI 1:
d. Nh p hai s
nguyên. Hãy tính t ng, hi
a hai s
t k t
qu ra màn hình.
#include<stdio.h>
int main()
{
//câu a
int a;
/
float b ;
thuc
thuc da nhap la %f
f
b);
b);
//câu c
char z;
fflush(stdin); //xoá b nh
m
//câu d
int x, y, z;
printf("Moi nhap hai so nguyen de cong: ");
scanf("%d%d", &x, &y);
z = x + y;
printf("Tong hai so la %d\n", z);
//ho c printf("Tong hai so la %d\n", x+y);
v i phép hi u,
phép chia */
u d
li u k t qu
c a
return 0;
}
Câu 4: Vi
p vào bán kính r c a m t hình tròn. Tính chu vi và di n
tích c a hình tròn. In các k t qu lên màn hình.
6
BÀI 1:
hình tròn
Ki u_ d _ li u Tên_bi n; VD: float r;
Cách 1: #define Tên_h ng Giá_tr
VD: #define MAX 100
Cách 2: const Ki u_d _li u Tên_h ng=Giá tr ;
VD: const int MAX=100;
Di n tích hình tròn: PI*r*r
Chu vi hình tròn: 2*PI*r.
Câu 5: Vi
c hi n:
a. Nh p vào hai s nguyên. Xu t ra màn hình giá tr l n nh t.
b. Nh p vào ba s nguyên. Xu t ra màn hình giá tr l n nh t.
ng d n:
Nh p vào hai s nguyên. Xu t ra màn hình giá tr l n nh t.
-
Khai báo hai bi n a, b
-
nguyên.
i dùng nh p 2 s nguyên a và b (dùng printf, scanf).
-
S
d ng m t bi n max
l n nh t trong hai s , khai báo max.
-
So sánh hai s a và b, n u s nào l
-
Xu t ra màn hình giá tr l n nh
c: xu t giá tr bi n max
Nh p vào ba s nguyên. Xu t ra màn hình giá tr l n nh t.
-
, khai báo 3 bi n a, b, c và max
-
Gi s a là s l n nh t, t c max = a.
-
L
t so sánh hai s
max = s
-
l n nh t.
còn l i b, c v i max, n u s nào l
max thì c p nh t
u b>max thì max=b. N u c>max thì max=c.
Xu t ra màn hình giá tr l n nh
c: xu t giá tr bi n max.
7
BÀI 1:
1.3
Câu 6: Nh p vào 3 s
a, b, c. Ki m tra xem 3 s
p thành tam
giác không? N u có hãy tính chu vi và di n tích c a tam giác theo công th c:
-
Chu vi CV = a+b+c.
-
Di n tích S = sqrt(p*(p-a)*(p-b)*(p-
-
Xu t các k t qu ra màn hình.
ng d n:
a, b, c là s
u ki
a, b, c ki u unsigned int.
3 s
l p thành tam giác: t ng 2 c nh ph i l
nh còn l i.
V y: a, b, c l p thành 3 c nh c a tam giác khi và ch khi a+b>c và a+c>b và
b+c>a.
Tính di n tích và chu vi theo công th
c hai sqrt(x)
Câu 7: Vi
n <math.h>.
cm ts
VD: Nh p vào n=234
s .
In ra: 432
ng d n:
-
L
t l y các ch
màn hình theo th
s (s
t :
Ch
s
Ch
s hàng ch c
Ch
s
Ví d : 234 %10 =4
234 /10 =23
23 %10 =3
23/10=2
2%10=2
2/10=0 -> d ng
d ng phép chia / và phép chia l y ph
và in ra
8
BÀI 2:
BÀI 2: C
U KHI N
C U TRÚC IF VÀ SWITCH
Sau khi th c hành xong bài này, sinh viên có th n
c:
-
N m v ng cú pháp, cách th c ho
ng c a c u trúc r
-
N m v ng cú pháp, cách th c ho
ng c a c u trúc switch
2.1
2.1.1
Cú pháp:
if (bi u th
u ki n)
công vi c;
Ý
N u bi u th c
u ki n cho k t qu
c hi n
u ki n cho k t qu
c hi n
công vi c.
2.1.2
Cú pháp:
if (bi u th
u ki n)
công vi c 1;
else
công vi c 2;
Ý
công vi
N u bi u th
c l i thì th c hi n công vi c th 2.
BÀI 2:
-
Bi u th
u ki n ph
-
Công vi c c n th c hi n có th
các l nh con ph
H
9
t trong c p d u ngo c ( ).
g m 1 hay nhi u l nh. N u g m nhi u l nh con thì
c gom vào trong c p d u {}
g i là kh i l nh.
2.1.3
Cú pháp:
switch (bieu_thuc)
{
case gia_tri_1:
các câu l nh;
break;
/*l
hi n xong m
i l nh switch sau khi th c
ng h p*/
...
case gia_tri_n:
các câu l nh;
break;
[default: cv th c hi n m
nh n u bi u th c không có giá tr nào trong các
case] //có th có ho c không tu bài toán
}
Gia_tri_i: là các h ng s nguyên ho c ký t .
Ph thu c vào giá tr c a bi u th c vi t sau switch, n u:
-
Giá tr này = gia_tri_i thì th c hi n câu l nh sau case gia_tri_i.
-
Khi giá tr bi u th c không th a t t c
các gia_tri_i thì th c hi n câu l nh sau
default n u có, ho c thoát kh i câu l nh switch.
-
c hi n xong câu l nh c a case gia_tri_i
th c hi n luôn các l nh thu
i nó mà không xét l
gia_tri_i
sau khi th c hi n xong m
u ki n (do các
i l nh switch
ng h p, ta dùng l nh break.
10
BÀI 2:
2.2
Câu 1: Vi
i
c nh t ax + b = 0 v i a, b nh p t
bàn
phím.
ng d n:
-
Khai báo hai bi n a, b ki u s th
nh p tùy ý t
Gi i thu
-
Hãy v n d ng l
ràng nh t.
#include <stdio.h>
#include< conio.h>
{
float a,b;
c
bàn phím. Nh p a, b.
-
int main()
s
ng h p a = 0 và a
0.
t gi i thu
i dùng
11
BÀI 2:
nhap a;
nhap b;
if ( a ==0 )
if ( b==0 )
else
else
-b/a );
return 0;
}
c hai ax2 + bx + c = 0. V i a, b, c nh p
Câu 2: Vi
t bàn phím.
ng d n:
-
Khai báo 3 bi n a, b, c ki u s th c. Nh p các h s a, b, c.
-
Xét a = 0
thành b c nh t, gi i và bi n lu n theo b, c
bài 1).
-
Xét a
0. Tính delta, d = b*b-4*a*c
ng h p d = 0, d < 0 và d > 0.
-
N
m.
-
N u d=0 thì
m kép x1 = x2 = -b/(2*a)
-
N
m phân bi t
-
c hai sqrt(s ) n
Câu 3: Nh p vào 3 s
giác không? N u có hãy cho bi
n <math.h>.
a, b, c. Ki m tra xem 3 s
p thành tam
c lo
ng d n:
-
a, b, c là s
c a ki u này là %u.
a, b, c ki u unsigned int . Chu
nh d ng
12
-
BÀI 2:
u ki
3 s
l p thành tam giác: t ng 2 c nh ph i l
a, b, c l p thành 3 c nh c a tam giác
-
a+b> c và a+c>b và b+c>a.
Xét lo i tam giác:
Tam giác cân
u
-
nh còn l i. V y:
Tam giác vuông
a = b ho c b = c ho c c = a.
a=b=c.
a2=b 2+c2 ho c b2=a2+c2 ho c c2=a2+b 2.
Câu 4: Vi
p s nguyên có hai ch
s , hi n th
cs
ng d n:
-
Khai báo và nh p s nguyên n.
-
N u 9 < n < 100 thì
Th c hi
c s n.
c l i thì xu t ra thông báo "s nh p vào không ph i là s có hai ch
s ".
c s n:
L y ch
s hàng ch c n/10. S
L y ch
s
d ng câu l nh switch
n%10. S
c ch
d ng câu l nh switch
s hàng ch c
c ch
s
hàng
.
Câu 5: Vi
p vào tháng c a m
u tháng nh p vào <1 ho
t s
ngày c a tháng
nt
ng d n:
-
Khai báo bi n và nh p vào tháng.
-
Các tháng 1, 3, 5, 7, 8, 10, 12 có 31 ngày
-
Các tháng 4, 6, 9, 11 có 30 ngày
-
N u là tháng 2 thì yêu c u nh
n thì tháng 2 có 29
ngày, còn l i là 28 ngày.
-
t cho 4 ( ho c nh
b nl ys
u chia h
cu i là s
n)
0 thì các
BÀI 2:
-
N u tháng nh p vào không thu
13
n t i
2.3
Câu 6: Nh
m
không? In k t qu ra màn hình.
Câu 7: Vi
c TAXI. Bi t r ng:
-
200m ti
-
N ul
-
Hãy nh p s
i km thêm s
ti n ph i tr .
p l hay
14
BÀI 3:
-
BÀI 3: C
U KHI N -
C U TRÚC L P
Sau khi th c hành xong bài này, sinh viên có th n
c:
-
N m v ng cú pháp, cách th c ho
ng c a c u trúc l p for.
-
N m v ng cú pháp, cách th c ho
ng c a c u trúc l p while.
-
N m v ng cú pháp, cách th c ho
ng c a c u trúc l p do ... while.
3.1
3.1.1
Cú pháp:
for (bi u th c kh i gán; bi u th
u ki n; bi u th
m)
{
kh i l nh th c hi n công vi c;
}
c 1: Kh i gán cho bi u th c 1
c 2: Ki
-
N u bi u th
Quay tr l
-
u ki n c a bi u th c 2.
c hi n các l nh c a vòng l p, th c hi n bi u th c 3.
c 2.
c l i thoát kh i l p.
BÀI 3:
-
15
3.1.2
Cú pháp:
<Kh i gán>
while (bi u th
u ki n)
{
L nh/ kh i l nh;
m ch s l p;
}
Cách ho
ng c a while gi ng for.
3.1.3
Cú pháp:
do
{
Kh i l nh th c hi n công vi c;
} while (bi u th
u ki n) ;
Th c hi n kh i l
n khi bi u th
u ki n có giá tr sai (có giá
tr b ng 0) thì d ng.
L p while ki
hi n l nh l p r i m i ki
nh t m t l n.
u ki
c khi th c hi n l p, còn vòng l
u ki
c
p do...while th c hi n l nh ít
16
BÀI 3:
-
3.2
Câu 1: Vi
c hi n:
a. Xu t ra màn hình 10 dòng: "XIN CHAO CAC BAN".
b. Xu t ra màn hình n dòng: ""XIN CHAO CAC BAN", v i n nh p t
bàn phím.
ng d n:
a.
nh s l n l p: 10 l
nh công vi c l p: xu
n code sau minh ho
//Cách 1: S
cách dùng các vòng l p for,
d ng vòng l p for
int i;
for(i=1; i<=10; i++)
\
//Cách 2: S
d ng vòng l p while---------------------------------------
i=1;
while (i<=10)
{
\
i=i+1; //ho c i++; ho c i+=1;
}
//Cách 3: S
d ng vòng l
----------------------------------
i=1;
do{
\
i=i+1;
}while (i<=10);
Câu 2: Vi
p vào m t s nguyên n > 0, hãy:
a. Xu t ra màn hình các s trong ph m vi t
b. Xu t ra màn hình các s ch n trong ph m vi t
n n.
n n.
c. Xu t ra màn hình các s l không chia h t cho 3 trong ph m vi t
n n.
BÀI 3:
-
d. Tính các bi u th c sau:
-
S1 = 1 + 2 + ... + n
-
S2 = - 1 +2 - 3 + 4 - ... + (-1)n n.
-
S3 = 1/2 + 2/3 + 3/4 ... + n/(n+1)
-
S4 = xn (x là s th c nh p t
e. Tính t ng các ch
bàn phím).
s c a n. Ví d : n = 125, t ng các ch
s là 8.
ng d n:
Nh p s
nguyên n > 0, n u nh p sai thì b t nh p l i.
do {
p vào s ph n t
if(n<=0)
, nhap lai
}while ( n<=0 );
a. Xu t ra màn hình các s
trong ph m vi t
n n.
17
18
-
BÀI 3:
-
Câu a, b, c, d có th áp d ng c u trúc l p for/while.
ng d n câu b
b. Xu t ra màn hình các s
e. Tính t ng các ch
L
-
Gi
cs.
-
Thu
t l y t ng ch
s , khai báo bi
s
ch n trong ph m vi t
n n.
c an
s c a s n và c ng d n vào bi n t ng.
ng các ch
s
là tong, bi
ng ch
s
c a n là
BÀI 3:
Câu 3: Vi
m s
c c a n. N
c l i xu t ra
c. Tính t
. N u nh p sai thì yêu c u nh p l i.
m b ng 2 thì xu t ra màn hình
i là s nguyên t
hoàn thi
c l i xu t ra
.
ng d n:
-
u ki n nh p l
c n > 100.
do {
p vào s ph n t
if
}while ( n<=0 || n > = 100 );
a.
S
d ng phép chia l
ms
Khai báo bi
nh s
cc an
u tiên gán d=0;
nguyên t
,
.
c c a n (không tính chính nó). N u t n
xu t ra màn hình
thi
19
c hi n:
a. Nh p m t s nguyên n sao cho
b.
-
c c a n.
ng n thì
hoàn
20
BÀI 3:
L
-
t l y n chia l y ph
t
n n, n u s
-> dùng vòng l p
Câu 4: Vi
n th ra màn hình n dòng (0 < n
a.
b.
**********
*
**********
**
**********
***
**********
****
**********
*****
**********
******
10):
nào có s
BÀI 3: C
21
-
C th :
a. Hi n th trên n dòng, m i dòng có k d u *, k
b. Hi n th trên n dòng, dòng th
i dùng nh p.
i có i d u *.
ng d n:
-
Câu a: S
d ng 2 vòng for l ng nhau, vòng for th
n l n), vòng for th
-
Câu b: S
nh
l p xu t ra d u * theo s
d ng 2 vòng for l ng nhau, vòng for th
n l n), vòng for th
l p xét t ng dòng (l p
ng yêu c u (l p k l n).
nh
l p xu t ra d u * theo s
l p xét t ng dòng (l p
ng yêu c u (l p i l n).
3.3
Câu 5: Vi
n th b ng c
Câu 6: Vi
c hi n:
a. Nh p n > 0.
b. Li t kê các s nguyên t
c.
ms
trong ph m vi t
n n.
ng s nguyên t trong ph m vi t
n n.
d. Tính t ng các s nguyên t trong ph m vi t
n n.
ng d n
b. Li t kê các s
nguyên t
trong ph m vi t
n n.
for ( int i=2 ; i<=n ; i++ )
ki m tra nto ( i ) n
c.
ng các s
i;
nguyên t
trong ph m vi t
n n.
int d=0;
for ( int i=2 ; i<=n ; i++ )
ki m tra nto ( i ) n
Câu 7: Vi
;
c hi n:
a. Nh p n > 0.
b. Tính t ng các ch
s c a n. Ví d : v i n = 12537 thì t ng = 1+2+5+3+7=18.
22
BÀI 4:
BÀI 4:
TRÌNH CON
Sau khi th c hành xong bài này, sinh viên có th n
-
Khái ni m v hàm (function) trong C.
-
Cách xây d ng và cách s d ng hàm trong C.
c:
4.1
Hàm là m
tr
c
4.1.1
v
c l p th c hi n tr n v n m t công vi c nh
giá tr
i nó, hay nói cách khác hàm là s
nh
chia nh
23
BÀI 4:
-
s
d
n, khai báo h ng s , khai báo
các bi n toàn c c và khai báo các ki u d
li u t
(các nguyên m u hàm).
-
Nguyên m u hàm:
<Ki u d li u c a hàm> Tên hàm ([danh sách các tham s ]);
-
Nguyên m u hàm th c ch
u c a hàm thêm d u ch m ph y (;) vào
cu i, tuy nhiên tham s trong nguyên m u hàm có th b ph n tên.
-
Hàm chính (main()): Ch a các bi n, các l nh và các l i g i hàm c n thi t trong
-
c s d ng nh m m
Khi có m t công vi c gi ng nhau c n th c hi n
Khi c n chia m
nhi u v trí.
n ph c t
c trong sáng, d
toán và gi i quy t v
nh
hi u trong vi c x
(hàm con)
lý, qu n lý vi c tính
.
4.1.2
-
t hàm bao g m:
Khai báo ki u hàm
t tên hàm
Khai báo các tham s
Các câu l nh c n thi
-
th c hi n ch
a hàm.
Có 2 lo i hàm:
void: Hàm không tr
ch
tr . Nh ng hàm lo
Nh p / xu t d
Ki u d
tr
v
v
li
ng nhóm
li u , th ng kê, s p x p, li t kê.
n (r i r c/ liên t c) hay ki u d
tr . Sau khi th c hi n xong, k t qu
c s
trung bình, t
d
ng h p:
li u có c u trúc: Hàm
i. Nh ng hàm lo i này
m, ki m tra, tìm ki m, tính
24
BÀI 4:
Hàm không tr v tr :
Hàm tr v tr :
void Ten_Ham(ds tham so neu co)
Kieu_dl Ten_Ham(ds tham so neu co)
{
{
Khai báo các bi n c c b ;
Ki u_dl kq;
Các câu l nh / kh i l nh hay l i g i
Khai báo các bi n c c b ;
n hàm khác;
Các câu l nh / kh i l nh hay l i g i
n hàm khác;
}
return kq;
}
//ki u d
li u c a hàm là ki u c a k t qu
tr v .
4.1.3
nh d a vào d li
-
u vào c a bài toán (Input). G m 2 lo i :
Tham tr : Giá tr c a bi n tham s
i sau khi hàm th c hi n
xong. Tham s d ng này ch
li
u vào.
Ví d : int KiemTraNguyenTo(int n);
-
Tham bi n: Có s
i giá tr c a tham s trong quá trình th c hi n và c n l y
l i giá tr
i hàm.
u ra (k t qu ) ho
ng d ng c a tham s lo i này có th là d
v a là d
li
u vào v a là d
Ví d :
Hàm nh p s nguyên: void NhapSoNguyen(int &n);
Hàm hoán v giá tr hai s : void HoanVi(int &a, int &b);
4.1.4
M t hàm ch
c th c thi khi ta có m t l i g
Cú pháp g i hàm:
li
u ra.
li u
25
BÀI 4:
<Tên hàm>([Danh sách các tham s ])
4.2
Câu 1: Vi
c hi n các ch
a. Nh p vào m t s nguyên n (0 < n < 100).
b. Ki m tra n có ph i là s nguyên t không?
c. Li t kê các s nguyên t
d.
ms
trong ph m vi t
n n.
ng s nguyên t trong ph m vi t
n n.
e. Tính t ng các s nguyên t trong ph m vi t
n n.
f. Tính trung bình c ng các s nguyên t trong ph m vi t
n n.
ng d n:
a. Nh p vào m t s nguyên n (0 < n < 100).
void NhapSoNguyen(int &n)
{
L p công vi c{
Nh p n
N u n<=0 ho c n>=100 thì thông báo nh p sai, hãy nh p l i.
} Ch ng nào (n<=0 ho c n>=100);
}
b. Ki m tra n có ph i là s nguyên t không? Hàm tr
v 1: n u n là s nguyên t
Hàm tr v 0: n u n không ph i là s nguyên t
c. Li t kê các s nguyên t
d.
ms
trong ph m vi t
ng s nguyên t trong ph m vi t
Hàm tr v s
ng s nguyên t
n n.
n n.
c trong ph m vi t
n n.
26
BÀI 4:
ÌNH CON
e. Tính t ng các s nguyên t trong ph m vi t
n n.
f. Tính trung bình c ng các s nguyên t trong ph m vi t
-
V i m i hàm, ta test th
n n.
trong hàm main(), sau khi ch y ra k t qu
i
làm ti p nh ng hàm khác.
-
Cách g i th c hi n hàm con trong main(): ch g i tên_hàm (các tham s
th c
ng)
Câu 2: Vi
c hi n ch n l a công vi c:
a. Gi
c 1 ax+b=0.
b. Ki m tra m t s nguyên có là s hoàn thi n không?
c. Li t kê các s
d.
hoàn thi n trong ph m vi t
i dùng nh p)
c chung l n nh t c a hai s nguyên a, b nh p t
bàn phím.
e. Thoát kh
ng d n:
-
nh b n c n vi
ng hàm nào?
Trong hàm main, g
c và
không còn l i, hãy s a
kh
c hi n theo ch
n code sau:
//Xu t ra menu công vi c
void XuatMenu()
{
\
\
n\
BÀI 4:
\
\
}
//-------------------------------------------------n code này vi t trong hàm main()
//dùng m t bi
i dùng ch n int chon;
do{
XuatMenu(); //hi n th menu công vi
i dùng
ch n
case 1:
float a, b;
//nh p h s a, b
//G i hàm gi i pt b c 1
break;
case 2:
//khai báo và nh p s nguyên
//g i hàm Ki m tra x có ph i s
hoàn thi n
không
break;
case 3:
//khai báo và nh p s nguyên n
//g i hàm xu t các s
hoàn thi n trong ph m vi
break;
case 4:
//khai báo và nh p s 2 s nguyên a, b
//g
break;
default: chon=0;
}
}while (chon!=0);
c chung l n nh t
27
28
BÀI 4:
4.3
Câu 3: Vi
pt
N u: ch là
bàn phím 2 s a, b và m t ký t
ch.
thì th c hi n phép tính a + b và in k t qu lên màn hình.
ch là
thì th c hi n phép tính a - b và in k t qu lên màn hình.
ch là
thì th c hi n phép tính a * b và in k t qu lên màn hình.
ch là
thì th c hi n phép tính a / b và in k t qu lên màn hình.
Câu 4: Vi
c gi
ca, gi ra ca c a m
Gi
s
vào
i.
r ng:
-
Ti n tr cho m i gi
-
Gi vào ca s m nh t là 6 gi
vào nguyên).
c 12 gi
sáng và gi ra ca tr
nh t là 18 gi (Gi
s
gi nh p
BÀI 5:
29
BÀI 5: M NG
Sau khi th c hành xong bài này, sinh viên có th n
c:
-
Cách khai báo d
li u ki u m ng
-
Các thao tác nh p xu t, các k thu t thao tác trên m ng.
-
Luy n t
5.1
M ng m t chi u th c ch t là m t bi
c c p phát b
nh
liên t c và bao g m
Các thành ph n c a m ng là t p h p các bi n có cùng ki u d
li u và cùng tên. Do
nhi u bi n thành ph n.
truy xu t các bi n thành ph
ch m c.
Khai báo:
Ki u_d _ li u Tên_m ng
c];
Ví d :
int a[100]; // Khai báo m ng s nguyên a g m 100 ph n t
float b[50]; // Khai báo m ng s th c b g m 50 ph n t
S
d ng:
Tên_bi n_m ng[ch s ];
Ví d
: int A[5] // Khai báo m ng A g m t
Ch s (s th
t )
nt
nguyên.
0
1
2
3
4
A[0]
A[1]
A[2]
A[3]
A[4]
30
BÀI 5:
5.2
Câu 1: Vi
c hi n:
a. Nh p m ng s nguyên g m n ph n t
(0 < n
b. Xu t m ng v a nh p
ng d n:
#include <conio.h>
#include <stdio.h>
#define MAX 100
/*---------------------------------*Hàm nh
ng ph n t cho m ng
*/
void NhapSL(int &n)
{
do{
}while (n<=0 || n>100);
}
/*-----------------------------------*Hàm nh p giá tr cho t ng ph n t
trong m ng
*/
void NhapMang (int a[], int n)
{
for (int i = 0; i < n; i ++)
{
}
}
/*-----------------------------------*Hàm xu t các ph n t c a m ng ra màn hình
*/
void XuatMang (int a[], int n)
{
\nMang gom cac phan tu:\
for (int i = 0; i < n; i ++)
}
10).
BÀI 5:
//==============================
int main()
{
int a[MAX], n;
NhapMang (a,n);
XuatMang (a,n);
return 0;
}
Câu 2: Làm ti
a câu 1 v i các yêu c u sau:
a. Xu t các ph n t
b.
ms
chia h t cho 3 có trong m ng.
ng s
ng.
c. Tính t ng các s trong m ng.
d. Tính trung bình c ng c a m ng.
e. Tính trung bình c ng các ph n t
ng.
f. Xu t các s nguyên t có trong m ng
g.
ms
ng s nguyên t có trong m ng.
h. Tính t ng các s nguyên t có trong m ng.
i. Tính trung bình c ng các s nguyên t có trong m ng.
j. Tìm ph n t
u tiên.
k. Tìm ph n t
l. Tìm giá tr ph n t
i cùng.
l n nh t (nh nh t).
ng d n
a. Xu t các ph n t
chia h t cho 3 có trong m ng.
Gi i thu t:
-
um
n cu i m ng
for ( int i=0; i<n ; i++)
-
Ki m tra t ng ph n t
c a m ng xem có chia h t cho 3 không
31
32
BÀI 5:
if (a[i] %3==0 )
N u có thì in ph n t
c. Tính t ng các s
trong m ng.
Gi i thu t:
-
Khai báo m t bi
-
um
t ng s = 0;
n cu i m ng
for ( int i=0; i<n ; i++)
-
c ng d n các ph n t
ns
s= s+ a[i] ;
j. Tìm ph n t
u tiên
Gi i thu t :
-
um
n cu i m ng
for ( int i=0; i<n ; i++)
-
Ki m tra t ng ph n t
c am
không
if (a[i] > 0 )
N u có thì xu t ph n t
return a[i] ;
Câu 3: Vi
c hi n:
a. Nh p m ng s th c g m n ph n t (0 < n
b. Xu t m ng v a nh p
ng d n:
#include <conio.h>
#include <stdio.h>
100).
BÀI 5:
#define MAX 100
---------------------------------// Hàm nh
ng ph n t
cho m ng
void NhapSL(int &n)
{
do{
}while (n<=0 || n>100);
}
//
Hàm nh p giá tr cho t ng ph n t
trong m ng
void NhapMang (float a[], int n)
{
for (int i = 0; i < n; i ++)
{
f
}
}
// Hàm xu t các ph n t
c a m ng ra màn hình
void XuatMang (float a[], int n)
{
\nMang gom cac phan tu:\
for (int i = 0; i < n; i ++)
8.2 f
33
34
BÀI 5:
}
int main()
{
float a[MAX];
int n;
NhapMang (a,n);
XuatMang (a,n);
return 0;
}
5.3
Câu 4: Vi
c hi n:
a. Nh p vào m ng a g m n ph n t , trong quá trình nh p ki m tra các ph n t nh p
c trùng, n u trùng thông báo và yêu c u nh p l i.
b. Xu t m ng.
c. Xu t ra màn hình các ph n t
là s
m t i nh ng v trí l
m ng.
d. Xu t ra v trí c a các ph n t
có giá tr l n nh t.
e. Vi t hàm tính t ng các ph n t
f. Vi t hàm s p x p m ng theo th
Yêu c
n m
t
v trí ch n trong m ng.
n.
c hi n theo menu ch
trong
35
BÀI 6:
BÀI 6: KI U D
LI U CÓ C U TRÚC
Sau khi h c xong bài này, h c viên có th :
-
N
c các khái ni
n v ki u d li u có c u trúc;
-
Bi t nh p, xu t d li u có c u trúc cho m t ph n t ..
6.1
C u trúc (struct) th c ch t là m t ki u d
gom nhóm các ki u d
li
li
ng cách
n có s n trong C thành m t ki u d
nhi u thành ph n.
u c u trúc:
struct <tên c u trúc>
{
Các ki u d
li u thành ph n ;
};
//dùng t
t tên m i cho ki u d
typedef struct <tên c u trúc> <tên m i>;
Khai báo bi n ki u c u trúc:
<tên m i> <tên bi n>;
Truy xu t:
<Tên bi n c u trúc> <tên thành ph n>;
li
li u ph c h p
36
BÀI 6:
6.2
Câu 1:
u d
li u phân s g m t
s và m u s . Vi
hi n:
a. Nh p 1 phân s
b. Xu t 1 phân s
c. Rút g n phân s
d. Tính t ng 2 phân s
e. So sánh 2 phân s
ng d n:
Sinh viên tham kh
//Kh
.
ud
li u phân s
#include<stdio.h>
#define MAX 100
typedef struct PHANSO
{
int tu, mau;
}PS;
//Khai báo các nguyên m u hàm----------------------------------------void Nhap1ps(PS &x); void Xuat1ps(PS x);
int UCLN(int a, int b); //tr v giá tr ucln c a hai s a, b
void RutGon(PS &x); PS Cong(PS x, PS y);
//hàm tr v phân s k t qu sau khi c ng
int SoSanh(PS x, PS y);
/* tr v 0 n u phân s x = phân s y tr
v <0 n u phân s x < phân s y */
v s >0 n u phân s x > phân s y tr
c
37
BÀI 6:
//Hàm chính-----------------------------------------------------------------int main()
{
PS x, y;
//nh p và xu t hai phân s
\
\
//tính t ng hai ps
và xu t k t qu ra màn hình
//so sánh hai ps
int kq= SoSanh(x,y);
else
{
} return 0;
}
//Các hàm con=======================================
//Hàm nh p 1 phân s
void Nhap1ps (PS &x)
{
//nh p m u s ph i khác 0, nh p sai b t nh p l i
do
{
38
BÀI 6:
//thông báo và nh p cho t
c a phân s x
} while (x.tu==0);
//n u m u s âm thì chu n hoá, ví d
1/-2 chuy n thành -1/2
if (x.mau<0)
{
x.tu=-x.tu; x.mau=-x.mau;
}
}
//Hàm xu t 1 phân s --------------------------------------------------------------void Xuat1ps(PS x)
{
//xu t ra theo d ng tu/mau, ví d : 3/5
}
c chung l n nh t------------------------------------------------------int UCLN(int a, int b)
{
a=abs(a); b=abs(b); //l y tr tuy
L p ch ng nào a
i
b
N u a>b thì a=a-b;
N u b>a thì b=b-a;
return a;
}
//Hàm rút g n phân s ----------------------------------------------------------------void RutGon(PS &x)
{
BÀI 6:
if (x.tu==0) return; //n u phân s có t
39
= 0 thì không c n rút g n
//l y giá tr ucln c a t và m u c a phân s
x b ng cách g i hàm UCN(?, ?)
//tính l i x.tu và x.mau
}
//Hàm tính t ng hai phân s ----------------------------------------------------------PS Cong(PS x, PS y)
{
PS tong;
//phân s
t qu sau khi c ng
return tong;
}
//Hàm so sánh hai phân s ------------------------------------------------------------int SoSanh(PS x, PS y)
{
return x.tu*y.mau
y.tu*x.mau;
}
6.3
Câu 2: Làm ti
t các hàm sau:
a. Nh p vào dãy phân s
b. Xu t dãy phân s
c. Tính t ng dãy
d. Tìm phân s l n nh t
e. S p x p dãy phân s
n.
40
BÀI 6:
Câu 3:
3.1 Vi t hàm nh p d
li u cho m t sinh viên, thông tin v m t sinh viên g m có:
a. Mã s sinh viên (chu i 10 ký t ).
b. Tên (là chu i t
).
c.
u int. M r ng dd/mm/yy).
d. Gi i tính (Nam ho c N ).
e. L p (chu i 7 ký t
i h
ng), 2 ký t
nt
f.
vào h c, 1 ký t ti p là b c h c (D:
ti p là ngành h c (TH: Tin H c, KT: K
n t ...).
m toán, lý, tin (Ki u s th c).
ng d n
3.1 Khai báo c u trúc sinh viên
struct sinhvien
{
char ten[11];
char mssv [11];
char lop [8];
char gioitinh;
int ntns;
float toan,ly,tin, DTB ;
};
typedef struct sinhvien
sv;
// vi t hàm nh p 1 sinh viên
Cách 1
void nhap1sv( sv &a)
{
flushall();
Toán, QT:
41
BÀI 6:
printf("nhap ten sinh vien :");
gets (a. ten);
printf("nhap ma so sinh vien :");
gets(a. mssv);
flushall();
gioitinh );
printf("nhap diem toan:");
scanf("%f ", &a.toan) ;
printf("nhap diem ly:");
scanf("%f ", &a.ly ) ;
printf("nhap diem tin:");
scanf("%f ", &a.tin );
a.DTB= ( a.toan +a.ly +a.tin ) /3 ;
}
Cách 2
void nhap1sv( sv &a)
{
flushall();
printf("nhap ten sinh vien :");
gets (a. ten);
printf("nhap ma so sinh vien :");
( Nam y/nu x ) :");
gets(a. mssv);
a. gioitinh= getche();
float t;
printf("nhap diem toan:");
scanf("%f ", &t) ; a.toan= t ;
printf("nhap diem ly:");
scanf("%f ", &t);
a.ly = t ;
printf("nhap diem tin:");
scanf("%f ", &t);
a.tin = t;
a.DTB= ( a.toan +a.ly +a.tin ) /3 ;
}
42
BÀI 6:
3.2 Vi t hàm xu t d
li u m t sinh viên v i thông tin v a nh p
trên.
ng d n
void xuat1sv( sv a)
{
Lop :"); puts(a. lop);
else
prin
}
3.3 Vi t hàm nh
void nhapdssv(sv a[ ], int n)
{
for(int i=0 ; i<n ; i++)
{
printf("nhap hoc sinh thu: %d",i+1);
nhap1sv(a[i]);
}
}
ng m t chi u.
BÀI 6:
3.4 Vi t hàm xu t danh sách sinh viên.
void xuatdssv(sv a[ ], int n)
{
for(int i=0;i<n;i++)
{
printf(" sinh vien thu: %d",i+1);
xuat1sv(a[i]);
}
}
3.5 Tìm sinh viên có tên
ng d n
void timtensv (sv a[ ] , int n, char x[])
{ int flag = 0 ;
for(int i=0;i<n;i++)
if ( strcmp ( a[i].ten, x )==0 )
{
xuat1sv (a[i] ) ;
flag = 1 ;
}
if ( flag == 0 )
}
i dùng nh p vào )
43
44
3.6
BÀI 6:
ms
m trung bình >5.
ng d n
int DemsvDTB>5 (sv a[ ], int n)
{
int dem =0;
for(int i=0;i<n;i++)
{
if ( a[i].DTB > 5)
dem++;
}
return dem;
}
3.7 Xu t danh sách sinh viên thu c ngành công ngh thông tin.
ng d n
3.8 Xu t danh sách sinh viên N
ng d n
u danh sách d n cu i danh sách
Ki m tra t ng ph n t
void xuatdssvnu(sv a[ ], int n)
{ int flag =0;
for(int i=0;i<n;i++)
{
{
xuat1sv(a[i]);
flag=1;
}
}
if(flag ==0)
p
}
BÀI 6:
3.9 S p x p danh sách sinh viên t
ng d n
void InterchangeSort( sv a[ ], int n )
{
sv tam ;
for ( int i = 0 ; i<n-1 ; i++ )
for ( int j =i+1; j < n ; j++ )
if( a[ i ].DTB> a[ j ].DTB )
{
tam = a[i] ;
a[i] = a[j] ;
a[j] = tam;
}
}
6.4
n theo c t DTB.
45
46
1. Ph
t, K thu t L p trình C-
n và nâng cao, NXB KH & KT - 2003.
2. Nguy n T n Tr n Minh Khang, Bài gi ngK
Thu t L p trình, Khoa Công Ngh
i h c Khoa h c T nhiên
3. Nguy n Thanh Th y (ch
Khoa h c k thu t
biên), Nh p môn l p trình ngôn ng
C, Nhà xu t b n
2000.
4. Tr n Minh Thái, Bài gi ng và bài t p L
n; Khoa Công Ngh
Thông
i h c Khoa h c T nhiên
5. Tr n Minh Thái, Giáo Trình Bài T p K
Thu t L
ng Công Ngh
Thông Tin Tp. H Chí Minh
6. Brain W. Kernighan & Dennis Ritchie, The C Programming Language, Prentice Hall
Publisher, 1988.
0
You can add this document to your study collection(s)
Sign in Available only to authorized usersYou can add this document to your saved list
Sign in Available only to authorized users(For complaints, use another form )