You are on page 1of 131

Gio trnh Lp trnh C cn bn Trang 1

MC LC
BI 1 : NGN NG LP TRNH & PHNG PHP LP TRNH ...................... 7

1.1 Mc tiu ................................................................................................................................ 7

1.2 L thuyt............................................................................................................................... 7
1.2.1 Ngn ng lp trnh (Programming Language) ............................................................. 7
1.2.1.1 Thut gii (Algorithm) ............................................................................................. 7
1.2.1.2 Chng trnh (Program) ......................................................................................... 7
1.2.1.3 Ngn ng lp trnh (Programming language) ....................................................... 8
1.2.2 Cc bc lp trnh ........................................................................................................... 8
1.2.3 K thut lp trnh ............................................................................................................ 8
1.2.3.1 I-P-O Cycle (Input-Pprocess-Output Cycle) (Quy trnh nhp-x l-xut) ........ 8
1.2.3.2 S dng lu (Flowchart)..................................................................................... 9

BI 2 : LM QUEN LP TRNH C QUA CC V D N GIN ...................... 12

2.1 Mc tiu .............................................................................................................................. 12

2.2 Ni dung.............................................................................................................................. 12
2.2.1 Khi ng v thot BorlandC....................................................................................... 12
2.2.1.1 Khi ng ................................................................................................................ 12
2.2.1.2 Thot........................................................................................................................ 13
2.2.2 Cc v d n gin ......................................................................................................... 13
2.2.2.1 V d 1...................................................................................................................... 13
2.2.2.2 V d 2...................................................................................................................... 15
2.2.2.3 V d 3...................................................................................................................... 16
2.2.2.4 V d 4...................................................................................................................... 16

BI 3 : CC THNH PHN TRONG NGN NG C .........................................18

3.1 Mc tiu .............................................................................................................................. 18

3.2 Ni dung.............................................................................................................................. 18
3.2.1 T kha ........................................................................................................................... 18
3.2.2 Tn................................................................................................................................... 18
3.2.3 Kiu d liu .................................................................................................................... 18
3.2.4 Ghi ch............................................................................................................................ 19
3.2.5 Khai bo bin ................................................................................................................. 19
3.2.5.1 Tn bin ................................................................................................................... 19
3.2.5.2 Khai bo bin .......................................................................................................... 19
3.2.5.3 Va khai bo va khi gn.................................................................................... 20
3.2.5.4 Phm vi ca bin..................................................................................................... 20

BI 4 : NHP / XUT D LIU ..........................................................................21

4.1 Mc tiu .............................................................................................................................. 21

4.2 Ni dung.............................................................................................................................. 21

Trng TH GII TIN HC 39 Nguyn Sn H, P5, Q3 T: 8.344.480 Website: www.infoworldschool.com


Gio trnh Lp trnh C cn bn Trang 2
4.2.1 Hm printf ...................................................................................................................... 21
4.2.2 Hm scanf ....................................................................................................................... 24

4.3 Bi tp................................................................................................................................. 25

BI 5 : CU TRC R NHNH C IU KIN ................................................26

5.1 Mc tiu .............................................................................................................................. 26

5.2 Ni dung.............................................................................................................................. 26
5.2.1 Lnh v khi lnh........................................................................................................... 26
5.2.1.1 Lnh ......................................................................................................................... 26
5.2.1.2 Khi lnh ................................................................................................................. 26
5.2.2 Lnh if ............................................................................................................................. 26
5.2.2.1 Dng 1 (if thiu) ...................................................................................................... 26
5.2.2.2 Dng 2 (if ) ......................................................................................................... 30
5.2.2.3 Cu trc else if ........................................................................................................ 33
5.2.2.4 Cu trc if lng ....................................................................................................... 37
5.2.3 Lnh switch..................................................................................................................... 41
5.2.3.1 Cu trc switchcase (switch thiu).................................................................... 41
5.2.3.2 Cu trc switchcasedefault (switch )........................................................ 44
5.2.3.3 Cu trc switch lng............................................................................................... 46

5.3 Bi tp................................................................................................................................. 47
5.3.1 S dng lnh if ............................................................................................................... 47
5.3.2 S dng lnh switch ....................................................................................................... 48

5.4 Bi tp lm thm................................................................................................................ 49

BI 6 : CU TRC VNG LP ..........................................................................50

6.1 Mc tiu .............................................................................................................................. 50

6.2 Ni dung.............................................................................................................................. 50
6.2.1 Lnh for........................................................................................................................... 50
6.2.2 Lnh break...................................................................................................................... 55
6.2.3 Lnh continue................................................................................................................. 55
6.2.4 Lnh while....................................................................................................................... 55
6.2.5 Lnh dowhile .............................................................................................................. 57
6.2.6 Vng lp lng nhau ........................................................................................................ 59
6.2.7 So snh s khc nhau ca cc vng lp ....................................................................... 60

6.3 Bi tp................................................................................................................................. 60

BI 7 : HM.........................................................................................................63

7.1 Mc tiu .............................................................................................................................. 63

7.2 Ni dung.............................................................................................................................. 63
7.2.1 Cc v d v hm............................................................................................................ 63
7.2.2 Tham s dng tham bin v tham tr........................................................................... 66

Trng TH GII TIN HC 39 Nguyn Sn H, P5, Q3 T: 8.344.480 Website: www.infoworldschool.com


Gio trnh Lp trnh C cn bn Trang 3
7.2.3 S dng bin ton cc ................................................................................................... 67
7.2.4 Dng dn hng #define ............................................................................................... 69

7.3 Bi tp................................................................................................................................. 69

BI 8 : MNG V CHUI ...................................................................................70

8.1 Mc tiu .............................................................................................................................. 70

8.2 Ni dung.............................................................................................................................. 70
8.2.1 Mng................................................................................................................................ 70
8.2.1.1 Cch khai bo mng............................................................................................... 70
8.2.1.2 Tham chiu n tng phn t mng .................................................................... 70
8.2.1.3 Nhp d liu cho mng .......................................................................................... 71
8.2.1.4 c d liu t mng ............................................................................................... 71
8.2.1.5 S dng bin kiu khc.......................................................................................... 72
8.2.1.6 K thut Sentinal.................................................................................................... 72
8.2.1.7 Khi to mng......................................................................................................... 73
8.2.1.8 Khi to mng khng bao hm kch thc.......................................................... 74
8.2.1.9 Mng nhiu chiu ................................................................................................... 74
8.2.1.10 Tham chiu n tng phn t mng 2 chiu ....................................................... 74
8.2.1.11 Nhp d liu cho mng 2 chiu ............................................................................. 75
8.2.1.12 c d liu t mng 2 chiu .................................................................................. 75
8.2.1.13 S dng bin kiu khc trong mng 2 chiu........................................................ 76
8.2.1.14 Khi to mng 2 chiu ........................................................................................... 76
8.2.1.15 Dng mng 1 chiu lm tham s cho hm ........................................................... 77
8.2.1.16 Dng mng 2 chiu lm tham s cho hm ........................................................... 80
8.2.2 Chui ............................................................................................................................... 82
8.2.2.1 Cch khai bo chui ............................................................................................... 82
8.2.2.2 Hm nhp (gets), xut (puts) chui....................................................................... 83
8.2.2.3 Khi to chui......................................................................................................... 84
8.2.2.4 Mng chui.............................................................................................................. 84

8.3 Bi tp................................................................................................................................. 85

BI 9 : CON TR ................................................................................................87

9.1 Mc tiu .............................................................................................................................. 87

9.2 Ni dung.............................................................................................................................. 87
9.2.1 Con tr? .......................................................................................................................... 87
9.2.2 Khi bo bin con tr .................................................................................................... 87
9.2.3 Truyn a ch sang hm ............................................................................................... 88
9.2.4 Con tr v mng............................................................................................................. 89
9.2.5 Con tr tr n mng trong hm ................................................................................. 89
9.2.6 Con tr v chui............................................................................................................. 90
9.2.7 Khi to mng con tr tr n chui ........................................................................... 91
9.2.8 X l con tr tr n chui ........................................................................................... 92
9.2.9 Con tr tr n con tr.................................................................................................. 94

9.3 Bi tp................................................................................................................................. 95

Trng TH GII TIN HC 39 Nguyn Sn H, P5, Q3 T: 8.344.480 Website: www.infoworldschool.com


Gio trnh Lp trnh C cn bn Trang 4
BI 10 : CC KIU D LIU T TO .................................................................96

10.1 Mc tiu .............................................................................................................................. 96

10.2 Ni dung.............................................................................................................................. 96
10.2.1 Structure ......................................................................................................................... 96
10.2.1.1 Khai bo kiu structure ......................................................................................... 96
10.2.1.2 Cch khai bo bin c kiu structure ................................................................... 96
10.2.1.3 Tham chiu cc phn t trong structure.............................................................. 96
10.2.1.4 Khi to structure .................................................................................................. 98
10.2.1.5 Structure lng nhau................................................................................................ 99
10.2.1.6 Truyn structure sang hm ................................................................................. 100
10.2.2 Enum ............................................................................................................................. 102
10.2.2.1 nh ngha kiu enum .......................................................................................... 102
10.2.2.2 Cch khai bo bin c kiu enum ....................................................................... 102
10.2.2.3 S dng enum trong chng trnh .....................................................................103

10.3 Bi tp............................................................................................................................... 104

BI 11 : TP TIN .................................................................................................106

11.1 Mc tiu ............................................................................................................................ 106

11.2 Ni dung............................................................................................................................ 106


11.2.1 V d ghi, c s nguyn.............................................................................................. 106
11.2.2 Ghi, c mng .............................................................................................................. 107
11.2.3 Ghi, c structure ........................................................................................................ 108
11.2.4 Cc mode khc m tp tin ..................................................................................... 109
11.2.5 Mt s hm thao tc trn file khc............................................................................. 109

11.3 Bi tp............................................................................................................................... 109

BI 12 : QUY .................................................................................................110

12.1 Mc tiu ............................................................................................................................ 110

12.2 Ni dung............................................................................................................................ 110

12.3 Bi tp............................................................................................................................... 113

BI 13 : TRNH SON THO CA BORLAND C..............................................114

13.1 M tp tin son tho mi................................................................................................ 114

13.2 Lu tp tin........................................................................................................................ 114


13.2.1 Nu l tp tin son tho mi cha lu ....................................................................... 114
13.2.2 Nu l tp tin lu t nht 1 ln hoc c m bng lnh Open:........................ 114

13.3 M tp tin ......................................................................................................................... 115

13.4 Cc phm, t hp phm thng dng............................................................................. 115


13.4.1 Cc phm di chuyn con tr ........................................................................................ 115

Trng TH GII TIN HC 39 Nguyn Sn H, P5, Q3 T: 8.344.480 Website: www.infoworldschool.com


Gio trnh Lp trnh C cn bn Trang 5
13.4.2 Cc phm thao tc trn khi........................................................................................ 116
13.4.3 Cc thao tc xa ........................................................................................................... 116
13.4.4 Cc thao tc copy, di chuyn....................................................................................... 116
13.4.5 Cc thao tc khc......................................................................................................... 116

13.5 Ghi mt khi ra a ......................................................................................................... 117

13.6 Chn ni dung file t a vo v tr con tr ................................................................... 117

13.7 Tm kim vn bn trong ni dung son tho ................................................................ 117

13.8 Tm v thay th vn bn trong ni dung son tho...................................................... 117

13.9 Sa li c php................................................................................................................. 118

13.10 Chy tng bc ............................................................................................................... 118

13.11 S dng Help (Gip ).................................................................................................. 118

BI 14 : CC H M ........................................................................................120

14.1 Khi nim ......................................................................................................................... 120

14.2 Quy tc.............................................................................................................................. 120

14.3 Chuyn i gia cc h ................................................................................................... 121


14.3.1 Chuyn i gia h 2 v h 10 .................................................................................... 121
14.3.2 Chuyn i gia h 8 v h 10 .................................................................................... 122
14.3.3 Chuyn i gia h 16 v h 10 .................................................................................. 122
14.3.4 Chuyn i gia h 2 v h 16 .................................................................................... 123

BI 15 : BIU THC V PHP TON ...............................................................124

15.1 Biu thc........................................................................................................................... 124

15.2 Php ton .......................................................................................................................... 124


15.2.1 Php ton s hc........................................................................................................... 124
15.2.2 Php quan h ................................................................................................................ 124
15.2.3 Php ton lun l.......................................................................................................... 125
15.2.4 Php ton trn bit (bitwise)......................................................................................... 125
15.2.5 Cc php ton khc...................................................................................................... 126
15.2.6 u tin ca cc php ton...................................................................................... 126

15.3 Bi tp............................................................................................................................... 126

BI 16 : MT S HM CHUN THNG DNG.............................................128

16.1 Cc hm chuyn i d liu ........................................................................................... 128


16.1.1 atof................................................................................................................................. 128
16.1.2 atoi ................................................................................................................................. 128
16.1.3 itoa ................................................................................................................................. 128
16.1.4 tolower........................................................................................................................... 128

Trng TH GII TIN HC 39 Nguyn Sn H, P5, Q3 T: 8.344.480 Website: www.infoworldschool.com


Gio trnh Lp trnh C cn bn Trang 6
16.1.5 toupper .......................................................................................................................... 128

16.2 Cc hm x l chui k t .............................................................................................. 129


16.2.1 strcat.............................................................................................................................. 129
16.2.2 strcpy............................................................................................................................. 129
16.2.3 strcmp............................................................................................................................ 129
16.2.4 strcmpi .......................................................................................................................... 129
16.2.5 strlwr ............................................................................................................................. 129
16.2.6 strupr............................................................................................................................. 129
16.2.7 strlen.............................................................................................................................. 130

16.3 Cc hm ton hc ............................................................................................................ 130


16.3.1 abs.................................................................................................................................. 130
16.3.2 labs................................................................................................................................. 130
16.3.3 rand ............................................................................................................................... 130
16.3.4 random .......................................................................................................................... 130
16.3.5 pow ................................................................................................................................ 130
16.3.6 sqrt................................................................................................................................. 130

16.4 Cc hm x l file ............................................................................................................ 131


16.4.1 rewind............................................................................................................................ 131
16.4.2 ftell................................................................................................................................. 131
16.4.3 fseek............................................................................................................................... 131

Trng TH GII TIN HC 39 Nguyn Sn H, P5, Q3 T: 8.344.480 Website: www.infoworldschool.com


Gio trnh Lp trnh C cn bn Trang 7

Bi 1 :
NGN NG LP TRNH & PHNG PHP LP TRNH

1.1 Mc tiu
Sau khi hon tt bi ny hc vin s hiu v vn dng cc kin thc k nng c bn sau:
- ngha, cc bc lp trnh.
- Xc nh d liu vo, ra.
- Phn tch cc bi ton n gin.
- Khi nim so snh, lp.
- Th hin bi ton bng lu .
1.2 L thuyt

1.2.1 Ngn ng lp trnh (Programming Language)


Phn ny chng ta s tm hiu mt s khi nim cn bn v thut ton, chng trnh, ngn
ng lp trnh. Thut ng "thut gii" v "thut ton" d nhin c s khc nhau song trong nhiu
trng hp chng c cng ngha.
1.2.1.1 Thut gii (Algorithm)
L mt dy cc thao tc xc nh trn mt i tng, sao cho sau khi thc hin mt s
hu hn cc bc th t c mc tiu. Theo R.A.Kowalski th bn cht ca thut gii:
Thut gii = Logic + iu khin
* Logic: y l phn kh quan trng, n tr li cu hi "Thut gii lm g, gii quyt vn
g?", nhng yu t trong bi ton c quan h vi nhau nh th no v.v y bao gm
nhng kin thc chuyn mn m bn phi bit c th tin hnh gii bi ton.
V d 1: gii mt bi ton tnh din tch hnh cu, m bn khng cn nh cng thc
tnh hnh cu th bn khng th vit chng trnh cho my gii bi ton ny c.
* iu khin: Thnh phn ny tr li cu hi: gii thut phi lm nh th no?. Chnh l
cch thc tin hnh p dng thnh phn logic gii quyt vn .
1.2.1.2 Chng trnh (Program)
L mt tp hp cc m t, cc pht biu, nm trong mt h thng qui c v ngha v
th t thc hin, nhm iu khin my tnh lm vic. Theo Niklaus Wirth th:
Chng trnh = Thut ton + Cu trc d liu
Cc thut ton v chng trnh u c cu trc da trn 3 cu trc iu khin c bn:
* Tun t (Sequential): Cc bc thc hin tun t mt cch chnh xc t trn xung,
mi bc ch thc hin ng mt ln.
* Chn lc (Selection): Chn 1 trong 2 hay nhiu thao tc thc hin.
* Lp li (Repetition): Mt hay nhiu bc c thc hin lp li mt s ln.
Mun tr thnh lp trnh vin chuyn nghip bn hy lm ng trnh t c thi quen tt
v thun li sau ny trn nhiu mt ca mt ngi lm my tnh. Bn hy lm theo cc bc sau:
Tm, xy dng thut gii (trn giy) vit chng trnh trn my
dch chng trnh chy v th chng trnh

Trng TH GII TIN HC 39 Nguyn Sn H, P5, Q3 T: 8.344.480 Website: www.infoworldschool.com


Gio trnh Lp trnh C cn bn Trang 8
1.2.1.3 Ngn ng lp trnh (Programming language)
Ngn ng lp trnh l h thng cc k hiu tun theo cc qui c v ng php v ng
ngha, dng xy dng thnh cc chng trnh cho my tnh.
Mt chng trnh c vit bng mt ngn ng lp trnh c th (v d Pascal, C) gi l
chng trnh ngun, chng trnh dch lm nhim v dch chng trnh ngun thnh chng
trnh thc thi c trn my tnh.
1.2.2 Cc bc lp trnh
Bc 1: Phn tch vn v xc nh cc c im. (xc nh I-P-O)
Bc 2: Lp ra gii php. (a ra thut gii)
Bc 3: Ci t. (vit chng trnh)
Bc 4: Chy th chng trnh. (dch chng trnh)
Bc 5: Kim chng v hon thin chng trnh. (th nghim bng nhiu s liu v nh gi)
1.2.3 K thut lp trnh

1.2.3.1 I-P-O Cycle (Input-Pprocess-Output Cycle) (Quy trnh nhp-x l-xut)


Quy trnh x l c bn ca my tnh gm I-P-O.
Input Output
Process

V d 2: Xc nh Input, Process, Output ca vic lm 1 ly nc chanh nng


Input : ly, ng, chanh, nc nng, mung.
Process : - cho hn hp ng, chanh, nc nng vo ly.
- dng mung khuy u.
Output : ly chanh nng sn sng dng.
V d 3: Xc nh Input, Process, Output ca chng trnh tnh tin lng cng nhn
thng 10/2002 bit rng lng = lng cn bn * ngy cng
Input : lng cn bn, ngy cng
Process : nhn lng cn bn vi ngy cng
Output : lng
V d 4: Xc nh Input, Process, Output ca chng trnh gii phng trnh bc nht
ax + b = 0
Input : h s a, b
Process : chia b cho a
Output : nghim x
V d 5: Xc nh Input, Process, Output ca chng trnh tm s ln nht ca 2 s a v b.
Input : a, b
Process : Nu a > b th Output = a ln nht
Ngc li Output = b ln nht
# Bi tp
Xc nh Input, Process, Output ca cc chng trnh sau:
1. i t tin VND sang tin USD.
2. Tnh im trung bnh ca hc sinh gm cc mn Ton, L, Ha.
3. Gii phng trnh bc 2: ax2 + bx + c = 0
4. i t sang radian v i t radian sang
(cng thc / = a/180, vi : radian, a: )
5. Kim tra 2 s a, b ging nhau hay khc nhau.

Trng TH GII TIN HC 39 Nguyn Sn H, P5, Q3 T: 8.344.480 Website: www.infoworldschool.com


Gio trnh Lp trnh C cn bn Trang 9
1.2.3.2 S dng lu (Flowchart)
d hn v quy trnh x l, cc nh lp trnh a ra dng lu minh ha tng
bc qu trnh x l mt vn (bi ton).

Hnh dng (symbol) Hnh ng (Activity)

D liu vo (Input)

X l (Process)

D liu ra (Output)

Quyt nh (Decision), s dng iu kin

Lung x l (Flow lines)

Gi CT con, hm (Procedure, Function)

Bt u, kt thc (Begin, End)

im ghp ni (Connector)

V d 6: Chun b c ph V d 7: M t v d 3 V d 8: M t v d 4

Bt u Bt u Bt u

C ph, nc si LCB, ngy cng Gi tr a, b

Ha c ph vo nc si Nhn LCB vi ngy cng Chia b cho a

B ng vo Kt qu lng Nghim x

Khuy u hn hp Kt thc Kt thc

C ph sn sng

Kt thc

Trng TH GII TIN HC 39 Nguyn Sn H, P5, Q3 T: 8.344.480 Website: www.infoworldschool.com


Gio trnh Lp trnh C cn bn Trang 10
V d 9: Cng 2 s V d 10: so snh 2 s
Bt u Bt u

a, b S a, S b

c=a+b
S a c bng Khng
S b khng?
c
C
Kt thc S a bng S b S a khng bng S b
V d 11: Kim tra tnh hp l ca im
Bt u Kt thc

V d 12: Xp lon vo thng


im
Bt u

im >=0 v Khng Thng = 0 Lon


im <=10 ?

C 1 Lon

im hp l im khng hp l
Thm 1 Lon vo thng

Kt thc
Cha
Thng = 24 Lon?
V d 13: Kim tra loi s
Bng
Bt u
Kt thc
S
V d 14: Kim tra tnh hp l ca im
C Bt u
S > 0 ? S dng
Khng
im
C
S < 0 ? S m
Khng Sai im >=0 v
im <=10 ?
S khng
ng
Kt thc Kt thc
Trng TH GII TIN HC 39 Nguyn Sn H, P5, Q3 T: 8.344.480 Website: www.infoworldschool.com
Gio trnh Lp trnh C cn bn Trang 11

# Bi tp
V lu cho cc chng trnh sau:
1. i t tin VND sang tin USD.
2. Tnh im trung bnh ca hc sinh gm cc mn Ton, L, Ha.
3. Gii phng trnh bc 2: ax2 + bx + c = 0
4. i t sang radian v i t radian sang
(cng thc / = a/180, vi : radian, a: )
5. Kim tra 2 s a, b ging nhau hay khc nhau.

Trng TH GII TIN HC 39 Nguyn Sn H, P5, Q3 T: 8.344.480 Website: www.infoworldschool.com


Gio trnh Lp trnh C cn bn Trang 12

Bi 2 :
LM QUEN LP TRNH C QUA CC V D N GIN

2.1 Mc tiu
Sau khi hon tt bi ny hc vin s hiu v vn dng cc kin thc k nng c bn sau:
- Ngn ng C.
- Mt s thao tc c bn ca trnh son tho C.
- Cch lp trnh trn C.
- Tip cn mt s lnh n gin thng qua cc v d.
- Nm bt c mt s k nng n gin.
2.2 Ni dung

2.2.1 Khi ng v thot BorlandC

2.2.1.1 Khi ng
Nhp lnh ti du nhc DOS: g BC (Enter) (nu ng dn c ci t bng lnh
path trong c cha ng dn n th mc cha tp tin BC.EXE). Nu ng dn cha c
ci t ta tm xem th mc BORLANDC nm a no. Sau ta g lnh sau:
< a>:\BORLANDC\BIN\BC (Enter)
Nu bn mun va khi ng BC va son tho chng trnh vi mt tp tin c tn do
chng ta t, th g lnh: BC [ng dn]<tn file cn son tho>, nu tn file cn son tho
c th c np ln, nu cha c s c to mi.
Khi ng ti Windows: Bn vo menu Start, chn Run, bn g vo hp Open 1 trong
cc dng lnh nh nhp ti DOS. Hoc bn vo Window Explorer, chn a cha th mc
BORLANDC, vo th mc BORLANDC, vo th mc BIN, khi ng tp tin BC.EXE.
V d: Bn g D:\BORLANDC\BIN\BC E:\BAITAP_BC\VIDU1.CPP
Cu lnh trn c ngha khi ng BC v np tp tin VIDU1.CPP cha trong th mc
BAITAP_BC trong a E. Nu tp tin ny khng c s c to mi.
Mn hnh sau khi khi ng thnh cng

File Edit Search Run Compile Debug Project Option Window Help
[] NONAME00.CPP 1 []
Thanh Menu
Hp ng Tn tp tin S ca ca s
Hp ni rng ca s

y l vng son tho chng trnh

Tp tin cha lu Thanh trt dc


Ta hng:ct Thanh trt ngang
Thanh chc nng

* 1:1
F1 Help F2 Save F3 Open Alt - F9 Compile F9 Make F10 Menu

Trng TH GII TIN HC 39 Nguyn Sn H, P5, Q3 T: 8.344.480 Website: www.infoworldschool.com


Gio trnh Lp trnh C cn bn Trang 13
2.2.1.2 Thot
n phm F10 (kch hot Menu), chn menu File, chn Quit;
Hoc n t hp phm Alt X.
2.2.2 Cc v d n gin

2.2.2.1 V d 1
Dng File Edit Search Run Compile Debug Project Option Window Help
1 /* Chuong trinh in ra cau bai hoc C dau tien */
2 #include <stdio.h>
3
4 void main(void)
5 {
6 printf("Bai hoc C dau tien.");
7 }
F1 Help Alt-F8 Next Msg Alt-F7 Prev Msg Alt - F9 Compile F9 Make F10 Menu
) Kt qu in ra mn hnh
Bai hoc C dau tien. _

Dng th 1: bt u bng /* v kt thc bng */ cho bit hng ny l hng din gii (ch
thch). Khi dch v chy chng trnh, dng ny khng c dch v cng khng thi hnh lnh g c.
Mc ch ca vic ghi ch ny gip chng trnh r rng hn. Sau ny bn c li chng trnh bit
chng trnh lm g.
Dng th 2: cha pht biu tin x l #include <stdio.h>. V trong chng trnh ny ta
s dng hm th vin ca C l printf, do bn cn phi c khai bo ca hm th vin ny
bo cho trnh bin dch C bit. Nu khng khai bo chng trnh s bo li.
Dng th 3: hng trng vit ra vi lm cho bng chng trnh thong, d c.
Dng th 4: void main(void) l thnh phn chnh ca mi chng trnh C (bn c th vit
main() hoc void main() hoc main(void)). Tuy nhin, bn nn vit theo dng void main(void)
chng trnh r rng hn. Mi chng trnh C u bt u thi hnh t hm main. Cp du ngoc ()
cho bit y l khi hm (function). Hm void main(void) c t kha void u tin cho bit hm
ny khng tr v gi tr, t kha void trong ngoc n cho bit hm ny khng nhn vo i s.
Dng th 5 v 7: cp du ngoc mc {} gii hn thn ca hm. Thn hm bt u bng
du { v kt thc bng du }.
Dng th 6: printf("Bai hoc C dau tien.");, ch th cho my in ra chui k t nm trong
nhy kp (""). Hng ny c gi l mt cu lnh, kt thc mt cu lnh trong C phi l du
chm phy (;).

/ Ch :
9 Cc t include, stdio.h, void, main, printf phi vit bng ch thng.
9 Chui trong nhy kp cn in ra "Bn c th vit ch HOA, thng ty, ".
9 Kt thc cu lnh phi c du chm phy.
9 Kt thc tn hm khng c du chm phy hoc bt c du g.
9 Ghi ch phi t trong cp /* . */.
9 Thn hm phi c bao bi cp { }.
9 Cc cu lnh trong thn hm phi vit tht vo.

Trng TH GII TIN HC 39 Nguyn Sn H, P5, Q3 T: 8.344.480 Website: www.infoworldschool.com


Gio trnh Lp trnh C cn bn Trang 14

 Bn nhp on chng trnh trn vo my. Dch, chy v quan st kt qu.


Ctrl F9: Dch v chy chng trnh. Alt F5: Xem mn hnh kt qu.
 Sau khi bn nhp xong on chng trnh vo my. Bn n v gi phm Ctrl, g F9
dch v chy chng trnh. Khi bn thy chng trnh chp rt nhanh v khng thy kt qu g
c. Bn n v gi phm Alt, g F5 xem kt qu, khi xem xong, bn n phm bt k quay v
mn hnh son tho chng trnh.
 By gi bn sa li dng th 6 bng cu lnh printf("Bai hoc C dau tien.\n");, sau
dch v chy li chng trnh, quan st kt qu.
) Kt qu in ra mn hnh
Bai hoc C dau tien.
_
dng bn va sa c thm \n, \n l k hiu xung dng s dng trong lnh printf. Sau y
l mt s k hiu khc.

+ Cc k t iu khin:
\n : Nhy xung dng k tip canh v ct u tin.
\t : Canh ct tab ngang.
\r : Nhy v u hng, khng xung hng.
\a : Ting ku bip.
+ Cc k t c bit:
\\ : In ra du \
\" : In ra du "
\' : In ra du '
 By gi bn sa li dng th 6 bng cu lnh printf("\tBai hoc C dau tien.\a\n");, sau
dch v chy li chng trnh, quan st kt qu.
) Kt qu in ra mn hnh
Bai hoc C dau tien.
_
Khi chy chng trnh bn nghe ting bip pht ra t loa.
 Mi khi chy chng trnh bn thy rt bt tin trong vic xem kt qu phi n t hp
phm Alt F5. khc phc tnh trng ny bn sa li chng trnh nh sau:
Dng File Edit Search Run Compile Debug Project Option Window Help
1 /* Chuong trinh in ra cau bai hoc C dau tien */
2 #include <stdio.h>
3 #include <conio.h>
4
5 void main(void)
6 {
7 printf("\t\tBai hoc C \rdau tien.\n");
8 getch();
9 }
F1 Help Alt-F8 Next Msg Alt-F7 Prev Msg Alt - F9 Compile F9 Make F10 Menu

Trng TH GII TIN HC 39 Nguyn Sn H, P5, Q3 T: 8.344.480 Website: www.infoworldschool.com


Gio trnh Lp trnh C cn bn Trang 15

) Kt qu in ra mn hnh
dau tien. Bai hoc C
_
Dng th 3: cha pht biu tin x l #include <conio.h>. V trong chng trnh ny ta
s dng hm th vin ca C l getch, do bn cn phi c khai bo ca hm th vin ny
bo cho trnh bin dch C bit. Nu khng khai bo chng trnh s bo li.
Dng th 8: getch();, ch nhn 1 k t bt k t bn phm, nhng khng in ra mn hnh.
V th ta s dng hm ny khi chy chng trnh xong s dng li mn hnh kt qu, sau
ta n phm bt k s quay li mn hnh son tho.

 Bn nhp on chng trnh trn vo my. Dch, chy v quan st kt qu.


2.2.2.2 V d 2
Dng File Edit Search Run Compile Debug Project Option Window Help
1 /* Chuong trinh nhap va in ra man hinh gia tri bien*/
2 #include <stdio.h>
3 #include <conio.h>
4
5 void main(void)
6 {
7 int i;
8 printf("Nhap vao mot so: ");
9 scanf("%d", &i);
10 printf("So ban vua nhap la: %d.\n", i);
11 getch();
12 }
F1 Help Alt-F8 Next Msg Alt-F7 Prev Msg Alt - F9 Compile F9 Make F10 Menu
) Kt qu in ra mn hnh
Nhap vao mot so: 15
So ban vua nhap la: 15.
_
Dng th 7: int i; l lnh khai bo, mu t i gi l tn bin. Bin l mt v tr trong b
nh dng lu tr gi tr no m chng trnh s ly s dng. Mi bin phi thuc mt kiu
d liu. Trong trng hp ny ta s dng bin i kiu s nguyn (integer) vit tt l int.
Dng th 9: scanf("%d", &i). S dng hm scanf nhn t ngi s dng mt tr no
. Hm scanf trn c 2 i mc. i mc "%d" c gi l chui nh dng, cho bit loi d
kin m ngi s dng s nhp vo. Chng hn, y phi nhp vo l s nguyn. i mc th 2
&i c du & i u gi l address operator, du & phi hp vi tn bin cho hm scanf bin em
tr g t bn phm lu vo bin i.
Dng th 10: printf("So ban vua nhap la: %d.\n", i);. Hm ny c 2 i mc. i mc
th nht l mt chui nh dng c cha chui vn bn So ban vua nhap la: v %d (k hiu khai
bo chuyn i dng thc) cho bit s nguyn s c in ra. i mc th 2 l i cho bit gi tr ly
t bin i in ra mn hnh.

 Bn nhp on chng trnh trn vo my. Dch, chy v quan st kt qu.


Trng TH GII TIN HC 39 Nguyn Sn H, P5, Q3 T: 8.344.480 Website: www.infoworldschool.com
Gio trnh Lp trnh C cn bn Trang 16
2.2.2.3 V d 3
Dng File Edit Search Run Compile Debug Project Option Window Help
1 /* Chuong trinh nhap vao 2 so a, b in ra tong*/
2 #include <stdio.h>
3 #include <conio.h>
4
5 void main(void)
6 {
7 int a, b;
8 printf("Nhap vao so a: ");
9 scanf("%d", &a);
10 printf("Nhap vao so b: ");
11 scanf("%d", &b);
12 printf("Tong cua 2 so %d va %d la %d.\n", a, b, a+b);
13 getch();
14 }
F1 Help Alt-F8 Next Msg Alt-F7 Prev Msg Alt - F9 Compile F9 Make F10 Menu
) Kt qu in ra mn hnh
Nhap vao so a: 4
Nhap vao so b: 14
Tong cua 2 so 4 va 14 la 18.
_

Dng th 12: printf("Tong cua 2 so %d va %d la %d.\n", a, b, a+b);

 Bn nhp on chng trnh trn vo my. Dch, chy v quan st kt qu.


2.2.2.4 V d 4
Dng File Edit Search Run Compile Debug Project Option Window Help
1 /* Chuong trinh nhap vao ban kinh hinh tron. Tinh dien tich */
2 #include <stdio.h>
3 #include <conio.h>
4
5 #define PI 3.14
6
7 void main(void)
8 {
9 float fR;
10 printf("Nhap vao ban kinh hinh tron: ");
11 scanf("%f", &fR);
12 printf("Dien tich hinh tron: %.2f.\n", 2*PI*fR);
13 getch();
14 }
F1 Help Alt-F8 Next Msg Alt-F7 Prev Msg Alt - F9 Compile F9 Make F10 Menu

Trng TH GII TIN HC 39 Nguyn Sn H, P5, Q3 T: 8.344.480 Website: www.infoworldschool.com


Gio trnh Lp trnh C cn bn Trang 17

) Kt qu in ra mn hnh
Nhap vao ban kinh hinh tron: 1
Dien tich hinh tron: 6.28
_
Dng th 5: #define PI 3.14, dng ch th define nh ngha hng s PI c gi tr
3.14. Trc define phi c du # v cui dng khng c du chm phy.
Dng th 12: printf("Dien tich hinh tron: %.2f.\n", 2*PI*fR);. Hm ny c 2 i mc.
i mc th nht l mt chui nh dng c cha chui vn bn Dien tich hinh tron: v %.2f (k
hiu khai bo chuyn i dng thc) cho bit dng s chm ng s c in ra, trong .2 ngha
l in ra vi 2 s l. i mc th 2 l biu thc hng 2*PI*fR;
 Bn nhp on chng trnh trn vo my. Dch, chy v quan st kt qu.

Trng TH GII TIN HC 39 Nguyn Sn H, P5, Q3 T: 8.344.480 Website: www.infoworldschool.com


Gio trnh Lp trnh C cn bn Trang 18

Bi 3 :
CC THNH PHN TRONG NGN NG C

3.1 Mc tiu
Sau khi hon tt bi ny hc vin s hiu v vn dng cc kin thc k nng c bn sau:
- Khi nim t kha
- Cc kiu d liu
- Cch ghi ch
- t tn bin
- Khai bo bin.
- Phm vi s dng bin.
3.2 Ni dung

3.2.1 T kha

T kha l t c ngha xc nh dng khai bo d liu, vit cu lnh Trong C c cc


t kha sau:
asm const else for interrupt return sizeof void
break continue enum goto long short switch volatile
case default extern huge near static typedef while
cdecl do far if pascal struct union
char double float int register signed unsigned
) Cc t kha phi vit bng ch thng
3.2.2 Tn

Khi nim tn rt quan trng trong qu trnh lp trnh, n khng nhng th hin r ngha
trong chng trnh m cn dng xc nh cc i lng khc nhau khi thc hin chng trnh.
Tn thng c t cho hng, bin, mng, con tr, nhn Chiu di ti a ca tn l 32 k t.
Tn bin hp l l mt chui k t lin tc gm: K t ch, s v du gch di. K t u
ca tn phi l ch hoc du gch di. Khi t tn khng c t trng vi cc t kha.
V d 1 :
Cc tn ng: delta, a_1, Num_ODD, Case
Cc tn sai:
3a_1 (k t u l s)
num-odd (s dng du gch ngang)
int (t tn trng vi t kha)
del ta (c khong trng)
f(x) (c du ngoc trn)
Lu : Trong C, tn phn bit ch hoa, ch thng
V d 2 : number khc Number
case khc Case
(case l t kha, do bn t tn l Case vn ng)
3.2.3 Kiu d liu
C 4 kiu d liu c bn trong C l: char, int, float, double.

Trng TH GII TIN HC 39 Nguyn Sn H, P5, Q3 T: 8.344.480 Website: www.infoworldschool.com


Gio trnh Lp trnh C cn bn Trang 19
Kiu d liu Kch thc Min gi tr
TT
(Type) (Length) (Range)
1 unsigned char 1 byte 0 n 255
2 char 1 byte 128 n 127
3 enum 2 bytes 32,768 n 32,767
4 unsigned int 2 bytes 0 n 65,535
5 short int 2 bytes 32,768 n 32,767
6 int 2 bytes 32,768 n 32,767
7 unsigned long 4 bytes 0 n 4,294,967,295
8 long 4 bytes 2,147,483,648 n 2,147,483,647
9 float 4 bytes 3.4 * 1038 n 3.4 * 1038
10 double 8 bytes 1.7 * 10308 n 1.7 * 10308
11 long double 10 bytes 3.4 * 104932 n 1.1 * 104932
3.2.4 Ghi ch
Trong khi lp trnh cn phi ghi ch gii thch cc bin, hng, thao tc x l gip cho
chng trnh r rng d hiu, d nh, d sa cha v ngi khc c vo d hiu. Trong C c
cc ghi ch sau: // hoc /* ni dung ghi ch */
V d 3 :
void main()
{
int a, b; //khai bao bien t kieu int
a = 1; //gan 1 cho a
b =3; //gan 3 cho b
/* thuat toan tim so lon nhat la
neu a lon hon b thi a lon nhat
nguoc lai b lon nhat */
if (a > b) printf("max: %d", a);
else printf("max: %d", b);
}
Khi bin dch chng trnh, C gp cp du ghi ch s khng dch ra ngn ng my.
Tm li, i vi ghi ch dng // dng ghi ch mt hng v dng /* . */ c th ghi ch
mt hng hoc nhiu hng.
3.2.5 Khai bo bin

3.2.5.1 Tn bin
Cch t tn bin nh mc 2.
3.2.5.2 Khai bo bin
C php
Kiu d liu Danh sch tn bin;
) Kiu d liu: 1 trong cc kiu mc 3
Danh sch tn bin: gm cc tn bin c cng kiu d liu, mi tn bin cch nhau du
phy (,), cui cng l du chm phy (;).
) Khi khai bo bin nn t tn bin theo quy tc Hungarian Notation
V d 4 :
int ituoi; //khai bo bin ituoi c kiu int
float fTrongluong; //khai bo bin fTrongluong c kiu long
char ckitu1, ckitu2; //khai bo bin ckitu1, ckitu2 c kiu char

Trng TH GII TIN HC 39 Nguyn Sn H, P5, Q3 T: 8.344.480 Website: www.infoworldschool.com


Gio trnh Lp trnh C cn bn Trang 20
Cc bin khai bo trn theo quy tc Hungarian Notation. Ngha l bin ituoi l kiu int, bn
thm ch i (k t u ca kiu) vo u tn bin tuoi trong qu trnh lp trnh hoc sau ny
xem li, sa cha bn d dng nhn ra bin ituoi c kiu int m khng cn phi di chuyn n
phn khai bo mi bit ki.u ca bin ny. Tng t cho bin fTrongluong, bn nhn vo l bit
ngay bin ny c kiu float.
3.2.5.3 Va khai bo va khi gn

C th kt hp vic khai bo vi ton t gn bin nhn ngay gi tr cng lc vi khai bo.


V d 5 :
Khai bo trc, gn gi tr sau:
void main()
{
int a, b, c;
a = 1;
b = 2;
c = 5;

}

Va khai bo va gn gi tr:
void main()
{
int a = 1, b = 2, c = 5;

}
3.2.5.4 Phm vi ca bin
Khi lp trnh, bn phi nm r phm vi ca bin. Nu khai bo v s dng khng ng,
khng r rng s dn n sai st kh kim sot c, v vy bn cn phi xc nh ng v tr,
phm vi s dng bin trc khi s dng bin.
Khai bo bin ngoi (bin ton cc): V tr bin t bn ngoi tt c cc hm, cu trc...
Cc bin ny c nh hng n ton b chng trnh. Chu trnh sng ca n l bt u chy
chng trnh n lc kt thc chng trnh.
Khai bo bin trong (bin cc b): V tr bin t bn trong hm, cu trc. Ch nh
hng ni b bn trong hm, cu trc . Chu trnh sng ca n bt u t lc hm, cu trc
c gi thc hin n lc thc hin xong.

Trng TH GII TIN HC 39 Nguyn Sn H, P5, Q3 T: 8.344.480 Website: www.infoworldschool.com


Gio trnh Lp trnh C cn bn Trang 21

Bi 4 :
NHP / XUT D LIU

4.1 Mc tiu
Sau khi hon tt bi ny hc vin s hiu v vn dng cc kin thc k nng c bn sau:
- ngha, cch s dng hm printf, scanf
- S dng khun dng, k t c bit, k t iu khin trong printf, scanf.
4.2 Ni dung

4.2.1 Hm printf
Kt xut d liu c nh dng.
C php
printf ("chui nh dng"[, i mc 1, i mc 2,]);
) Khi s dng hm phi khai bo tin x l #include <stdio.h>
- printf: tn hm, phi vit bng ch thng.
- i mc 1,: l cc mc d kin cn in ra mn hnh. Cc i mc ny c th l bin,
hng hoc biu thc phi c nh tr trc khi in ra.
- chui nh dng: c t trong cp nhy kp (" "), gm 3 loi:
+ i vi chui k t ghi nh th no in ra ging nh vy.
+ i vi nhng k t chuyn i dng thc cho php kt xut gi tr ca cc i mc
ra mn hnh tm gi l m nh dng. Sau y l cc du m t nh dng:
%c : K t n
%s : Chui
%d : S nguyn thp phn c du
%f : S chm ng (k hiu thp phn)
%e : S chm ng (k hiu c s m)
%g : S chm ng (%f hay %g)
%x : S nguyn thp phn khng du
%u : S nguyn hex khng du
%o : S nguyn bt phn khng du
l : Tin t dng km vi %d, %u, %x, %o ch s nguyn di (v d %ld)
+ Cc k t iu khin v k t c bit
\n : Nhy xung dng k tip canh v ct u tin.
\t : Canh ct tab ngang.
\r : Nhy v u hng, khng xung hng.
\a : Ting ku bip.
\\ : In ra du \
\" : In ra du "
\' : In ra du '
%%: In ra du %
V d 1: printf("Bai hoc C dau tien. \n");
k t iu khin
chui k t

Trng TH GII TIN HC 39 Nguyn Sn H, P5, Q3 T: 8.344.480 Website: www.infoworldschool.com


Gio trnh Lp trnh C cn bn Trang 22

) Kt qu in ra mn hnh
Bai hoc C dau tien.
_

V d 2: printf("Ma dinh dang \\\" in ra dau \" . \n");


k t iu khin
k t c bit
chui k t
) Kt qu in ra mn hnh
Ma dinh dang \" in ra dau ".
_

V d 3: gi s bin i c gi tr = 5
xut gi tr bin i

printf("So ban vua nhap la: %d . \n", i);


i mc l bin (kiu int)
k t iu khin
chui k t
m nh dng (kiu int)
) Kt qu in ra mn hnh
So ban vua nhap la: 5.
_

V d 4: gi s bin a c gi tr = 7 v b c gi tr = 4
xut gi tr biu thc a+b
xut gi tr bin b
xut gi tr bin a
printf("Tong cua 2 so %d va %d la %d . \n", a, b, a+b);
i mc 3 l biu thc c
gi tr l kiu int
i mc 1, 2 l bin (kiu int)
k t iu khin
chui k t
m nh dng (kiu int)
) Kt qu in ra mn hnh
Tong cua 2 so 7 va 4 la 11.
_

V d 5: sa li v d 4

printf("Tong cua 2 so %5d va %3d la %1d . \n", a, b, a+b);


B rng trng

Trng TH GII TIN HC 39 Nguyn Sn H, P5, Q3 T: 8.344.480 Website: www.infoworldschool.com


Gio trnh Lp trnh C cn bn Trang 23

) Kt qu in ra mn hnh
Tong cua 2 so 7 va 4 la 11.
_
2 k t (mc d nh dng l 1)
3 k t
5 k t
V d 6: sa li v d 5

printf("Tong cua 2 so %-5d va %-3d la %-1d . \n", a, b, a+b);


) Kt qu in ra mn hnh
Tong cua 2 so 7 va 4 la 11.
_
2 k t (mc d nh dng l 1)
3 k t
5 k t
) Du tr trc b rng trng s ko kt qu sang tri
V d 7: sa li v d 4

printf("Tong cua 2 so %02d va %02d la %04d . \n", a, b, a+b);


) Kt qu in ra mn hnh
Tong cua 2 so 07 va 04 la 0011.
_
thm 2 s 0 trc -> 4 k t
thm 1 s 0 trc -> 2 k t
thm 1 s 0 trc -> 2 k t
V d 8: gi s int a = 6, b = 1234, c = 62

printf("%7d%7d%7d.\n", a, b, c);
printf("%7d%7d%7d.\n", 165, 2, 965);
) Kt qu in ra mn hnh
6 1234 62 S canh v bn phi b rng trng.
165 2 965
_

printf("%-7d%-7d%-7d.\n", a, b, c);
printf("%-7d%-7d%-7d.\n", 165, 2, 965);
) Kt qu in ra mn hnh
6 1234 62 S canh v bn tri b rng trng.
165 2 965
_

Trng TH GII TIN HC 39 Nguyn Sn H, P5, Q3 T: 8.344.480 Website: www.infoworldschool.com


Gio trnh Lp trnh C cn bn Trang 24
V d 9: gi s float a = 6.4, b = 1234.56, c = 62.3

printf("%7.2d%7.2d%7.2d.\n", a, b, c);
s s l

) Kt qu in ra mn hnh
6.40 1234.56 62.30 S canh v bn phi b rng trng.
_

7 k t
) B rng trng bao gm: phn nguyn, phn l v du chm ng
V d 10: gi s float a = 6.4, b = 1234.55, c = 62.34

printf("%10.1d%10.1d%10.1d.\n", a, b, c);
printf("%10.1d%10.1d%10.1d.\n", 165, 2, 965);
) Kt qu in ra mn hnh
6.4 1234.6 62.3 S canh v bn phi b rng trng.
165.0 2.0 965.0
_

printf("%-10.2d%-10.2d%-10.2d.\n", a, b, c);
printf("%-10.2d%-10.2d%-10.2d.\n", 165, 2, 965);
) Kt qu in ra mn hnh
6.40 1234.55 62.34 S canh v bn tri b rng trng.
165.00 2.00 965.00
_

4.2.2 Hm scanf
nh dng khi nhp liu.
C php
scanf ("chui nh dng"[, i mc 1, i mc 2,]);
) Khi s dng hm phi khai bo tin x l #include <stdio.h>
- scanf: tn hm, phi vit bng ch thng.
- khung nh dng: c t trong cp nhy kp (" ") l hnh nh dng d liu nhp vo.
- i mc 1,: l danh sch cc i mc cch nhau bi du phy, mi i mc s tip
nhn gi tr nhp vo.

V d 11: scanf("%d", &i);


i mc 1
m nh dng
) Nhp vo 12abc, bin i ch nhn gi tr 12. Nhp 3.4 ch nhn gi tr 3.

Trng TH GII TIN HC 39 Nguyn Sn H, P5, Q3 T: 8.344.480 Website: www.infoworldschool.com


Gio trnh Lp trnh C cn bn Trang 25
V d 12: scanf("%d%d", &a, &b);
) Nhp vo 2 s a, b phi cch nhau bng khong trng hoc enter.
V d 13: scanf("%d/%d/%d", &ngay, &thang, &nam);
) Nhp vo ngy, thng, nm theo dng ngay/thang/nam (20/12/2002)
V d 14: scanf("%d%*c%d%*c%d", &ngay, &thang, &nam);
) Nhp vo ngy, thng, nm vi du phn cch /, -,; ngoi tr s.
V d 15: scanf("%2d%2d%4d", &ngay, &thang, &nam);
) Nhp vo ngy, thng, nm theo dng dd/mm/yyyy.
4.3 Bi tp

1. Vit chng trnh i mt s nguyn h 10 sang h 2.


2. Vit chng trnh i mt s nguyn h 10 sang h 16.
3. Vit chng trnh c v 2 s nguyn v in ra kt qu ca php (+), php tr (-), php
nhn (*), php chia (/). Nhn xt kt qu chia 2 s nguyn.
4. Vit chng trnh nhp vo bn knh hnh cu, tnh v in ra din tch, th tch ca
hnh cu .
Hng dn: S = 4R2 v V = (4/3)R3.
5. Vit chng trnh nhp vo mt s a bt k v in ra gi tr bnh phng (a2), lp
phng (a3) ca a v gi tr a4.
6. Vit chng trnh c t bn phm 3 s nguyn biu din ngy, thng, nm v xut
ra mn hnh di dng "ngay/thang/nam" (ch ly 2 s cui ca nm).
7. Vit chng trnh nhp vo s giy t 0 n 86399, i s giy nhp vo thnh dng
"gio:phut:giay", mi thnh phn l mt s nguyn c 2 ch s.
V d: 02:11:05

Trng TH GII TIN HC 39 Nguyn Sn H, P5, Q3 T: 8.344.480 Website: www.infoworldschool.com


Gio trnh Lp trnh C cn bn Trang 26

Bi 5 :
CU TRC R NHNH C IU KIN
(Cu trc chn)
5.1 Mc tiu
Sau khi hon tt bi ny hc vin s hiu v vn dng cc kin thc k nng c bn sau:
- ngha lnh, khi lnh.
- C php, ngha, cch s dng lnh if, lnh switch.
- Mt s bi ton s dng lnh if, switch thng qua cc v d.
- So snh, nh gi mt s bi ton s dng lnh if hoc switch.
- Cch s dng cc cu trc lng nhau.
5.2 Ni dung

5.2.1 Lnh v khi lnh

5.2.1.1 Lnh
L mt tc v, biu thc, hm, cu trc iu khin
V d 1:
x = x + 2;
printf("Day la mot lenh\n");
5.2.1.2 Khi lnh
L mt dy cc cu lnh c bc bi cp du { }, cc lnh trong khi lnh phi vit tht
v 1 tab so vi cp du { }
V d 2:
{ //dau khoi
a = 5;
b = 6; vit tht v 1 tab so vi cp { }
printf("Tong %d + %d = %d", a, b, a+b);
} //cuoi khoi
) Qun dng cp du { } bao bc khi s dng khi lnh, hoc m du { v qun ng
du }
5.2.2 Lnh if
Cu lnh if cho php la chn mt trong hai nhnh ty thuc vo gi tr ca biu thc lun
l l ng (true) hay sai (false) hoc khc khng hay bng khng.
5.2.2.1 Dng 1 (if thiu)

Quyt nh s thc hin hay khng mt khi lnh.


C php lnh

if (biu thc lun l) ) t kha if phi vit bng ch thng


khi lnh; ) kt qu ca biu thc lun l phi l
ng ( 0) hoc sai (= 0)

Trng TH GII TIN HC 39 Nguyn Sn H, P5, Q3 T: 8.344.480 Website: www.infoworldschool.com


Gio trnh Lp trnh C cn bn Trang 27
Lu Vo

) nu biu thc lun l ng th


Sai thc hin khi lnh v thot khi if,
bthc lun l
ngc li
ng khng lm g c v thot khi if.
khi lnh

Ra

# Nu khi lnh bao gm t 2 lnh tr ln th phi t trong du { }


Din gii:
+ Khi lnh l mt lnh ta vit lnh if nh sau:
if (biu thc lun l)
lnh;
+ Khi lnh bao gm nhiu lnh: lnh 1, lnh 2..., ta vit lnh if nh sau:
if (biu thc lun l)
{
lnh 1;
lnh 2;
...
}
) Khng t du chm phy sau cu lnh if.
V d: if(biu thc lun l);
trnh bin dch khng bo li nhng khi lnh khng c thc hin cho d
iu kin ng hay sai.
V d 3: Vit chng trnh nhp vo 2 s nguyn a, b. Tm v in ra s ln nht.
a. Phc ha li gii
Trc tin ta cho gi tr a l gi tr ln nht bng cch gn a cho max (max l bin
c khai bo cng kiu d liu vi a, b). Sau so snh b vi a, nu b ln hn a ta gn b cho
max v cui cng ta c kt qu max l gi tr ln nht.
b. M t quy trnh x l (gii thut)
Ngn ng t nhin Ngn ng C
- Khai bo 3 bin a, b, max kiu s nguyn - int ia, ib, imax;
- Nhp vo gi tr a - printf("Nhap vao so a: ");
scanf("%d", &ia);
- Nhp vo gi tr b - printf("Nhap vao so b: ");
scanf("%d", &ib);
- Gn a cho max - imax = ia;
- Nu b > a th - if (ib > ia)
gn b cho max imax = ib;
- In ra kt qu max - printf("So lon nhat = %d.\n", imax);
) Biu thc lun l phi t trong cp du ( ). if ib > ia bo li
Trng TH GII TIN HC 39 Nguyn Sn H, P5, Q3 T: 8.344.480 Website: www.infoworldschool.com
Gio trnh Lp trnh C cn bn Trang 28
c. M t bng lu
Bt u

Nhp a, b

max = a

Sai
b>a
ng
max = b

So lon nhat = max

Kt thc
d. Vit chng trnh
File Edit Search Run Compile Debug Project Option Window Help
/* Chuong trinh tim so lon nhat tu 2 so nguyen a, b */
#include <stdio.h>
#include <conio.h>
void main(void)
{
int ia, ib, imax;
printf("Nhap vao so a: ");
scanf("%d", &ia);
printf("Nhap vao so b: ");
scanf("%d", &ib);
imax = ia;
if (ib>ia)
imax = ib;
printf("So lon nhat = %d.\n", imax);
getch();
}
F1 Help Alt-F8 Next Msg Alt-F7 Prev Msg Alt - F9 Compile F9 Make F10 Menu
) Kt qu in ra mn hnh
Nhap vao so a : 10 Cho chy li chng trnh v th li vi:
Nhap vao so b : 8 a = 7, b = 9
So lon nhat = 10. a = 5, b = 5
_ Quan st v nhn xt kt qu
V d 4: Vit chng trnh nhp vo 2 s nguyn a, b. Nu a ln hn b th hon i gi tr a
v b, ngc li khng hon i. In ra gi tr a, b.
a. Phc ha li gii
Nu gi tr a ln hn gi tr b, bn phi hon chuyn 2 gi tr ny cho nhau (ngha l a s
mang gi tr b v b mang gi tr a) bng cch em gi tr a gi (gn) cho bin tam (bin tam

Trng TH GII TIN HC 39 Nguyn Sn H, P5, Q3 T: 8.344.480 Website: www.infoworldschool.com


Gio trnh Lp trnh C cn bn Trang 29
c khai bo theo kiu d liu ca a, b), k n bn gn gi tr b cho a v cui cng bn gn
gi tr tam cho b, ri in ra a, b.
b. M t quy trnh thc hin (gii thut)
Ngn ng t nhin Ngn ng C
- Khai bo 3 bin a, b, tam kiu s nguyn - int ia, ib, itam;
- Nhp vo gi tr a - printf("Nhap vao so a: ");
scanf("%d", &ia);
- Nhp vo gi tr b - printf("Nhap vao so b: ");
scanf("%d", &ib);
- Nu a > b th - if (ia > ib)
tam = a; {
a = b; itam = ia;
b = tam; ia = ib;
ib = itam;
}
- In ra a, b - printf("%d, %d\n", ia, ib);

c. M t bng lu
Bt u

Nhp a, b

Sai
a>b
ng
tam = a
a=b
b = tam

In a, b

Kt thc

d. Vit chng trnh


File Edit Search Run Compile Debug Project Option Window Help
/* Chuong trinh hoan vi 2 so a, b neu a > b */

#include <stdio.h>
#include <conio.h>

void main(void)
{
int ia, ib, itam;
printf("Nhap vao so a: ");
scanf("%d", &ia);
printf("Nhap vao so b: ");
scanf("%d", &ib);

Trng TH GII TIN HC 39 Nguyn Sn H, P5, Q3 T: 8.344.480 Website: www.infoworldschool.com


Gio trnh Lp trnh C cn bn Trang 30
if (ia>ib)
{
itam = ia; //hoan vi a va b
ia = ib;
ib = itam;
}
printf("%d, %d.\n", ia, ib);
getch();
}
F1 Help Alt-F8 Next Msg Alt-F7 Prev Msg Alt - F9 Compile F9 Make F10 Menu
) Kt qu in ra mn hnh
Nhap vao so a : 10 Cho chy li chng trnh v th li vi:
Nhap vao so b : 8 a = 1, b = 8
8, 10 a = 2, b = 2
_ Quan st v nhn kt qu
5.2.2.2 Dng 2 (if )
Quyt nh s thc hin 1 trong 2 khi lnh cho trc.
C php lnh

if (biu thc lun l) ) t kha if, else phi vit bng ch thng
khi lnh 1; ) kt qu ca biu thc lun l phi l
else ng ( 0) hoc sai (= 0)
khi lnh 2;

Lu
Vo
) nu biu thc lun l ng th
thc hin khi lnh 1 v thot khi if
Sai
bthc lun l ngc li
thc hin khi lnh 2 v thot khi if.
ng
khi lnh 1 khi lnh 2
# Nu khi lnh 1, khi lnh 2 bao gm t 2
lnh tr ln th phi t trong du { }
Ra

V d 5: Vit chng trnh nhp vo 2 s nguyn a, b. In ra thng bo "a bng b" nu a = b,


ngc li in ra thng bo "a khc b".
a. Phc ha li gii
So snh a vi b, nu a bng b th in ra cu thng bo "a bng b", ngc li in ra thng bo
"a khc b".
b. M t quy trnh x l (gii thut)
Ngn ng t nhin Ngn ng C
- Khai bo 2 bin a, b kiu s nguyn - int ia, ib;
- Nhp vo gi tr a - printf("Nhap vao so a: ");
scanf("%d", &ia);
- Nhp vo gi tr b - printf("Nhap vao so b: ");

Trng TH GII TIN HC 39 Nguyn Sn H, P5, Q3 T: 8.344.480 Website: www.infoworldschool.com


Gio trnh Lp trnh C cn bn Trang 31
scanf("%d", &ib);
- Nu a = b th - if (ia == ib)
in ra thng bo "a bng b" printf("a bang b\n");
Ngc li (cn khng th) else
in ra thng bo "a khc b" printf("a khac b\n");

c. M t bng lu
Bt u

Nhp a, b

Sai
a= b
ng

a bang b a khac b

Kt thc
d. Vit chng trnh
File Edit Search Run Compile Debug Project Option Window Help
/* Chuong trinh in ra thong bao "a bang b" neu a = b, nguoc li in ra "a khac b" */

#include <stdio.h>
#include <conio.h>

void main(void)
{
int ia, ib;
printf("Nhap vao so a: ");
scanf("%d", &ia);
printf("Nhap vao so b: ");
scanf("%d", &ib);
if (ia == ib)
printf("a bang b\n");
else
printf("a khac b\n");
getch();
}
F1 Help Alt-F8 Next Msg Alt-F7 Prev Msg Alt - F9 Compile F9 Make F10 Menu
) Kt qu in ra mn hnh
Nhap vao so a : 10 Cho chy li chng trnh v th li vi:
Nhap vao so b : 8 a = 6, b = 6
a khac b. a = 1, b = 5
_ Quan st v nhn xt kt qu
) Sau else khng c du chm phy.
V d: else; printf('a khac b\n");
trnh bin dch khng bo li, lnh printf("a khac b\n"); khng thuc else
Trng TH GII TIN HC 39 Nguyn Sn H, P5, Q3 T: 8.344.480 Website: www.infoworldschool.com
Gio trnh Lp trnh C cn bn Trang 32
V d 6: Vit chng trnh nhp vo k t c. Kim tra xem nu k t nhp vo l k t
thng trong khong t 'a' n 'z' th i sang ch in hoa v in ra, ngc li in ra thng bo "K t
bn va nhp l: c".
a. Phc ha li gii
Trc tin bn phi kim tra xem nu k t c thuc khong 'a' v 'z' th i k t c thnh
ch in hoa bng cch ly k t c 32 ri gn li cho chnh n (c = c 32) (v gia k t thng v
in hoa trong bng m ASCII cch nhau 32, v d: A trong bng m ASCII l 65, B l 66, cn a
l 97, b l 98), sau khi i xong bn in k t c ra. Ngc li, in cu thng bo "K t bn va
nhp l: c".

b. M t quy trnh x l (gii thut)


Ngn ng t nhin Ngn ng C
- Khai bo bin c kiu k t - char c;
- Nhp vo k t c - printf("Nhap vao 1 ki tu: ");
scanf("%c", &c);
- Nu c >= a v c <= z th - if (c >= 'a' && c <= 'z')
c = c 32 {
in c ra mn hnh c = c 32;
printf("Ki tu hoa la: %c.\n", c);
};
Ngc li else
in ra thng bo " K t bn va nhp l: c " printf("Ki tu ban vua nhap la: %c.\n", c);
c. M t bng lu
Bt u

Nhp c

Sai
c >= 'a' v c <= 'z'

ng
c = c 32

Ki tu hoa = c Ki tu vua nhap = c

Kt thc

d. Vit chng trnh


File Edit Search Run Compile Debug Project Option Window Help
/* Chuong trinh nhap vao ky tu c, neu c la chu thuong in ra chu IN HOA */
#include <stdio.h>
#include <conio.h>
void main(void)
{
char c;

Trng TH GII TIN HC 39 Nguyn Sn H, P5, Q3 T: 8.344.480 Website: www.infoworldschool.com


Gio trnh Lp trnh C cn bn Trang 33
printf("Nhap vao 1 ki tu: ");
scanf("%c", &c);
if (c >= 'a' && c <= 'z') //hoac if(c >= 97 && c <= 122)
{
c = c 32; //doi thanh chu in hoa
printf("Ki tu hoa la: %c.\n", c);
};
else
printf("Ki tu ban vua nhap la: %c.\n", c);
getch();
}
F1 Help Alt-F8 Next Msg Alt-F7 Prev Msg Alt - F9 Compile F9 Make F10 Menu
) Kt qu in ra mn hnh
Nhap vao mot ki tu: g Cho chy li chng trnh v th li vi:
Ki tu hoa la: G. c = '!', c = '2', c = 'A', c = 'u'
_ Quan st v nhn xt kt qu
5.2.2.3 Cu trc else if
Quyt nh s thc hin 1 trong n khi lnh cho trc.
C php lnh

if (biu thc lun l 1) ) t kha if, else if, else phi vit bng ch thng
khi lnh 1; ) kt qu ca biu thc lun l 1, 2..n phi l
else if (biu thc lun l 2) ng ( 0) hoc sai (= 0)
khi lnh 2;

else if (biu thc lun l n-1) # Nu khi lnh 1, 2n bao gm t 2 lnh
khi lnh n-1; tr ln th phi t trong du { }
else
khi lnh n;

Nu biu thc lun l 1 ng th


thc hin khi lnh 1 v thot khi cu trc if
Lu Ngc li Nu biu thc lun l 2 ng th
thc hin khi lnh 2 v thot khi cu trc if
Vo
Ngc li Nu biu thc lun l n-1 ng th
Sai thc hin khi lnh n-1 v thot khi cu trc if
BTLL 1
Ngc li th
ng thc hin khi lnh n.
Sai
BTLL 2

ng Sai
BTLL n-1

ng
khi lnh 1 khi lnh 2 khi lnh n-1 khi lnh n

Ra
Trng TH GII TIN HC 39 Nguyn Sn H, P5, Q3 T: 8.344.480 Website: www.infoworldschool.com
Gio trnh Lp trnh C cn bn Trang 34
V d 7: Vit chng trnh nhp vo 2 s nguyn a, b. In ra thng bo "a ln hn b" nu
a>b, in ra thng bo "a nh hn b" nu a<b, in ra thng bo "a bng b" nu a=b.
a. Phc ha li gii
Trc tin so snh a vi b. Nu a > b th in ra thng bo "a ln hn b", ngc li nu a < b
th in ra thng bo "a nh hn b", ngc vi 2 trng hp trn th in ra thng bo "a bng b".
b. M t quy trnh thc hin (gii thut)
Ngn ng t nhin Ngn ng C
- Khai bo 2 bin a, b kiu s nguyn - int ia, ib;
- Nhp vo gi tr a - printf("Nhap vao so a: ");
scanf("%d", &ia);
- Nhp vo gi tr b - printf("Nhap vao so b: ");
scanf("%d", &ib);
- Nu a > b th - if (ia > ib)
in ra thng bo "a ln hn b" printf("a lon hon b.\n");
Ngc li Nu a < b th else if (ia < ib)
in ra thng bo "a nh hn b" printf("a nho hon b.\n");
Ngc li th else
in ra thng bo "a bng b" printf("a bang b.\n");
c. M t bng lu
Bt u

Nhp a, b

Sai Sai
a>b a<b
ng ng
"a lon hon b" "a nho hon b" "a bang b"

Kt thc
d. Vit chng trnh
File Edit Search Run Compile Debug Project Option Window Help
/* Chuong trinh nhap vao 2 so nguyen a, b. In ra thong bao a > b, a < b, a = b */
#include <stdio.h>
#include <conio.h>
void main(void)
{
int ia, ib;
printf("Nhap vao so a: ");
scanf("%d", &ia);
printf("Nhap vao so b: ");
scanf("%d", &ib);
if (ia>ib)
printf("a lon hon b.\n");
else if (ia<ib)

Trng TH GII TIN HC 39 Nguyn Sn H, P5, Q3 T: 8.344.480 Website: www.infoworldschool.com


Gio trnh Lp trnh C cn bn Trang 35
printf("a nho hon b.\n");
else
printf("a bang b.\n");
getch();
}

F1 Help Alt-F8 Next Msg Alt-F7 Prev Msg Alt - F9 Compile F9 Make F10 Menu
) Kt qu in ra mn hnh
Nhap vao so a : 5 Cho chy li chng trnh v th li vi:
Nhap vao so b : 7 a = 8, b = 4
a nho hon b a = 2, b = 2
_ Quan st v nhn xt kt qu
V d 8: Vit chng trnh nhp vo k t c. Kim tra xem nu k t nhp vo l k t
thng trong khong t 'a' n 'z' th i sang ch in hoa v in ra, nu k t in hoa trong khong A
n Z th i sang ch thng v in ra, nu k t l s t 0 n 9 th in ra cu "K t bn va nhp
l s (in ra k t c)", cn li khng phi 3 trng hp trn in ra thng bo "Bn nhp k t
(in ra k t c)".
a. Phc ha li gii
Nhp k t c vo, kim tra xem nu k t c thuc khong 'a' v 'z' i k t c thnh ch in hoa
bng cch ly k t c 32 ri gn li cho chnh n (c = c 32) (v gia k t thng v in hoa trong
bng m ASCII cch nhau 32, v d: A trong bng m ASCII l 65, B l 66, cn a l 97, b l
98), sau khi i xong bn in k t c ra. Ngc li Nu k t c thuc khong 'A' v 'Z', i k t c
thnh ch thng (theo cch ngc li) v in ra. Ngc li Nu k t c thuc khong '0' v '9' th in ra
thng bo "K t bn va nhp l s". Ngc li, in cu thng bo "Bn nhp k t".

b. M t quy trnh x l (gii thut)


Ngn ng t nhin Ngn ng C
- Khai bo bin c kiu k t - char c;
- Nhp vo k t c - printf("Nhap vao 1 ki tu: ");
scanf("%c", &c);
- Nu c >= a v c <= z th - if (c >= 'a' && c <= 'z')
c = c 32 {
in c ra mn hnh c = c 32;
printf("Ki tu hoa la: %c.\n", c);
};
Ngc li Nu c >= A v c <= Z th else if(c >= 'A' && c <= 'Z')
c = c + 32 {
in c ra mn hnh c = c + 32;
printf("Ki tu thuong la: %c.\n", c);
};
Ngc li Nu c >= 0 v c <= 9 th else if(c >= '0' && c <= '9')
in thng bo "K t bn va nhp l s c" printf("Ki tu Ban vua nhap la so %c.\n", c);
Ngc li th else
in thng bo "Bn nhp k t c" printf("Ban da nhap ki tu %c.\n", c);
) Cng nh if, khng t du chm phy sau cu lnh else if.
V d: else if(c >= 'A' && c <= 'Z');
trnh bin dch khng bo li nhng khi lnh sau else if khng c thc hin.
Trng TH GII TIN HC 39 Nguyn Sn H, P5, Q3 T: 8.344.480 Website: www.infoworldschool.com
Gio trnh Lp trnh C cn bn Trang 36
c. M t bng lu
Bt u

Nhp c

Sai
c >= 'a' v c <= 'z'

ng
c = c 32 Sai
c >= 'A' v c <= 'Z'

ng
Ki tu hoa = c
c = c + 32 Sai
c >= '0' v c <= '9'

Ki tu thuong=c ng
Ktu nhap la so c Ban da nhap ktu c

Kt thc

e. Vit chng trnh


File Edit Search Run Compile Debug Project Option Window Help
/* Chuong trinh nhap vao ki tu c. Doi ra hoa, thuong */

#include <stdio.h>
#include <conio.h>

void main(void)
{
char c;
printf("Nhap vao 1 ki tu: ");
scanf("%c", &c);
if (c >= 'a' && c <= 'z') //hoac if(c >= 97 && c <= 122)
{
c = c 32; //doi thanh chu in hoa
printf("Ki tu hoa la: %c.\n", c);
};
else if(c >= 'A' && c <= 'Z') //hoac if(c >= 65 && c <= 90)
{
c = c + 32; //doi thanh chu thuong
printf("Ki tu thuong la: %c.\n", c);
};
else if(c >= '0' && c <= '9') //hoac if(c >= 48 && c <= 57)
printf("Ki tu Ban vua nhap la so %c.\n", c);

Trng TH GII TIN HC 39 Nguyn Sn H, P5, Q3 T: 8.344.480 Website: www.infoworldschool.com


Gio trnh Lp trnh C cn bn Trang 37
else
printf("Ban da nhap ki tu %c.\n", c);
getch();
}
F1 Help Alt-F8 Next Msg Alt-F7 Prev Msg Alt - F9 Compile F9 Make F10 Menu
) Kt qu in ra mn hnh
Nhap vao mot ki tu: g Cho chy li chng trnh v th li vi:
Ki tu hoa la: G. c = '!', c = '2', c = 'a', c = 'Z'
_ Quan st v nhn xt kt qu
5.2.2.4 Cu trc if lng
Quyt nh s thc hin 1 trong n khi lnh cho trc.
C php lnh
C php l mt trong 3 dng trn, nhng trong 1 hoc nhiu khi lnh bn trong phi
cha t nht mt trong 3 dng trn gi l cu trc if lng nhau. Thng cu trc if lng nhau cng
nhiu cp phc tp cng cao, chng trnh chy cng chm v trong lc lp trnh d b nhm ln.
Lu : Cc lnh ifelse lng nhau th else s lun lun kt hp vi if no cha c else gn
nht. V vy khi gp nhng lnh if khng c else, Bn phi t chng trong nhng khi lnh r
rng trnh b hiu sai cu lnh.
V d 9: Bn vit cc dng lnh sau:

if (n > 0)
if (a > b)
x = a;
else
x = b;

Mc d Bn vit lnh else thng hng vi if (n > 0), nhng lnh else y c hiu i km
vi if (a > b), v n nm gn vi if (a > b) nht v if (a > b) cha c else. d nhn v d hiu
hn Bn vit li nh sau:

if (n > 0)
if (a > b)
x = a;
else
x = b;

Cn nu Bn mun lnh else l ca if (n > 0) th Bn phi t if (a > b) x = a trong mt khi
lnh. Bn vit li nh sau:

if (n > 0)
{
if (a > b)
x = a;
}
else
x = b;

Lu
Tng t 3 dng trn. Nhng trong mi khi lnh c th c mt (nhiu) cu trc if 3
dng trn.
Trng TH GII TIN HC 39 Nguyn Sn H, P5, Q3 T: 8.344.480 Website: www.infoworldschool.com
Gio trnh Lp trnh C cn bn Trang 38
V d 10: Vit chng trnh nhp vo im ca mt hc sinh. In ra xp loi hc tp ca hc
sinh . (Cch xp loi. Nu im >= 9, Xut sc. Nu im t 8 n cn 9, Gii. Nu im t 7 n
cn 8, Kh. Nu im t 6 n cn 7, TBKh. Nu im t 5 n cn 6, TBnh. Cn li l Yu).
a. Phc ha li gii
im s nhp vo nu hp l (0 <= im <= 10), bn tip tc cng vic xp loi, ngc
li thng bo "Nhp im khng hp l". Vic xp loi bn s dng cu trc else if.
b. M t quy trnh x l (gii thut)
Ngn ng t nhin Ngn ng C
- Khai bo bin diem kiu s thc - float fdiem;
- Nhp vo im s - printf("Nhap vao diem so: ");
scanf("%f", &fdiem);
- Nu diem >= 0 v diem <= 10 th - if (fdiem >= 0 && fdiem <= 10)
- Nu diem >= 9 th - if (fdiem >= 9)
in ra xp loi = Xut sc printf("Xep loai = Xuat sac.\n");
Ngc li Nu diem >= 8 th else if (fdiem >= 8)
in ra xp loi = Gii printf("Xep loai = Gioi.\n");
Ngc li Nu diem >= 7 th else if (fdiem >= 7)
in ra xp loi = Kh printf("Xep loai = Kha.\n");
Ngc li Nu diem >= 6 th else if (fdiem >= 6)
in ra xp loi = TBKh printf("Xep loai = TBKha.\n");
Ngc li Nu diem >= 5 th else if (fdiem >= 5)
in ra xp loi = TBnh printf("Xep loai = TBinh.\n");
Ngc li th else
in ra xp loi = Yu printf("Xep loai = Yeu.\n");
Ngc li th else
in ra "Bn nhp im khng hp l" printf("Ban nhap diem khong hop le.\n");
c. M t bng lu
Bt u

Nhp diem

diem >= 0 ng
v diem <= 10
Sai
diem >=9
Sai Sai
diem >=8
ng
Sai
diem >=7
ng
Sai
diem >=6
ng
Sai
diem >=5
ng
ng
diem khong hop le Xuat sac Gioi Kha TBKha TBinh Yeu

Kt thc

Trng TH GII TIN HC 39 Nguyn Sn H, P5, Q3 T: 8.344.480 Website: www.infoworldschool.com


Gio trnh Lp trnh C cn bn Trang 39
d. Vit chng trnh
File Edit Search Run Compile Debug Project Option Window Help
/* Chuong trinh nhap vao 2 so nguyen a, b. In ra thong bao a > b, a < b, a = b */

#include <stdio.h>
#include <conio.h>

void main(void)
{
float fdiem;
printf("Nhap vao diem so: ");
scanf("%f", &fdiem);
if (fdiem >=0 && fdiem <=10)
if (fdiem >=9)
printf("Xep loai = Xuat sac.\n");
else if (fdiem >=8)
printf("Xep loai = Gioi.\n");
else if (fdiem >=7)
printf("Xep loai = Kha.\n");
else if (fdiem >=6)
printf("Xep loai = TBKha.\n");
else if (fdiem >=5)
printf("Xep loai = TBinh.\n");
else
printf("Xep loai = Yeu.\n");
else //if (fdiem>=0 && fdiem<=10)
printf("Nhap diem khong hop le.\n");
getch();
}
F1 Help Alt-F8 Next Msg Alt-F7 Prev Msg Alt - F9 Compile F9 Make F10 Menu
) Kt qu in ra mn hnh
Nhap vao diem so: 6.5 Cho chy li chng trnh v th li vi:
Xep loai = TBKha. diem = 4, diem = 9, diem = 7, diem = 12
_ Quan st v nhn xt kt qu
e. Bn thm v chng trnh
Trong chng trnh trn cu trc else if c lng vo trong cu trc dng 2, trong
cu trc else if ta khng cn t trong khi v tt c cc if trong cu trc ny u c else, nn
else printf("Nhap diem khong hop le.\n") ng nhin l thuc v if (fdiem >= 0 && fdiem <=
10). Gi s trong cu trc else if khng c dng else printf("Xep loai = Yeu.\n") th khi dng
else printf("Nhap diem khong hop le.\n") s thuc v cu trc else if ch khng thuc v if
(fdiem >=0 && fdiem <= 10). i vi trng hp bn cn phi t cu trc else if vo trong
{}, th khi dng else printf("Nhap diem khong hop le.\n) s thuc v if (fdiem >= 0 &&
fdiem <= 10).
V d 11: Vit chng trnh nhp vo 3 s nguyn a, b, c. Tm v in ra s ln nht.
a. Phc ha li gii
Trc tin bn so nu a>b, m a>c th a ln nht, ngc li c ln nht, cn nu a<=b, m
c>b th b ln nht, ngc li c ln nht.

Trng TH GII TIN HC 39 Nguyn Sn H, P5, Q3 T: 8.344.480 Website: www.infoworldschool.com


Gio trnh Lp trnh C cn bn Trang 40
b. M t quy trnh x l (gii thut)
Ngn ng t nhin Ngn ng C
- Khai bo 3 bin a, b, c kiu s nguyn - int ia, ib, ic;
- Nhp vo s a - printf("Nhap vao so a: ");
scanf("%d", &ia);
- Nhp vo s b - printf("Nhap vao so b: ");
scanf("%d", &ib);
- Nhp vo s c - printf("Nhap vao so c: ");
scanf("%d", &ic);
- Nu a > b th - if (ia > ib)
- Nu a > c th - if (ia > ic)
a ln nht printf("%d lon nhat.\n", ia);
Ngc li th else
c ln nht printf("%d lon nhat.\n", ic);
Ngc li else
- Nu b > c th - if (ib > ic)
b ln nht printf("%d lon nhat.\n", ib);
Ngc li th else
c ln nht printf("%d lon nhat.\n", ic);
c. M t bng lu
Bt u

Nhp a, b, c

Sai ng
a>b

Sai ng Sai ng
b>c a>c

c ln nht b ln nht c ln nht a ln nht

Kt thc

d. Vit chng trnh


File Edit Search Run Compile Debug Project Option Window Help
/* Chuong trinh nhap vao 2 so nguyen a, b, c. Tim, in ra so lon nhat */

#include <stdio.h>
#include <conio.h>

void main(void)
{
int ia, ib, ic;
printf("Nhap vao so a: ");

Trng TH GII TIN HC 39 Nguyn Sn H, P5, Q3 T: 8.344.480 Website: www.infoworldschool.com


Gio trnh Lp trnh C cn bn Trang 41
scanf("%d", &ia);
printf("Nhap vao so b: ");
scanf("%d", &ib);
printf("Nhap vao so c: ");
scanf("%d", &ic);
if (ia > ib)
if (ia > ic)
printf("%d lon nhat.\n", ia);
else
printf("%d lon nhat.\n", ic);
else
if (ib > ic)
printf("%d lon nhat.\n", ib);
else
printf("%d lon nhat.\n", ic);
getch();
}
F1 Help Alt-F8 Next Msg Alt-F7 Prev Msg Alt - F9 Compile F9 Make F10 Menu
) Kt qu in ra mn hnh
Nhap vao so a: 4 Cho chy li chng trnh v th li vi:
Nhap vao so b: 5 a = 5, b = 4, c = 2
Nhap vao so c: 3 a = 2, b = 1, c = 10
5 lon nhat. a = 5, b = 5, c = 5
_ Quan st v nhn xt kt qu
e. Bn thm v chng trnh
Trong chng trnh trn cu trc dng 2 c lng vo trong cu trc dng 2.
5.2.3 Lnh switch
Lnh switch cng ging cu trc else if, nhng n mm do hn v linh ng hn nhiu
so vi s dng if. Tuy nhin, n cng c mt hn ch l kt qu ca biu thc phi l gi tr hng
nguyn (c gi tr c th). Mt bi ton s dng lnh switch th cng c th s dng if, nhng
ngc li cn ty thuc vo gii thut ca bi ton.
5.2.3.1 Cu trc switchcase (switch thiu)
Chn thc hin 1 trong n lnh cho trc.
C php lnh

switch (biu thc) ) t kha switch, case, break


{ phi vit bng ch thng
case gi tr 1 : lnh 1; ) biu thc phi l c kt qu l
break; gi tr hng nguyn (char, int, long,)
case gi tr 2 : lnh 2; ) Lnh 1, 2n c th gm nhiu lnh, nhng
break; khng cn t trong cp du { }

case gi tr n : lnh n;
[break;]
}

Trng TH GII TIN HC 39 Nguyn Sn H, P5, Q3 T: 8.344.480 Website: www.infoworldschool.com


Gio trnh Lp trnh C cn bn Trang 42
Lu
Vo
) Khi gi tr ca biu thc bng gi tr i th lnh i
s c thc hin. Nu sau lnh i khng c lnh
Biu thc break th s tip tc thc hin lnh i + 1Ngc
... li thot khi cu trc switch.
ng
= gi tr 1 ? lnh 1

C
break ?
Khng
ng
= gi tr 2 ? lnh 2

C
break ?
Khng

ng
= gi tr n ? lnh n

C
break ?
Khng

Ra
V d 12: Vit chng trnh nhp vo s 1, 2, 3. In ra tng ng 1, 2, 3 sao.
a. Vit chng trnh
File Edit Search Run Compile Debug Project Option Window Help
/* Chuong trinh nhap vao so 1, 2, 3. In ra so sao tuong ung */
#include <stdio.h>
#include <conio.h>
void main(void)
{
int i;
printf("Nhap vao so 1, 2 hoc 3: ");
scanf("%d", &i);
switch(i)
{
case 3: printf("*");
case 2: printf("*");
case 1: printf("*");
};
printf("An phim bat ky de ket thuc!\n");
getch();
}
F1 Help Alt-F8 Next Msg Alt-F7 Prev Msg Alt - F9 Compile F9 Make F10 Menu
) Kt qu in ra mn hnh
Nhap vao so 1, 2 hoc 3: 2 Cho chy li chng trnh v th li vi:
** i = 1, i = 3, i = 0, i = 4
_ Quan st v nhn xt kt qu
Trng TH GII TIN HC 39 Nguyn Sn H, P5, Q3 T: 8.344.480 Website: www.infoworldschool.com
Gio trnh Lp trnh C cn bn Trang 43
b. Bn thm v chng trnh
Trong chng trnh trn khi nhp vo i = 2 lnh printf("*") dng case 2 c thi hnh,
nhng do khng c lnh break sau nn lnh printf("*") dng case 1 tip tc c thi hnh. Kt
qu in ra **.
) Khng t du chm phy sau cu lnh switch.
V d: switch(i);
trnh bin dch khng bo li nhng cc lnh trong switch khng c thc hin.
V d 13: Vit chng trnh nhp vo thng v in ra qu. (thng 1 -> qu 1, thng 10 -> qu 4)
a. Phc ha li gii
Nhp vo gi tr thng, kim tra xem thng c hp l (trong khong 1 n 12). Nu hp l
in ra qu tng ng (1->3: qu 1, 4->6: qu 2, 7->9: qu 3, 10->12: qu 4).
b. Vit chng trnh
File Edit Search Run Compile Debug Project Option Window Help
/* Chuong trinh nhap vao thang. In ra quy tuong ung */
#include <stdio.h>
#include <conio.h>
void main(void)
{
int ithang;
printf("Nhap vao thang: ");
scanf("%d", &ithang);
if (ithang > 0 && ithang <= 12)
switch(ithang)
{
case 1:
case 2:
case 3: printf("Quy 1.\n");
break;
case 4:
case 5:
case 6: printf("Quy 2.\n");
break;
case 7:
case 8:
case 9: printf("Quy 3.\n");
break;
case 10:
case 11:
case 12:printf("Quy 4.\n");
break;
};
else
printf("Thang khong hop le.\n");
getch();
}
F1 Help Alt-F8 Next Msg Alt-F7 Prev Msg Alt - F9 Compile F9 Make F10 Menu
) Kt qu in ra mn hnh
Nhap vao thang: 4 Cho chy li chng trnh v th li vi:
Quy 2. thang = 7, thang = 1, thang = 13, thang = -4
_ Quan st v nhn xt kt qu

Trng TH GII TIN HC 39 Nguyn Sn H, P5, Q3 T: 8.344.480 Website: www.infoworldschool.com


Gio trnh Lp trnh C cn bn Trang 44
c. Bn thm v chng trnh
Trong chng trnh trn cu trc switchcase c lng vo trong cu trc if dng 2.
5.2.3.2 Cu trc switchcasedefault (switch )
Chn thc hin 1 trong n + 1 lnh cho trc.
C php lnh

switch (biu thc) ) t kha switch, case, break, default


{ phi vit bng ch thng
case gi tr 1 : lnh 1; ) biu thc phi l c kt qu l
break; gi tr nguyn (char, int, long,)
case gi tr 2 : lnh 2; ) Lnh 1, 2n c th gm nhiu lnh, nhng
break; khng cn t trong cp du { }

case gi tr n : lnh n;
break;
default : lnh;
[break;]
}

Lu
) Khi gi tr ca biu thc bng gi tr i th lnh
Vo
i s c thc hin. Nu sau lnh i khng c
lnh break th s tip tc thc hin lnh i +
Biu thc 1Ngc li thot khi cu trc switch. Nu
... gi tr biu thc khng trng vi bt k gi tr
i no th lnh tng ng vi t kha default
ng
= gi tr 1 ? lnh 1 s c thc hin.

C
break ?
Khng
ng
= gi tr 2 ? lnh 2

C
break ?
Khng

ng
= gi tr n ? lnh n

C
break ?
Khng
gi tr 1, 2 n lnh n

C
break ?
Khng

Ra

Trng TH GII TIN HC 39 Nguyn Sn H, P5, Q3 T: 8.344.480 Website: www.infoworldschool.com


Gio trnh Lp trnh C cn bn Trang 45
V d 14: Vit li chng trnh V d 12
a. Vit chng trnh
File Edit Search Run Compile Debug Project Option Window Help
/* Chuong trinh nhap vao so 1, 2, 3. In ra so sao tuong ung */

#include <stdio.h>
#include <conio.h>

void main(void)
{
int i;
printf("Nhap vao so 1, 2 hoc 3: ");
scanf("%d", &i);
switch(i)
{
case 3: printf("*");
case 2: printf("*");
case 1: printf("*");
break;
default: printf("Ban nhap phai nhap vao so 1, 2 hoac 3.\n");
};
getch();
}
F1 Help Alt-F8 Next Msg Alt-F7 Prev Msg Alt - F9 Compile F9 Make F10 Menu
) Kt qu in ra mn hnh
Nhap vao so 1, 2 hoc 3: 3 Cho chy li chng trnh v th li vi:
*** i = 1, i = 3, i = 0, i = 4
_ Quan st kt qu
b. Bn thm v chng trnh
Trong chng trnh trn. Nu bn nhp vo 1, 2, 3 s in ra s sao tng ng. Ngoi cc s
ny chng trnh s in ra cu thng bo "Bn phi nhp vo s 1, 2 hoc 3".
V d 15: Vit li chng trnh V d 13
a. Vit chng trnh
File Edit Search Run Compile Debug Project Option Window Help
/* Chuong trinh nhap vao thang. In ra quy tuong ung */

#include <stdio.h>
#include <conio.h>

void main(void)
{
int ithang;
printf("Nhap vao thang: ");
scanf("%d", &ithang);
switch(ithang)
{

Trng TH GII TIN HC 39 Nguyn Sn H, P5, Q3 T: 8.344.480 Website: www.infoworldschool.com


Gio trnh Lp trnh C cn bn Trang 46
case 1: case 2: case 3 : printf("Quy 1.\n");
break;
case 4: case 5: case 6: printf("Quy 2.\n");
break;
case 7: case 8: case 9: printf("Quy 3.\n");
break;
case 10: case 11: case 12: printf("Quy 4.\n");
break;
default : printf("Ban phai nhap vao so trong khoang 1..12\n");
};
getch();
}
F1 Help Alt-F8 Next Msg Alt-F7 Prev Msg Alt - F9 Compile F9 Make F10 Menu
) Kt qu in ra mn hnh
Nhap vao thang: 4 Cho chy li chng trnh v th li vi:
Quy 2. thang = 7, thang = 1, thang = 13, thang = -4
_ Quan st kt qu
c. Bn thm v chng trnh
Trong chng trnh trn. Nu bn nhp vo 1 n 12 s in qu tng ng. Ngoi cc s
ny chng trnh s in ra cu thng bo "Bn phi nhp vo s trong khong 1..12".
5.2.3.3 Cu trc switch lng
Quyt nh s thc hin 1 trong n khi lnh cho trc.
C php lnh
C php l mt trong 2 dng trn, nhng trong 1 hoc nhiu lnh bn trong phi cha t
nht mt trong 2 dng trn gi l cu trc switch lng nhau. Thng cu trc switch lng nhau
cng nhiu cp phc tp cng cao, chng trnh chy cng chm v trong lc lp trnh d b
nhm ln.
Lu
Tng t 2 dng trn. Nhng trong mi lnh c th c mt (nhiu) cu trc switch 2
dng trn.
V d 16: Vit chng trnh menu 2 cp
a. Vit chng trnh
File Edit Search Run Compile Debug Project Option Window Help
/* Chuong trinh menu 2 cap */

#include <stdio.h>
#include <conio.h>

void main(void)
{
int imenu, isubmenu;
printf("-------------------------\n");
printf(" MAIN MENU \n");
printf("-------------------------\n");
printf("1. File\n");

Trng TH GII TIN HC 39 Nguyn Sn H, P5, Q3 T: 8.344.480 Website: www.infoworldschool.com


Gio trnh Lp trnh C cn bn Trang 47
printf("2. Edit\n");
printf("3. Search\n");
printf("Chon muc tuong ung: ");
scanf("%d", &imenu);
switch(imenu)
{
case 1: printf("-------------------------\n");
printf(" MENU FILE \n");
printf("-------------------------\n");
printf("1. New\n");
printf("2. Open\n");
printf("Chon muc tuong ung: ");
scanf("%d", &isubmenu);
switch(isubmenu)
{
case 1: printf("Ban da chon chuc nang New File\n");
break;
case 2: printf("Ban da chon chuc nang Open File\n");
}
break; //break cua case 1 switch(imenu)
case 2: printf("Ban da chon chuc nang Edit\n");
break;
case 3: printf("Ban da chon chuc nang Search\n");
};
getch();
}
F1 Help Alt-F8 Next Msg Alt-F7 Prev Msg Alt - F9 Compile F9 Make F10 Menu
) Kt qu in ra mn hnh
-------------------------- Cho chy li chng trnh v th li vi:
MAIN MENU mc chn chc nng khc
-------------------------- Quan st kt qu.
1. File * Thm cc thnh phn sau vo chng trnh:
2. Edit - Thm mc Save vo menu File.
3. Search - To menu Edit gm 4 chc nng: Copy,
Chon muc tuong ung: 1 Cut, Paste, Clear.
-------------------------- - To menu Search gm 2 chc nng: Find,
MENU FILE Replace.
-------------------------- Chy li chng trnh v th vi nhiu mc
1. New chn khc nhau.
2. Open Quan st kt qu.
Chon muc tuong ung: 2
Ban da chon chuc nang Open File
_
5.3 Bi tp

5.3.1 S dng lnh if

1. Vit li chng trnh v d 3, s dng cu trc if dng 2.


2. Vit li chng trnh v d 11, s dng cu trc if dng 1.
Trng TH GII TIN HC 39 Nguyn Sn H, P5, Q3 T: 8.344.480 Website: www.infoworldschool.com
Gio trnh Lp trnh C cn bn Trang 48
3. Vit li chng trnh v d 11, s dng cu trc if dng 2.
4. Vit chng trnh nhp vo s nguyn dng, in ra thng bo s chn hay l.
Hng dn: Nhp vo s nguyn dng x. Kim tra nu x chia chn cho hai th x l s
chn (hoc chia cho 2 d 0) ngc li l s l.
5. Vit chng trnh nhp vo 4 s nguyn. Tm v in ra s ln nht.
Hng dn: Ta c 4 s nguyn a, b, c, d. Tm 2 s nguyn ln nht x, y ca 2 cp (a, b)
v (c, d). Sau so snh 2 s nguyn x, y tm ra s nguyn ln nht.
6. Vit chng trnh gii phng trnh bc 2: ax2 + bx + c = 0, vi a, b, c nhp vo t
bn phm.
Hng dn: Nhp vo 3 bin a, b, c.
Tnh Delta = b*b - 4*a*c
Nu Delta < 0 th
Phng trnh v nghim
Ngc li
Nu Delta = 0 th
x1 = x2 = - b/(2*a)
Ngc li
x1 = (- b - sqrt(Delta))/(2*a)
x2 = (- b + sqrt(Delta))/(2*a)
Ht Nu
Ht Nu
7. Vit chng trnh nhp vo gi pht giy (hh:mm:ss). Cng thm s giy nhp vo
v in ra kt qu di dng hh:mm:ss.
Hng dn: Nhp vo gi pht giy vo 3 bin gio, phut, giay v nhp v giy cng thm
vo bin them:
Nu giay + them < 60 th
giay = giay + them
Ngc li
giay = (giay + them) - 60
phut = phut + 1
Nu phut >= 60 th
phut = phut - 60
gio = gio + 1
Ht nu
Ht nu
5.3.2 S dng lnh switch

8. Vit chng trnh nhp vo thng, in ra thng c bao nhiu ngy.


Hng dn: Nhp vo thng
Nu l thng 1, 3, 5, 7, 8, 10, 12 th c 30 ngy
Nu l thng 4, 6, 9, 11 th c 31 ngy
Nu l thng 2 v l nm nhun th c 29 ngy ngc li 28 ngy
(Nm nhun l nm chia chn cho 4)
9. Vit chng trnh tr chi One-Two-Three ra ci g ra ci ny theo iu kin:
- Ba (B) thng Ko, thua Giy.
- Ko (K) thng Giy, thua Ba.
- Giy (G) thng Ba, thua Ko.
Hng dn: Dng lnh switch lng nhau

Trng TH GII TIN HC 39 Nguyn Sn H, P5, Q3 T: 8.344.480 Website: www.infoworldschool.com


Gio trnh Lp trnh C cn bn Trang 49
10. Vit chng trnh xc nh bin k t color ri in ra thng bo
- RED, nu color = 'R' hoc color = 'r'
- GREEN, nu color = 'G' hoc color = 'g'
- BLUE, nu color = 'B' hoc color = 'b'
- BLACK, nu color c gi tr khc.
11. Vit chng trnh nhp vo 2 s x, y v 1 trong 4 ton t +, -, *, /. Nu l + th in ra
kt qu x + y, nu l th in ra x y, nu l * th in ra x * y, nu l / th in ra x / y (nu y = 0 th
thng bo khng chia c)
5.4 Bi tp lm thm

12. Vit li bi tp 8, 9, 10, 11 s dng lnh if.


13. Vit chng trnh nhp vo im 3 mn thi: Ton, L, Ha ca hc sinh. Nu tng
im >= 15 v khng c mn no di 4 th in kt qu u. Nu u m cc mn u ln hn 5
th in ra li ph "Hc u cc mn", ngc li in ra "Hc cha u cc mn", cc trng hp
khc l "Thi hng".
14. Vit chng trnh nhp vo ngy thng nm (dd:mm:yy), cho bit l th my
trong tun.
15. Vit chng trnh nhp s gi lm v lng gi ri tnh s tin lng tng cng. Nu
s gi lm ln hn 40 th nhng gi lm di ra c tnh 1,5 ln.
16. Vit chng trnh nhp vo 3 gi tr nguyn dng a, b, c. Kim tra xem a, b, c c
phi l 3 cnh ca tam gic khng? Nu l 3 cnh ca tam gic th tnh din tch ca tam gic
theo cng thc sau:

17. S = p * ( p a ) * ( p b) * p c) , vi p l 1/2 chu vi ca tam gic.


Hng dn: a, b, c l 3 cnh ca tam gic phi tha iu kin sau:
(a + b) > c v (a + c) > b v (b + c) > a
18. Vit chng trnh nhp vo 3 s nguyn ri in ra mn hnh theo th t tng dn.
19. Vit chng trnh tnh tin in gm cc khong sau:
- Tin thu bao in k: 1000/thng
- nh mc s dng in cho mi h l: 50 KW vi gi 230/KW
- Nu phn vt nh mc <= 50KW th tnh gi 480/KW
- Nu 50KW < phn vt nh mc < 100KW th tnh gi 700/KW
- Nu phn vt nh mc <= 100KW th tnh gi 900/KW
Ch s mi v c c nhp vo t bn phm
- In ra mn hnh ch s c, ch s mi, tin tr nh mc, tin tr vt nh mc, tng tin
phi tr.

Trng TH GII TIN HC 39 Nguyn Sn H, P5, Q3 T: 8.344.480 Website: www.infoworldschool.com


Gio trnh Lp trnh C cn bn Trang 50

Bi 6 :
CU TRC VNG LP

6.1 Mc tiu
Sau khi hon tt bi ny hc vin s hiu v vn dng cc kin thc k nng c bn sau:
- ngha, cch hot ng ca vng lp.
- C php, ngha, cch s dng lnh for, while, dowhile.
- ngha v cch s dng lnh break, continue.
- Mt s bi ton s dng lnh for, while, dowhile thng qua cc v d.
- So snh, nh gi mt s bi ton s dng lnh for, while hoc dowhile.
- Cu trc vng lp lng nhau.
6.2 Ni dung

6.2.1 Lnh for


Vng lp xc nh thc hin lp li mt s ln xc nh ca mt (chui hnh ng)
C php lnh

for (biu thc 1; biu thc 2; biu thc 3)


khi lnh;

) t kha for phi vit bng ch thng


# Nu khi lnh bao gm t 2 lnh tr ln th phi t trong du { }

Lu
Vo
) kim tra iu kin
nu ng ng th
Sai thc hin khi lnh;
iu kin
lp li kim tra iu kin
ng nu sai
thot khi vng lp.
khi lnh

Ra
Gii thch:
+ Biu thc 1: khi to gi tr ban u cho bin iu khin.
+ Biu thc 2: l quan h logic th hin iu kin tip tc vng lp.
+ Biu thc 3: php gn dng thay i gi tr bin iu khin.
Nhn xt:
+ Biu thc 1 bao gi cng ch c tnh ton mt ln khi gi thc hin for.
+ Biu thc 2, 3 v thn for c th thc hin lp li nhiu ln.
Lu :
+ Biu thc 1, 2, 3 phi phn cch bng du chm phy (;)
+ Nu biu thc 2 khng c, vng for c xem l lun lun ng. Mun thot khi
vng lp for phi dng mt trong 3 lnh break, goto hoc return.
Trng TH GII TIN HC 39 Nguyn Sn H, P5, Q3 T: 8.344.480 Website: www.infoworldschool.com
Gio trnh Lp trnh C cn bn Trang 51
+ Vi mi biu thc c th vit thnh mt dy biu thc con phn cch nhau bi du
phy. Khi cc biu thc con c xc nh t tri sang phi. Tnh ng sai ca dy biu thc
con trong biu thc th 2 c xc nh bi biu thc con cui cng.
+ Trong thn for (khi lnh) c th cha mt hoc nhiu cu trc iu khin khc.
+ Khi gp lnh break, cu trc lp su nht s thot ra.
+ Trong thn for c th dng lnh goto thot khi vng lp n v tr mong mun.
+ Trong thn for c th s dng return tr v mt hm no .
+ Trong thn for c th s dng lnh continue chuyn n u vng lp (b qua cc
cu lnh cn li trong thn).
V d 1: Vit chng trnh in ra cu "Vi du su dung vong lap for" 3 ln.
Dng File Edit Search Run Compile Debug Project Option Window Help
1 /* Chuong trinh in ra cau "Vi du su dung vong lap for" 3 lan */
2
3 #include <stdio.h>
4 #include <conio.h>
5
6 #define MSG "Vi du su dung vong lap for.\n"
7
8 void main(void)
9 {
10 int i;
11 for(i = 1; i<=3; i++) /hoac for(i = 1; i<=3; i+=1)
12 printf("%s", MSG);
13 getch();
14 }
F1 Help Alt-F8 Next Msg Alt-F7 Prev Msg Alt - F9 Compile F9 Make F10 Menu
) Kt qu in ra mn hnh
Vi du su dung vong lap for. Bn thay 2 dng 11 v 12 bng cu lnh
Vi du su dung vong lap for. for(i=1; i<=3; i++, printf("%s", MSG));
Vi du su dung vong lap for. Chy li chng trnh, quan st v nhn xt kt qu.
_
) C du chm phy sau lnh for(i=1; i<=3; i++); cc lnh thuc vng lp for s
khng c thc hin.
V d 2: Vit chng trnh nhp vo 3 s nguyn. Tnh v in ra tng ca chng.
Dng File Edit Search Run Compile Debug Project Option Window Help
1 /* Chuong trinh nhap vao 3 so va tinh tong */
2
3 #include <stdio.h>
4 #include <conio.h>
5
6 void main(void)
7 {
8 int i, in, is;
9 is = 0;
10 for(i = 1; i<=3; i++)
11 {

Trng TH GII TIN HC 39 Nguyn Sn H, P5, Q3 T: 8.344.480 Website: www.infoworldschool.com


Gio trnh Lp trnh C cn bn Trang 52
12 printf("Nhap vao so thu %d :", i);
13 scanf("%d", &in);
14 is = is + in;
15 }
16 printf("Tong: %d", is);
17 getch();
18 }
F1 Help Alt-F8 Next Msg Alt-F7 Prev Msg Alt - F9 Compile F9 Make F10 Menu
) Kt qu in ra mn hnh
Nhap vao so thu 1: 5 Bn thay cc dng t 9 n 15 bng cu lnh:
Nhap vao so thu 2: 4 for(is=0, i=1; i<=3; printf("Nhap vao so thu %d: ", i), scanf("%d",
Nhap vao so thu 3: 2 &in), i++, is=is+in);
Tong: 11. Chy li chng trnh, quan st v nhn xt kt qu.
_
) Trong vng lp for c s dng t 2 lnh tr ln, nh s dng cp ngoc { } bc
cc lnh li. Dng 12, 13, 14 thuc vng for dng 10 do c bc bi cp ngoc { }. Nu 3
dng ny khng bc bi cp ngoc { }, th ch dng 12 thuc vng lp for, cn 2 dng cn li
khng thuc vng lp for.
V d 3: Vit chng trnh nhp vo s nguyn n. Tnh tng cc gi tr l t 0 n n.
Dng File Edit Search Run Compile Debug Project Option Window Help
1 /* Chuong trinh nhap vao 3 so va tinh tong */
2
3 #include <stdio.h>
4 #include <conio.h>
5
6 void main(void)
7 {
8 int i, in, is = 0;
9 printf("Nhap vao so n: ");
10 scanf("%d", &in);
11 is = 0;
12 for(i = 0; i<=in; i++)
13 {
14 if (i % 2 != 0) //neu i la so le
15 is = is + i; //hoac is += i;
16 }
17 printf("Tong: %d", is);
18 getch();
19 }
F1 Help Alt-F8 Next Msg Alt-F7 Prev Msg Alt - F9 Compile F9 Make F10 Menu
) Kt qu in ra mn hnh
Nhap vao so n : 5 Bn thay cc dng t 11 n 16 bng cu lnh:
Tong: 9. for(is=0, i=1; i<=n; is=is+i, i+=2);
_ Chy li chng trnh, quan st v nhn xt kt qu.
) Bn c th vit gp cc lnh trong thn for vo trong lnh for. Tuy nhin, khi lp
trnh bn nn vit lnh for c 3 biu thc n v cc lnh thc hin trong thn for mi
lnh mt dng sau ny c th c li d hiu, d sa cha.
Trng TH GII TIN HC 39 Nguyn Sn H, P5, Q3 T: 8.344.480 Website: www.infoworldschool.com
Gio trnh Lp trnh C cn bn Trang 53
V d 4: Mt vi v d thay i bin iu khin vng lp.
- Thay i bin iu khin t 1 n 100, mi ln tng 1:
for(i = 1; i <= 100; i++)
- Thay i bin iu khin t 100 n 1, mi ln gim 1:
for(i = 100; i >= 1; i--)
- Thay i bin iu khin t 7 n 77, mi ln tng 7:
for(i = 7; i <= 77; i += 7)
- Thay i bin iu khin t 20 n 2, mi ln gim 2:
for(i = 20; i >= 2; i = 2)
V d 5: c vo mt lot k t trn bn phm. Kt thc khi gp du chm '.' .
Dng File Edit Search Run Compile Debug Project Option Window Help
1 /* Doc vao 1 loat ktu tren ban phim. Ket thuc khi gap dau cham */
2
3 #include <stdio.h>
4
5 #define DAU_CHAM '.'
6
7 void main(void)
8 {
9 char c;
10 for(; (c = getchar()) != DAU_CHAM; )
11 putchar(c);
12 }
F1 Help Alt-F8 Next Msg Alt-F7 Prev Msg Alt - F9 Compile F9 Make F10 Menu
) Kt qu in ra mn hnh
a Bn thay cc dng t 10 n 11 bng cu lnh:
a for(; (c = getchar()) != DAU_CHAM; putchar(c));
4 Chy li chng trnh, quan st v nhn xt kt qu.
4
.
_
) Vng lp for vng mt biu thc 1 v 3.
V d 6: c vo mt lot k t trn bn phm, m s k t nhp vo. Kt thc khi gp du chm '.' .
Dng File Edit Search Run Cmpile Debug Project Option Window Help
1 /* Doc vao 1 loat ktu tren ban phim, dem so ktu nhap vao. Ket thuc khi gap dau cham */
2
3 #include <stdio.h>
4 #include <conio.h>
5
6 #define DAU_CHAM '.'
7
8 void main(void)
9 {
10 char c;
11 int idem;
12 for(idem = 0; (c = getchar()) != DAU_CHAM; )
13 idem++;

Trng TH GII TIN HC 39 Nguyn Sn H, P5, Q3 T: 8.344.480 Website: www.infoworldschool.com


Gio trnh Lp trnh C cn bn Trang 54
14 printf("So ki tu: %d.\n", idem);
15 getch();
16 }
F1 Help Alt-F8 Next Msg Alt-F7 Prev Msg Alt - F9 Compile F9 Make F10 Menu
) Kt qu in ra mn hnh
afser. Bn thay cc dng t 12 n 13 bng cu lnh:
So ki tu: 5. for(idem = 0; (c = getchar()) != DAU_CHAM; idem++);
_ Chy li chng trnh, quan st v nhn xt kt qu.
) Vng lp for vng mt biu thc 3.
V d 7: c vo mt lot k t trn bn phm, m s k t nhp vo. Kt thc khi gp du
chm '.' .
Dng File Edit Search Run Compile Debug Project Option Window Help
1 /* Doc vao 1 loat ktu tren ban phim, dem so ktu nhap vao. Ket thuc khi gap dau cham */
2
3 #include <stdio.h>
4 #include <conio.h>
5
6 #define DAU_CHAM '.'
7
8 void main(void)
9 {
10 char c;
11 int idem = 0;
12 for(; ;)
13 {
14 c = getchar();
15 if (c == DAU_CHAM) //nhap vao dau cham
16 break; //thoat vong lap
17 idem++;
18 }
19 printf("So ki tu: %d.\n", idem);
20 getch();
21 }
F1 Help Alt-F8 Next Msg Alt-F7 Prev Msg Alt - F9 Compile F9 Make F10 Menu
) Kt qu in ra mn hnh
afser. Chy li chng trnh, quan st v nhn xt kt qu.
So ki tu: 5.
_
) Vng lp for vng mt c ba biu thc.
V d 8: Nhp vo 1 dy s nguyn t bn phm n khi gp s 0 th dng. In ra tng cc s
nguyn dng.
Dng File Edit Search Run Compile Debug Project Option Window Help
1 /* Nhap vao 1 day so nguyen tu ban phim den khi gap so 0 thi dung. In ra tong cac so
2 nguyen duong */
3
4 #include <stdio.h>
5 #include <conio.h>

Trng TH GII TIN HC 39 Nguyn Sn H, P5, Q3 T: 8.344.480 Website: www.infoworldschool.com


Gio trnh Lp trnh C cn bn Trang 55
6
7 void main(void)
8 {
9 int in, itong = 0;
10 for(; ;)
11 {
12 printf("Nhap vao 1 so nguyen: ");
13 scanf("%d", &in);
14 if (in < 0)
15 continue; //in < 0 quay nguoc len dau vong lap
16 if (in == 0)
17 break; //in = 0 thoat vong lap
18 itong += in;
19 }
20 printf("Tong: %d.\n", itong);
21 getch();
22 }
F1 Help Alt-F8 Next Msg Alt-F7 Prev Msg Alt - F9 Compile F9 Make F10 Menu
) Kt qu in ra mn hnh
Nhap vao 1 so nguyen: -8 Chy li chng trnh vi s liu khc
Nhap vao 1 so nguyen: 9 Quan st v nhn xt kt qu.
Nhap vao 1 so nguyen: -7
Nhap vao 1 so nguyen: 3
Nhap vao 1 so nguyen: 0
Tong: 12
_
6.2.2 Lnh break
Thng thng lnh break dng thot khi vng lp khng xc nh iu kin dng
hoc bn mun dng vng lp theo iu kin do bn ch nh. Vic dng lnh break thot khi
vng lp thng s dng phi hp vi lnh if. Lnh break dng trong for, while, dowhile,
switch. Lnh break thot khi vng lp cha n.
V d 9 : Nh v d 7, 8
S dng lnh break trong switch nhy b cc cu lnh k tip cn li.
6.2.3 Lnh continue
c dng trong vng lp for, while, dowhile. Khi lnh continue thi hnh quyn iu
khin s trao qua cho biu thc iu kin ca vng lp gn nht. Ngha l ln ngc ln u vng
lp, tt c nhng lnh i sau trong vng lp cha continue s b b qua khng thi hnh.
V d 10 : Nh v d 8
6.2.4 Lnh while
Vng lp thc hin lp li trong khi biu thc cn ng.
C php lnh

while (biu thc)


khi lnh;

) t kha while phi vit bng ch thng


# Nu khi lnh bao gm t 2 lnh tr ln th phi t trong du { }

Trng TH GII TIN HC 39 Nguyn Sn H, P5, Q3 T: 8.344.480 Website: www.infoworldschool.com


Gio trnh Lp trnh C cn bn Trang 56
Lu
Vo
) Trc tin biu thc c kim tra
nu sai th
Sai kt thc vng lp while
biu thc
(khi lnh khng c thi hnh 1 ln no)
ng nu ng
thc hin khi lnh;
khi lnh lp li kim tra biu thc

Ra
+ Biu thc: c th l mt biu thc hoc nhiu biu thc con. Nu l nhiu biu thc
con th cch nhau bi du phy (,) v tnh ng sai ca biu thc c quyt nh bi biu thc
con cui cng.
+ Trong thn while (khi lnh) c th cha mt hoc nhiu cu trc iu khin khc.
+ Trong thn while c th s dng lnh continue chuyn n u vng lp (b qua cc
cu lnh cn li trong thn).
+ Mun thot khi vng lp while ty c th dng cc lnh break, goto, return nh
lnh for.
V d 11: Vit chng trnh in ra cu "Vi du su dung vong lap while" 3 ln.
Dng File Edit Search Run Compile Debug Project Option Window Help
1 /* Chuong trinh in ra cau "Vi du su dung vong lap while" 3 lan */
2
3 #include <stdio.h>
4 #include <conio.h>
5
6 #define MSG "Vi du su dung vong lap while.\n"
7
8 void main(void)
9 {
10 int i = 0;
11 while (i++ < 3)
12 printf("%s", MSG);
13 getch();
14 }
F1 Help Alt-F8 Next Msg Alt-F7 Prev Msg Alt - F9 Compile F9 Make F10 Menu
) Kt qu in ra mn hnh
Vi du su dung vong lap while. Bn thay 2 dng 11 v 12 bng cu lnh
Vi du su dung vong lap while. while(printf("%s", MSG), ++i < 3);
Vi du su dung vong lap while. Chy li chng trnh v quan st kt qu.
_
V d 12: Vit chng trnh tnh tng cc s nguyn t 1 n n, vi n c nhp vo t bn phm.
Dng File Edit Search Run Compile Debug Project Option Window Help
1 /* Chuong trinh tnh tong cac so nguyen tu 1 den n */
2
3 #include <stdio.h>
4 #include <conio.h>
5
Trng TH GII TIN HC 39 Nguyn Sn H, P5, Q3 T: 8.344.480 Website: www.infoworldschool.com
Gio trnh Lp trnh C cn bn Trang 57
6 void main(void)
7 {
8 int i = 0, in, is = 0;
9 printf("Nhap vao so n: ");
10 scanf("%d", &in);
11 while (i++ < in)
12 is = is + i; //hoac is += i;
13 printf("Tong: %d", is);
14 getch();
15 }
F1 Help Alt-F8 Next Msg Alt-F7 Prev Msg Alt - F9 Compile F9 Make F10 Menu
) Kt qu in ra mn hnh
Nhap vao so n : 5 Bn thay cc dng t 11 n 12 bng cu lnh:
Tong: 15. while(is = is+i, i++ < in);
_ Chy li chng trnh, quan st v nhn xt kt qu.
V d 13: Thay dng for(; (c = getchar()) != DAU_CHAM; ) v d 5 thnh dng while
((c = getchar()) != DAU_CHAM)
) Chy li chng trnh, quan st v nhn xt kt qu.
V d 14: v d 6, thay dng int dem; thnh dng int dem = 0; , thay dng for(idem=0;
(c = getchar()) != DAU_CHAM; ) thnh dng while ((c = getchar()) != DAU_CHAM)
) Chy li chng trnh, quan st v nhn xt kt qu.
V d 15: v d 7 v 8, thay dng for( ; ; ) thnh dng while(1)
) Chy li chng trnh, quan st v nhn xt kt qu.
6.2.5 Lnh dowhile
Vng lp thc hin lp li cho n khi biu thc sai.
C php lnh

do
khi lnh;
while (biu thc);
) t kha do, while phi vit bng ch thng
# Nu khi lnh bao gm t 2 lnh tr ln th phi t trong du { }
Lu
Vo
) Thc hin
khi lnh
khi lnh Kim tra biu thc
Nu ng th
ng lp li thc hin khi lnh
biu thc
Nu sai th
kt thc vng lp
Sai
(khi lnh c thi hnh 1 ln)
Ra

Trng TH GII TIN HC 39 Nguyn Sn H, P5, Q3 T: 8.344.480 Website: www.infoworldschool.com


Gio trnh Lp trnh C cn bn Trang 58
+ Biu thc: c th l mt biu thc hoc nhiu biu thc con. Nu l nhiu biu thc
con th cch nhau bi du phy (,) v tnh ng sai ca biu thc c quyt nh bi biu thc
con cui cng.
+ Trong thn dowhile (khi lnh) c th cha mt hoc nhiu cu trc iu khin khc.
+ Trong thn dowhile c th s dng lnh continue chuyn n u vng lp (b
qua cc cu lnh cn li trong thn).
+ Mun thot khi vng lp dowhile ty c th dng cc lnh break, goto, return.
V d 16: Vit chng trnh kim tra password.
Dng File Edit Search Run Compile Debug Project Option Window Help
1 /* Chuong trinh kiem tra mat khau */
2
3 #include <stdio.h>
4
5 # define PASSWORD 12345
6
7 void main(void)
8 {
9 int in;
10 do
11 {
12 printf("Nhap vao password: ");
13 scanf("%d", &in);
14 } while (in != PASSWORD)
15 }
F1 Help Alt-F8 Next Msg Alt-F7 Prev Msg Alt - F9 Compile F9 Make F10 Menu
) Kt qu in ra mn hnh
Nhap vao password: 1123 Bn thay cc dng t 10 n 14 bng cu lnh:
Nhap vao password: 12346 do{}while(printf("Nhap vao password: "), scanf("%d", &in),
Nhap vao password: 12345 in != PASSWORD);
Chy li chng trnh v quan st kt qu.

V d 17: Vit chng trnh nhp vo nm hin ti, nm sinh. In ra tuoi.


Dng File Edit Search Run Compile Debug Project Option Window Help
1 /* Chuong trinh in tuoi */
2
3 #include <stdio.h>
4
5 # define CHUC "Chuc ban vui ve (: >\n"
6
7 void main(void)
8 {
9 unsigned char choi;
10 int inamhtai, inamsinh;
11 do
12 {
13 printf("Nhap vao nam hien tai: ");
14 scanf("%d", inamhtai);
15 printf("Nhap vao nam sinh: ");
16 scanf("%d", inamsinh);
Trng TH GII TIN HC 39 Nguyn Sn H, P5, Q3 T: 8.344.480 Website: www.infoworldschool.com
Gio trnh Lp trnh C cn bn Trang 59
17 printf("Ban %d tuoi, %s", inamhtai inamsinh, CHUC);
18 printf("Ban co muon tiep tuc? (Y/N)\n");
19 choi = getch();
20 } while (choi == 'y' || choi == 'Y');
21 }
F1 Help Alt-F8 Next Msg Alt-F7 Prev Msg Alt - F9 Compile F9 Make F10 Menu
) Kt qu in ra mn hnh
Nhap vao nam hien tai: 2002 Bn li chng trnh vi s liu khc.
Nhap vao nam sinh: 1980 Quan st, nh gi v nhn xt kt qu.
Ban 22 tuoi, chuc ban vui ve (:>
Ban co muon tiep tuc? (Y/N)
_ (nu g y hoc Y tip tc thc hin
chng trnh, ngc li g cc phm
khc chng trnh s thot)
6.2.6 Vng lp lng nhau
V d 18: V hnh ch nht c bng cc du '*'
Dng File Edit Search Run Compile Debug Project Option Window Help
1 /* Ve hinh chu nhat dac */
2
3 #include <stdio.h>
4 #include <conio.h>
5
6 void main(void)
7 {
8 int i, ij, idai, irong;
9 printf("Nhap vao chieu dai: ");
10 scanf("%d", &idai);
11 printf("Nhap vao chieu rong: ");
12 scanf("%d", &irong);
13 for (i = 1; i <= irong; i++)
14 {
15 for (ij = 1; ij <= idai; ij++) //in mot hang voi chieu dai dau *
16 printf("*");
17 printf("\n"); //xuong dong khi in xong 1 hang
18 }
19 getch();
20 }
F1 Help Alt-F8 Next Msg Alt-F7 Prev Msg Alt - F9 Compile F9 Make F10 Menu
) Kt qu in ra mn hnh
Nhap vao chieu dai: 10 Bn li chng trnh vi s liu khc.
Nhap vao chieu rong: 5 Quan st, nh gi v nhn xt kt qu.
**********
**********
**********
**********
**********
_

Trng TH GII TIN HC 39 Nguyn Sn H, P5, Q3 T: 8.344.480 Website: www.infoworldschool.com


Gio trnh Lp trnh C cn bn Trang 60
V d 19: V hnh ch nht c c chiu rng = 10 hng. Hng th 1 = 10 s 0, hng th 2
= 10 s 1
Dng File Edit Search Run Compile Debug Project Option Window Help
1 /* Ve hinh chu nhat bang cac so tu 0 den 9 */
2
3 #include <stdio.h>
4 #include <conio.h>
5
6 void main(void)
7 {
8 int i = 0, ij;
9 while (i <= 9)
10 {
11 ij = 0; //khoi tao lai ij = 0 cho lan in ke tiep
12 while (ij++ <= 9) //in 1 hang 10 so i
13 printf("%d", i);
14 printf("\n"); //xuong dong khi in xong 1 hang
15 i++; //tang i len 1 cho vong lap ke tiep
16 }
17 getch();
18 }
19
F1 Help Alt-F8 Next Msg Alt-F7 Prev Msg Alt - F9 Compile F9 Make F10 Menu
) Kt qu in ra mn hnh
0000000000 Thay dng 11, 12 thnh cu lnh
1111111111 for (ij = 0; ij <= 9; ij++)
2222222222 Chy li chng trnh.
3333333333 Quan st, nh gi v nhn xt kt qu.
4444444444
5555555555
6666666666
7777777777
8888888888
9999999999
_
) Cc lnh lp for, while, dowhile c th lng vo chnh n, hoc lng vo ln
nhau. Nu khng cn thit khng nn lng vo nhiu cp d gy nhm ln khi lp trnh
cng nh kim sot chng trnh.
6.2.7 So snh s khc nhau ca cc vng lp
- Vng lp for thng s dng khi bit c s ln lp xc nh.
- Vng lp thng while, dowhile s dng khi khng bit r s ln lp.
- Khi gi vng lp while, dowhile, nu biu thc sai vng lp while s khng c
thc hin ln no nhng vng lp dowhile thc hin c 1 ln.
) S ln thc hin t nht ca while l 0 v ca dowhile l 1
6.3 Bi tp

1. Vit chng trnh in ra bng m ASCII


2. Vit chng trnh tnh tng bc 3 ca N s nguyn u tin.
Trng TH GII TIN HC 39 Nguyn Sn H, P5, Q3 T: 8.344.480 Website: www.infoworldschool.com
Gio trnh Lp trnh C cn bn Trang 61
3. Vit chng trnh nhp vo mt s nguyn ri in ra tt c cc c s ca s .
4. Vit chng trnh v mt tam gic cn bng cc du *
5. Vit chng trnh tnh tng nghch o ca N s nguyn u tin theo cng thc
S = 1 + 1/2 + 1/3 + + 1/N
6. Vit chng trnh tnh tng bnh phng cc s l t 1 n N.
7. Vit chng trnh nhp vo N s nguyn, tm s ln nht, s nh nht.
8. Vit chng trnh nhp vo N ri tnh giai tha ca N.
9. Vit chng trnh tm USCLN, BSCNN ca 2 s.
10. Vit chng trnh v mt tam gic cn rng bng cc du *.
11. Vit chng trnh v hnh ch nht rng bng cc du *.
12. Vit chng trnh nhp vo mt s v kim tra xem s c phi l s nguyn t hay
khng?
13. Vit chng trnh tnh s hng th n ca dy Fibonaci.
Dy Fibonaci l dy s gm cc s hng p(n) vi:
p(n) = p(n-1) + p(n-2) vi n>2 v p(1) = p(2) = 1
Dy Fibonaci s l: 1 1 2 3 5 8 13 21 34 55 89 144
14. Vit chng trnh tnh gi tr ca a thc
Pn = anxn + an-1xn-1 + + a1x1 + a0
Hng dn a thc c th vit li
Pn = ((anx + an-1)x + an-2)x + + a0
Nh vy trc tin tnh anx + an-1, ly kt qu nhn vi x, sau ly kt qu nhn vi
x cng thm an-2, ly kt qu nhn vi x n gi l bc ca a thc.
15. Vit chng trnh tnh xn vi x, n c nhp vo t bn phm.
16. Vit chng trnh nhp vo 1 s t 0 n 9. In ra ch s tng ng. V d: nhp vo
s 5, in ra "Nm".
17. Vit chng trnh phn tch mt s nguyn N thnh tch ca cc tha s nguyn t.
18. Vit chng trnh lp li nhiu ln cng vic nhp mt k t v in ra m ASCII ca
k t , khi no nhp s 0 th dng.
19. Vit chng trnh tm c s chung ln nht v bi s chung nh nht ca 2 s
nguyn.
20. Vit chng trnh in l c nc M.
21. Vit chng trnh tnh dn s ca mt thnh ph sau 10 nm na, bit rng dn s
hin nay l 6.000.000, t l tng dn s hng nm l 1.8% .
22. Vit chng trnh tm cc s nguyn gm 3 ch s sao cho tch ca 3 ch s bng
tng 3 ch s. V d: 1*2*3 = 1+2+3.
23. Vit chng trnh tm cc s nguyn a, b, c, d khc nhau trong khong t 0 ti 10
tha mn iu kin a*d*d = b*c*c*c
24. Vit chng trnh tnh t hp N chp K (vi K <= N)
C=((N-k+1) * (N-k+2)*N)/1*2*3**k

Trng TH GII TIN HC 39 Nguyn Sn H, P5, Q3 T: 8.344.480 Website: www.infoworldschool.com


Gio trnh Lp trnh C cn bn Trang 62
Trong C l mt tch gm k phn t vi phn t th I l (N-k+1)/I. vit chng
trnh ny, bn dng vng lp For vi bin iu khin I t gi tr u l 1 tng n gi tr cui l k
kt hp vi vic nhn dn vo kt qu C.
25. Vit chng trnh gii bi ton c in sau:
Trm tru, trm c
Tru ng n nm
Tru nm n ba,
Ba tru gi n mt
Hi mi loi tru c bao nhiu con.
26. Vit chng trnh gii bi ton c in sau:
Va g va ch 36 con
B li cho trn, m 100 chn
Hi c bao nhiu g, bao nhiu ch
27. Vit chng trnh in ra bng cu chng
28. Vit chng trnh xc nh xem mt t giy c dy 0.1 mm. Phi gp i t giy
bao nhiu ln n c dy 1m.
29. Vit chng trnh tm cc s nguyn t t 2 n N, vi N c nhp vo.
30. Vit chng trnh lp i lp li cc cng vic sau:
- Nhp vo mt k t trn bn phm.
- Nu l ch thng th in ra chnh n v ch HOA tng ng.
- Nu l ch HOA th in ra chnh n v ch thng tng ng.
- Nu l k s th in ra chnh n.
- Nu l mt k t iu khin th kt thc chng trnh
31. Vit chng trnh nhp vo x, n tnh:
- x + x + ... + x (n du cn)
x xn
-1+ + ...
2 n +1
32. Vit chng trnh nhp vo N s nguyn, m xem c bao nhiu s m, bao nhiu s
dng v bao nhiu s khng.

Trng TH GII TIN HC 39 Nguyn Sn H, P5, Q3 T: 8.344.480 Website: www.infoworldschool.com


Gio trnh Lp trnh C cn bn Trang 63

Bi 7 :
HM

7.1 Mc tiu
Sau khi hon tt bi ny hc vin s hiu v vn dng cc kin thc k nng c bn sau:
- Khi nim, cch khai bo v hm.
- Cch truyn tham s, tham bin, tham tr.
- S dng bin cc b, ton cc trong hm.
- S dng tin x l #define
7.2 Ni dung
Hm l mt chng trnh con thc hin mt khi cng vic c lp i lp li nhiu ln trong
khi chy chng trnh hoc dng tch mt khi cng vic c th chng trnh phc tp.
7.2.1 Cc v d v hm
V d 1:
Dng File Edit Search Run Compile Debug Project Option Window Help
1 #include <stdio.h>
2 #include <conio.h>
3
4 // khai bao prototype
5 void line();
6
7 // ham in 1 dong dau
8 void line()
9 {
10 int i;
11 for(i = 0; i < 19; i++)
12 printf("*");
13 printf("\n");
14 }
15
16 void main(void)
17 {
18 line();
19 printf("* Minh hoa ve ham *");
20 line();
21 getch();
22 }
F1 Help Alt-F8 Next Msg Alt-F7 Prev Msg Alt - F9 Compile F9 Make F10 Menu
) Kt qu in ra mn hnh
*****************
* Minh hoa ve ham *
*****************
_

Trng TH GII TIN HC 39 Nguyn Sn H, P5, Q3 T: 8.344.480 Website: www.infoworldschool.com


Gio trnh Lp trnh C cn bn Trang 64

# Gii thch chng trnh


Dng 8 n dng 14: nh ngha hm line, hm ny khng tr v gi tr, thc hin cng vic
in ra 19 du sao.
Dng 5: khai bo prototype, sau tn hm phi c du chm phy
Trong hm line c s dng bin i, bin i l bin cc b ch s dng c trong phm vi hm line.
Dng 18 v 20: gi thc hin hm line.

* Trnh t thc hin chng trnh

void main(void)
{ gi thc hin hm line void line()
line(); {
printf("* Minh hoa ve ham *"); int i;
line(); for(i = 0; i < 19; i++)
getch(); printf("*");
} quay v chng trnh chnh printf("\n");
thc hin lnh k tip }

/ Khng c du chm phy sau tn hm, phi c cp du ngoc ( ) sau tn hm nu


hm khng c tham s truyn vo. Phi c du chm phy sau tn hm khai bo prototype.
Nn khai bo prototype cho d hm c gi nm trc hay sau cu lnh gi n.
V d 2:

Dng File Edit Search Run Compile Debug Project Option Window Help
1 #include <stdio.h>
2 #include <conio.h>
3
4 // khai bao prototype
5 int power(int, int);
6
7 // ham tinh so mu
8 int power(int ix, int in)
9 {
10 int i, ip = 1;
11 for(i = 1; i <= in; i++)
12 ip *= ix;
13 return ip;
14 }
15
16 void main(void)
17 {
18 printf("2 mu 2 = %d.\n", power(2, 2));
19 printf("2 mu 3 = %d.\n", power(2, 3));
20 getch();
}
F1 Help Alt-F8 Next Msg Alt-F7 Prev Msg Alt - F9 Compile F9 Make F10 Menu

Trng TH GII TIN HC 39 Nguyn Sn H, P5, Q3 T: 8.344.480 Website: www.infoworldschool.com


Gio trnh Lp trnh C cn bn Trang 65

) Kt qu in ra mn hnh
2 mu 2 = 4.
2 mu 3 = 8.
_

# Gii thch chng trnh


Hm power c hai tham s truyn vo l ix, in c kiu int v kiu tr v cng c kiu int.
Dng 13: return ip: tr v gi tr sau khi tnh ton
Dng 18: i mc 2 v 3 c kiu tr v l int sau khi thc hin gi power.
Hai tham s ix, in ca hm power l dng truyn tham tr.

* Trnh t thc hin chng trnh truyn gi tr vo hm

void main(void)
{ gi thc hin hm power
printf("2 mu 2 = %d.\n", power(2, 2)); int power(int ix, int in)
{
printf("2 mu 3 = %d.\n", power(2, 3)); int i, ip = 1;
getch(); for(i = 1; i <= in; i++)
} quay v chng trnh ip *= ix;
chnh thc hin lnh k return ip;
tip }

tr v gi tr kiu int xut ra mn hnh


) Quy tc t tn hm ging tn bin, hng Mi i s cch nhau = du phy km
theo kiu d liu tng ng.
V d 3:
Dng File Edit Search Run Compile Debug Project Option Window Help
1 #include <stdio.h>
2 #include <conio.h>
3
4 // khai bao prototype
5 void time(int & , int &);
6
7 // ham doi phut thanh gio:phut
8 void time(int &ig, int &ip)
9 {
10 ig = ip / 60;
11 ip %= 60;
12 }
13
14 void main(void)
15 {
16 int igio, iphut;

Trng TH GII TIN HC 39 Nguyn Sn H, P5, Q3 T: 8.344.480 Website: www.infoworldschool.com


Gio trnh Lp trnh C cn bn Trang 66
17 printf("Nhap vao so phut : ");
18 scanf("%d", &iphut);
19 time(igio, iphut);
20 printf("%02d:%02d\n", igio, iphut);
21 getch();
22 }
F1 Help Alt-F8 Next Msg Alt-F7 Prev Msg Alt - F9 Compile F9 Make F10 Menu
) Kt qu in ra mn hnh
Nhap vao so phut: 185
03:05
_

# Gii thch chng trnh


Hm time c hai tham s truyn vo l ix, in c kiu int. 2 tham s ny c ton t a ch &
i trc cho bit 2 tham s ny l dng truyn tham bin.

* Trnh t thc hin chng trnh truyn gi tr vo hm


iphut = 185
void main(void) igio = #
{
int igio, iphut; gi thc hin hm time void time(int &ig, int &ip)
printf("Nhap vao so phut : "); {
scanf("%d", &iphut); ig = ip / 60;
ip %= 60;
time(igio, iphut); quay v chng trnh chnh }
thc hin lnh k tip
igio = ig = 3
iphut = ip = 5
printf("%02d:%02d\n", igio, iphut);
getch();
}
7.2.2 Tham s dng tham bin v tham tr
V d 4:
void thamtri(int ix, int iy) void main(void) Kt qu in ra:
{ {
ix += 1; //cong ix them 1 int ia = 5, ib = 5;
iy += 1; //cong iy them 1 thamtri(ia, ib);
} printf("a = %d, b = %d", ia, ib); a = 5, b = 5
void thambien(int &ix, int &iy) thambien(ia, ib);
{ printf("a = %d, b = %d", ai, ib); a = 6, b = 6
ix += 1; //cong ix them 1 }
iy += 1; //cong iy them 1
}
) i vi hm s dng lnh return bn ch c th tr v duy nht 1 gi tr m thi. c th
tr v nhiu gi tr sau khi gi hm bn s dng hm truyn nhiu tham s dng tham bin.

Trng TH GII TIN HC 39 Nguyn Sn H, P5, Q3 T: 8.344.480 Website: www.infoworldschool.com


Gio trnh Lp trnh C cn bn Trang 67
7.2.3 S dng bin ton cc
V d 5:
Dng File Edit Search Run Compile Debug Project Option Window Help
1 #include <stdio.h>
2 #include <conio.h>
3
4 // khai bao prototype
5 void oddeven();
6 void negative();
7
8 //khai bao bien toan cuc
9 int inum;
10
11 void main(void)
12 {
13 printf("Nhap vao 1 so nguyen : ");
14 scanf("%d", &inum);
15 oddeven();
16 negative();
17 getch();
18 }
19
20 // ham kiem tra chan le
21 void oddeven()
22 {
23 if (inum % 2)
24 printf("%d la so le.\n", inum);
25 else
26 printf("%d la so chan.\n", inum);
27 }
28
29 //ham kiem tra so am
30 void negative()
31 {
32 if (inum < 0)
33 printf("%d la so am.\n", inum);
34 else
35 printf("%d la so duong.\n", inum);
36 }
F1 Help Alt-F8 Next Msg Alt-F7 Prev Msg Alt - F9 Compile F9 Make F10 Menu
) Kt qu in ra mn hnh
Nhap vao 1 so nguyen: 3
3 la so le.
3 la so duong.
_

Trng TH GII TIN HC 39 Nguyn Sn H, P5, Q3 T: 8.344.480 Website: www.infoworldschool.com


Gio trnh Lp trnh C cn bn Trang 68

# Gii thch chng trnh


Chng trnh trn gm 2 hm oddeven v negative, 2 hm ny bn thy khng c tham s
truyn bin inum vo x l nhng vn cho kt qu ng. Do chng trnh s dng bin inum
ton cc (dng.9) nn bin ny c nh hng n ton b chng trnh mi khi gi v s dng
n. Xt tnh hung sau: Gi s trong hm negative ta khai bo bin inum c kiu int nh sau:
void negative()
{
int inum;
.
}
Khi chng trnh s cho kt qu sai! Do cc cu lnh trong hm negative s dng bin inum
s s dng bin inum khai bo trong hm negative v lc ny bin inum ton cc khng c tc dng
i vi cc cu lnh trong hm ny. Bin inum khai bo trong hm negative ch c nh hng trong
phm vi hm v chu trnh sng ca n bt u t lc gi hm n khi thc hin xong.
) Cn thn khi t tn bin, xc nh r phm vi ca bin khi s dng c th d dng
kim sot chng trnh.

V d 6:
Dng File Edit Search Run Compile Debug Project Option Window Help
1 #include <stdio.h>
2 #include <conio.h>
3
4 #define PI 3.14
5
6 // khai bao prototype
7 float area();
8
9 //khai bao bien toan cuc
10 float frad;
11
12 void main(void)
13 {
14 printf("Nhap vao ban kinh hinh cau : ");
15 scanf("%f", &frad);
16 printf("Dien tich hinh cau: %10.3f.\n", area());
17 getch();
18 }
19
20 // ham tinh dien tich hinh cau
21 float area()
22 {
23 return (4*PI*frad*frad);
24 }
F1 Help Alt-F8 Next Msg Alt-F7 Prev Msg Alt - F9 Compile F9 Make F10 Menu
) Kt qu in ra mn hnh
Nhap vao ban kinh hinh cau: 3.2
Dien tich hinh cau: 128.614
_

Trng TH GII TIN HC 39 Nguyn Sn H, P5, Q3 T: 8.344.480 Website: www.infoworldschool.com


Gio trnh Lp trnh C cn bn Trang 69
7.2.4 Dng dn hng #define
Sau y l mt vi v d dng dn hng #define nh ngha hm n gin
#define AREA_CIRCLE (frad) (4*PI*frad*frad) //tinh dien tich hinh cau
#define SUM (x, y) (x + y) //cong 2 so
#define SQR (x) (x*x) //tinh x binh phuong
#define MAX(x, y) (x > y) ? x : y //tim so lon nhat giua x va y
#define ERROR (s) printf("%s.\n", s) //in thong bao voi chuoi s
V d 7: Trong v d 6 xa t dng 20 n dng 24, xa dng 6, 7; thm dng
AREA_CIRCLE (frad) (4*PI+frad*frad) vo sau dng 5.
Sa dng printf("Dien tich hinh cau: %10.3f.\n", area()); thnh printf("Dien tich
hinh cau: %10.3f.\n", AREA_CIRCLE(frad));
Chy li chng trnh, quan st v nhn xt kt qu.
V d 8:
Dng File Edit Search Run Compile Debug Project Option Window Help
1 #include <stdio.h>
2 #include <conio.h>
3
4 #define MAX(x, y) (x > y) ? x : y
5
6 void main(void)
7 {
8 float a = 4.5, b = 6.1;
9 printf("So lon nhat la: %5.2f.\n", MAX(a, b));
10 getch();
11 }
F1 Help Alt-F8 Next Msg Alt-F7 Prev Msg Alt - F9 Compile F9 Make F10 Menu
) Kt qu in ra mn hnh
So lon nhat la: 6.10 Thm vo dng 8 gi tr c = 10
_ Sa li dng 9: MAX(a, b) thnh MAX(MAX(a, b), c)
Chy li chng trnh, quan st v nhn xt kt qu

7.3 Bi tp

1. Vit hm tnh n!
2. Vit hm tnh tng S = 1+2+.+n.
3. Vit hm kim tra s nguyn t.
4. Vit hm tnh s hng th n trong dy Fibonacci.
5. Vit hm tm s ln nht trong 2 s.

Trng TH GII TIN HC 39 Nguyn Sn H, P5, Q3 T: 8.344.480 Website: www.infoworldschool.com


Gio trnh Lp trnh C cn bn Trang 70

Bi 8 :
MNG V CHUI

8.1 Mc tiu
Sau khi hon tt bi ny hc vin s hiu v vn dng cc kin thc k nng c bn sau:
- ngha, cch khai bo mng, chui.
- Nhp, xut mng, chui.
- Khi to mng chui.
- Mt s k thut thao tc trn mng, chui.
- Dng mng lm tham s cho hm.
- Mt s hm x l chui
8.2 Ni dung

8.2.1 Mng
L tp hp cc phn t c cng d liu. Gi s bn mun lu n s nguyn tnh trung
bnh, bn khng th khai bo n bin lu n gi tr ri sau tnh trung bnh.
V d 1 : bn mun tnh trung bnh 10 s nguyn nhp vo t bn phm, bn s khai bo 10
bin: a, b, c, d, e, f, g, h, i, j c kiu int v lp thao tc nhp cho 10 bin ny nh sau:
printf("Nhap vao bien a: ");
scanf("%d", &a);
10 bin bn s thc hin 2 lnh trn 10 ln, sau tnh trung bnh:
(a + b + c + d + e + f + g + h + i + j)/10
) iu ny ch ph hp vi n nh, cn i vi n ln th kh c th thc hin c. V vy
khi nim mng c s dng
8.2.1.1 Cch khai bo mng
V d 2 : int ia[10]; vi int l kiu mng, ia l tn mng, 10 s phn t mng
ngha: Khai bo mt mng s nguyn gm 10 phn t, mi phn t c kiu int.

Mi phn t trong mng c kiu int

ia

10 phn t
8.2.1.2 Tham chiu n tng phn t mng
Sau khi mng c khai bo, mi phn t trong mng u c ch s tham chiu. Ch
s bt u t 0 n n-1 (vi n l kch thc mng). Trong v d trn, ta khai bo mng 10 phn
t th ch s bt u t 0 n 9.
0 1 2 3 4 5 6 7 8 9
ia

ia[2] ia[7]
ia[2], ia[7] l phn t th 3, 8 trong mng xem nh l mt bin kiu int.

Trng TH GII TIN HC 39 Nguyn Sn H, P5, Q3 T: 8.344.480 Website: www.infoworldschool.com


Gio trnh Lp trnh C cn bn Trang 71
8.2.1.3 Nhp d liu cho mng
for (i = 0; i < 10; i++) //vng for c gi tr i chy t 0 n 9
{
printf("Nhap vao phan tu thu %d: ", i + 1);
scanf("%d", &ia[i]);
}
8.2.1.4 c d liu t mng
for(i = 0; i < 10; i++)
printf("%3d ", ia[i]);
V d 3 : Vit chng trnh nhp vo n s nguyn. Tnh v in ra trung bnh cng.
Dng File Edit Search Run Compile Debug Project Option Window Help
1 /* Tinh trung binh cong n so nguyen */
2
3 #include <stdio.h>
4 #include <conio.h>
5
6 void main(void)
7 {
8 int ia[50], i, in, isum = 0;
9 printf("Nhap vao gia tri n: ");
10 scanf("%d", &in);
11
12 //Nhap du lieu vao mang
13 for(i = 0; i < in; i++)
14 {
15 printf("Nhap vao phan tu thu %d: ", i + 1);
16 scanf("%d", &ia[i]); //Nhap gia tri cho phan tu thu i
17 }
18
19 //Tinh tong gia tri cac phan tu
20 for(i = 0; i < in; i++)
21 isum += ia[i]; //cong don tung phan tu vao isum
22
23 printf("Trung binh cong: %.2f\n", (float) isum/in);
24 getch();
25 }
F1 Help Alt-F8 Next Msg Alt-F7 Prev Msg Alt - F9 Compile F9 Make F10 Menu
) Kt qu in ra mn hnh
Nhap vao gia tri n: 3 Bn c th gp 2 lnh for thnh mt va nhp va tnh tng, a
Nhap vao phan tu thu 1: 7 hng 21 sau hng 16 v b cc hng 19, 20, 21.
Nhap vao phan tu thu 2: 3 Chy v quan st kt qu.
Nhap vao phan tu thu 3: 6
Trung binh cong: 5.33
_

Trng TH GII TIN HC 39 Nguyn Sn H, P5, Q3 T: 8.344.480 Website: www.infoworldschool.com


Gio trnh Lp trnh C cn bn Trang 72

/ iu g s xy ra cho on chng trnh trn nu bn nhp n > 50 trong khi bn ch


khai bo mng ia ti a l 50 phn t. Bn dng lnh if ngn chn iu ny trc khi
vo thc hin lnh for. Thay dng 9, 10 bng on lnh sau :
do
{
printf("Nhap vao gia tri n: ");
scanf("%d", &in);
} while (in <= 0 || in > 50); //chi chap nhan gia tri nhap vao trong khoang 1..50

) Chy chng trnh v nhp n vi cc gi tr -6, 0, 51, 6. Quan st kt qu.


8.2.1.5 S dng bin kiu khc
Ngoi kiu int, bn c th khai bo mng kiu char, float, double
V d 4 : char cloai[20]; float ftemp[10]; cch tham chiu, nhp d liu, c d liu nh
trn.
8.2.1.6 K thut Sentinal
S dng k thut ny nhp liu gi tr cho cc phn t mng m khng bit r s
lng phn t s nhp vo l bao nhiu (khng bit s n).
V d 5 : Vit chng trnh nhp vo 1 dy s dng ri in tng cc s dng .
Phc ha li gii: Chng trnh yu cu nhp vo dy s dng m khng bit trc s
lng phn t cn nhp l bao nhiu, v vy chm dt nhp liu khi tha mn bng cch nhp
vo s m hoc khng.
Dng File Edit Search Run Compile Debug Project Option Window Help
1 /* Nhap vao day so nguyen duong, in ra day chan, day le */
2
3 #include <stdio.h>
4 #include <conio.h>
5 #define MAX 50
6
7 void main(void)
8 {
9 float fa[MAX], fsum = 0;
10 int i = 0;
11 do
12 {
13 printf("Nhap vao phan tu thu %d: ", i + 1);
14 scanf("%f", &fa[i]); //Nhap gia tri cho phan tu thu i
15 } while (fa[i++] > 0); //con nhap lieu khi gia tri phan tu > 0
16
17 i--; //giam i di 1 lan cuoi cung tang 1 truoc khi thoat
18 //Tinh tong
19 for(int ij = 0; ij < i; ij++)
20 fsum += fa[ij]; //cong don tung phan tu vao isum
21
22 printf("Tong : %5.2f\n", fsum);
23 getch();
24 }
F1 Help Alt-F8 Next Msg Alt-F7 Prev Msg Alt - F9 Compile F9 Make F10 Menu

Trng TH GII TIN HC 39 Nguyn Sn H, P5, Q3 T: 8.344.480 Website: www.infoworldschool.com


Gio trnh Lp trnh C cn bn Trang 73

) Kt qu in ra mn hnh
Nhap vao phan tu thu 1: 1.2 Bn chy li chng trnh v th li vi s liu khc.
Nhap vao phan tu thu 2: 3 Quan st kt qu.
Nhap vao phan tu thu 3: 4.6
Nhap vao phan tu thu 4: -9
Tong : 8.80
_

/ iu g s xy ra cho on chng trnh trn nu bn nhp s lng phn t vt


qu 50 trong khi bn ch khai bo mng fa ti a l MAX = 50 phn t. Bn dng lnh break
thot khi vng lp dowhile trc khi bc sang phn t th 51. Thm on lnh sau
vo trc dng 13:
if (i >= MAX) //kiem tra phan tu buoc sang 51
{
printf("Mang da day!\n"); //thong bao "Mang da day"
i++; //tang i len 1 do dong 17 giam i xuong 1
break; //thoat khoi vong lap dowhile
}

) Sa dng 5 thnh #define MAX 4. Chy chng trnh v nhp cc s 1.2, 3.5, 6.5, 4.
Quan st kt qu.

8.2.1.7 Khi to mng


V d 6 : C 4 loi tin 1, 5, 10, 25 v 50 ng. Hy vit chng trnh nhp vo s tin
sau cho bit s s tin trn gm my loi tin, mi loi bao nhiu t.
Phc ha li gii: S tin l 246 ng gm 4 t 50 ng, 1 t 25 ng, 2 t 10 ng, 0 t
5 ng v 1 t 1 ng, Ngha l bn phi xt loi tin ln trc, nu ht kh nng mi xt tip
loi k tip.
Dng File Edit Search Run Compile Debug Project Option Window Help
1 /* Nhap vao so tien va doi tien ra cac loai 50, 25, 10, 5, 1 */
2
3 #include <stdio.h>
4 #include <conio.h>
5 #define MAX 5
6
7 void main(void)
8 {
9 int itien[MAX] = {50, 25, 10, 5, 1}; //Khai bao va khoi tao mang voi 5 phan tu
10 int i , isotien, ito;
11 printf("Nhap vao so tien: ");
12 scanf("%d", &isotien); //Nhap vao so tien
13 for (i = 0; i < MAX; i++)
14 {
15 ito = isotien/itien[i]; //Tim so to cua loai tien thu i
16 printf("%4d to %2d dong\n", ito, itien[i]);
17 isotien = isotien%itien[i]; //So tien con lai sau khi da loai tru cac loai tien da co
18 }

Trng TH GII TIN HC 39 Nguyn Sn H, P5, Q3 T: 8.344.480 Website: www.infoworldschool.com


Gio trnh Lp trnh C cn bn Trang 74
19 getch();
20 }
F1 Help Alt-F8 Next Msg Alt-F7 Prev Msg Alt - F9 Compile F9 Make F10 Menu
) Kt qu in ra mn hnh
Nhap vao so tien: 246 Bn chy li chng trnh v th li vi s liu khc.
4 t 50 ng Quan st kt qu.
1 t 25 ng
2 t 10 ng
0 t 5 ng
1 t 1 ng
_

/ iu g s xy nu s phn t mng ln hn s mc, s phn t di ra khng c


khi to s in vo s 0. Nu s phn t nh hn s mc khi to trnh bin dch s bo li.
V d 7 : int itien[5] = {50, 25}, phn t itien[0] s c gi tr 50, itien[1] c gi tr 25,
itien[2], itien[3], itien[4] c gi tr 0.
int itien[3] = {50, 25, 10, 5, 1} trnh bin dch bo li
8.2.1.8 Khi to mng khng bao hm kch thc
Trong v d trn gi s ta khai bo int itien[] = {50, 25, 10, 5, 1}. Khi trnh bin dch
s m s mc trong danh sch khi to v dng con s lm kch thc mng.
8.2.1.9 Mng nhiu chiu
V d 8 : khai bo mng 2 chiu int ia[5][10]; vi int l kiu mng, ia l tn mng,
s phn t mng l 5 x 10.
ngha: Khai bo mt mng 2 chiu s nguyn gm 50 phn t, mi phn t c kiu int.
Mi phn t trong mng c kiu int
ia

5 hng

10 ct
8.2.1.10 Tham chiu n tng phn t mng 2 chiu
Sau khi c khai bo, mi phn t trong mng 2 chiu u c 2 ch s tham chiu,
ch s hng v ch s ct. Ch s hng bt u t 0 n s hng 1 v ch s ct bt u t 0
n s ct 1. Tham chiu n mt phn t trong mng 2 chiu ia: ia[ch s hng][ch s ct]
ia 0 1 2 3 4 5 6 7 8 9
0
1
2
3
4

ia[3][2] ia[1][5] ia[4][8]


ia[3][2] l phn t ti hng 3 ct 2 trong mng 2 chiu xem nh l mt bin kiu int.
Trng TH GII TIN HC 39 Nguyn Sn H, P5, Q3 T: 8.344.480 Website: www.infoworldschool.com
Gio trnh Lp trnh C cn bn Trang 75
8.2.1.11 Nhp d liu cho mng 2 chiu
for (i = 0; i < 5; i++) //vng for c gi tr i chy t 0 n 4 cho hng
for (ij = 0; ij < 10; ij++) //vng for c gi tr ij chy t 0 n 9 cho ct
{
printf("Nhap vao phan tu ia[%d][%d]: ", i + 1, ij + 1);
scanf("%d", &ia[i][ij]);
}
* Th t nhp d liu vo mng 2 chiu
ia 0 1 2 3 4 5 6 7 8 9
0
1
2
3
4
8.2.1.12 c d liu t mng 2 chiu
V d 9 : in gi tr cc phn t mng 2 chiu ra mn hnh.
for (i = 0; i < 5; i++) //vng for c gi tr i chy t 0 n 4 cho hng
{
for (ij = 0; ij < 10; ij++) //vng for c gi tr ij chy t 0 n 9 cho ct
printf("%3d ", ia[i][ij]);
printf("\n"); //xung dng in hng k tip
}
V d 10 : Vit chng trnh nhp vo 1 ma trn s nguyn n x n. In ra ma trn va nhp
vo v ma trn theo th t ngc li.
Dng File Edit Search Run Compile Debug Project Option Window Help
1 /* Tinh trung binh cong n so nguyen */
2
3 #include <stdio.h>
4 #include <conio.h>
5 #define MAX 50;
6
7 void main(void)
8 {
9 int ia[MAX][MAX], i, ij, in;
10 printf("Nhap vao cap ma tran: ");
11 scanf("%d", &in);
12
13 //Nhap du lieu vao ma tran
14 for (i = 0; i < in; i++) //vng for c gi tr i chy t 0 n in-1 cho hng
15 for (ij = 0; ij < in; ij++) //vng for c gi tr ij chy t 0 n in-1 cho ct
16 {
17 printf("Nhap vao phan tu ia[%d][%d]: ", i + 1, ij + 1);
18 scanf("%d", &ia[i][ij]);
19 }
20
21 //In ma tran
22 for (i = 0; i < in; i++) //vng for c gi tr i chy t 0 n in-1 cho hng
23 {
Trng TH GII TIN HC 39 Nguyn Sn H, P5, Q3 T: 8.344.480 Website: www.infoworldschool.com
Gio trnh Lp trnh C cn bn Trang 76
24 for (ij = 0; ij < in; ij++) //vng for c gi tr ij chy t 0 n in-1 cho ct
25 printf("%3d ", ia[i][ij]);
26 printf("\n"); //xung dng in hng k tip
27 }
28 printf("\n"); //Tao khoang cach giua 2 ma tran
29
30 //In ma tran theo thu tu nguoc
31 for (i = in-1; i >= 0; i--) //vng for c gi tr i chy t in-1 n 0 cho hng
32 {
33 for (ij = in-1; ij >= 0 in; ij--) //vng for c gi tr ij chy t in-1 n 0 cho ct
34 printf("%3d ", ia[i][ij]);
35 printf("\n"); //xung dng in hng k tip
36 }
37 getch();
38 }
F1 Help Alt-F8 Next Msg Alt-F7 Prev Msg Alt - F9 Compile F9 Make F10 Menu
) Kt qu in ra mn hnh
Nhap vao cap ma tran: 2 Chy v th li chng trnh vi n = 3, 5.
Nhap vao phan tu ia[1][1]: 7 Quan st kt qu.
Nhap vao phan tu ia[1][2]: 4 - Sa li chng trnh trn cho php nhp vo ma trn m x n..
Nhap vao phan tu ia[2][1]: 6 Ngha l ma trn c m hng v n ct. Bn sa li chng trnh
Nhap vao phan tu ia[2][2]: 15 bng cch cho nhp vo gi tr m v n v sa li vng for cho
7 4 hng chy m ln v vng for cho ct chy n ln.
6 15

15 6
4 7
_

/ khc phc tnh trng ngi dng nhp vo cp ma trn > MAX, Bn xem li
mc 3.1.4.
8.2.1.13 S dng bin kiu khc trong mng 2 chiu
Nh mc 3.1.5.
8.2.1.14 Khi to mng 2 chiu
V d 11 : V ch H ln.
Dng File Edit Search Run Compile Debug Project Option Window Help
1 /* Chuong trinh ve chu H lon */
2
3 #include <stdio.h>
4 #include <conio.h>
5 #define MAX 5
6
7 int H[MAX][MAX] = {{1, 0, 0, 0, 1},
8 {1, 0, 0, 0, 1},
9 {1, 1, 1, 1, 1},
10 {1, 0, 0, 0, 1},

Trng TH GII TIN HC 39 Nguyn Sn H, P5, Q3 T: 8.344.480 Website: www.infoworldschool.com


Gio trnh Lp trnh C cn bn Trang 77
11 {1, 0, 0, 0, 1}};
12 void main(void)
13 {
14 int i , ij;
15 for (i = 0; i < MAX; i++)
16 {
17 for (ij = 0; ij < MAX; ij++)
18 if (H[i][ij])
19 printf("!");
20 else
21 printf(" ");
22 printf("\n");
23 }
24 getch();
25 }
F1 Help Alt-F8 Next Msg Alt-F7 Prev Msg Alt - F9 Compile F9 Make F10 Menu
) Kt qu in ra mn hnh
! ! Bn sa li chng trnh in ra cha C, B
! !
!!!!!
! !
! !
_
8.2.1.15 Dng mng 1 chiu lm tham s cho hm
V d 12 : Tm s ln nht
Dng File Edit Search Run Compile Debug Project Option Window Help
1 /* Chuong trinh tim so lon nhat su dung ham */
2
3 #include <stdio.h>
4 #include <conio.h>
5
6 #define MAX 20
7
8 //Khai bao prototype
9 int max(int, int);
10
11 //ham tim so lon nhat trong mang 1 chieu
12 int max(int ia[], int in)
13 {
14 int i, imax;
15 imax = ia[0]; //cho phan tu dau tien la max
16 for (i = 1; i < in; i++)
17 if (imax < ia[i]) //neu so dang xet > max
18 imax = ia[i]; //gan so nay cho max
19 return imax; //tra ve ket qua so lon nhat
20 }
21
22 void main(void)
23 {
24 int ia[MAX];
Trng TH GII TIN HC 39 Nguyn Sn H, P5, Q3 T: 8.344.480 Website: www.infoworldschool.com
Gio trnh Lp trnh C cn bn Trang 78
25 int i = 0, inum;
26 do
27 {
28 printf("Nhap vao mot so: ");
29 scanf("%d", &ia[i]);
30 } while (ia[i++] != 0);
31 i--;
32 inum = max(ia, i);
33 printf("So lon nhat la: %d.\n", inum);
34 getch();
35 }
F1 Help Alt-F8 Next Msg Alt-F7 Prev Msg Alt - F9 Compile F9 Make F10 Menu
) Kt qu in ra mn hnh
Nhap vao mot so: 12 Chy li chng trnh v th li vi s liu khc.
Nhap vao mot so: 45 Thc hin mt s thay i sau:
Nhap vao mot so: 3 - Di chuyn dng int a[MAX]; ln sau dng s 10
Nhap vao mot so: 0 - Sa dng int max(int, int); thnh int max(int);
So lon nhat la: 45 - Sa dng int max(int a[], int n); thnh int max(int n);
_ - Sa dng num = max(a, i); thnh num = max(i);
Chy li chng trnh, quan st, nhn xt v nh gi kt qu.

) Gii thch chng trnh


Chng trnh ban u hm max c hai tham s truyn vo v kt qu tr v l gi tr max
c kiu nguyn, mt tham s l mng 1 chiu kiu int v mt tham s c kiu int. Vi chng
trnh sau khi sa hm max ch cn mt tham s truyn vo nhng cho kt qu nh nhau. Do sau
khi sa chng trnh mng a[MAX] c khai bo li l bin ton cc nn hm max khng cn
truyn tham s mng vo cng c th s dng c. Tuy vy, khi lp trnh bn nn vit nh
chng trnh ban u l truyn tham s mng vo (dng tng qut) hm max c th thc hin
c trn nhiu mng khc nhau. Cn vi chng trnh sa li bn ch s dng hm max c
vi mng a m thi.
V d 13 : Bn khai bo cc mng sau ia[MAX], ib[MAX], ic[MAX]. tm gi tr ln
nht ca tng mng. Bn ch cn gi hm
- imax_a = max(ia, i);
- imax_b = max(ib, i);
- imax_c = max(ic, i);
Vi chng trnh sa li bn khng th tm c s ln nht ca mng b v c.
) Bn lu rng khi truyn mng sang hm, khng to bn sao mng mi. V vy
mng truyn sang hm c dng tham bin. Ngha l gi tr ca cc phn t trong mng s b
nh hng nu c s thay i trn chng.
V d 14 : Tm s ln nht ca 3 mng a, b, c
Dng File Edit Search Run Compile Debug Project Option Window Help
1 /* Chuong trinh tim so lon nhat su dung ham */
2
3 #include <stdio.h>
4 #include <conio.h>
5
6 #define MAX 20
7
8 //Khai bao prototype
9 int max(int, int);
Trng TH GII TIN HC 39 Nguyn Sn H, P5, Q3 T: 8.344.480 Website: www.infoworldschool.com
Gio trnh Lp trnh C cn bn Trang 79
10 int input(int);
11
12 //ham tim phan tu lon nhat trong mang 1 chieu
13 int max(int ia[], int in)
14 {
15 int i, imax;
16 imax = ia[0]; //cho phan tu dau tien la max
17 for (i = 1; i < in; i++)
18 if (max < ia[i]) //neu so dang xet > max
19 max = ia[i]; //gan so nay cho max
20 return imax; //tra ve ket qua so lon nhat
21 }
22
23 //ham nhap lieu vao mang 1 chieu
24 int input(int ia[])
25 {
26 int i = 0;
27 do
28 {
29 printf("Nhap vao mot so: ");
30 scanf("%d", &ia[i]);
31 } while (ia[i++] != 0);
32 i--;
33 return i;
34 }
35
36 void main(void)
37 {
38 int ia[MAX], ib[MAX], ic[MAX];
39 int inum1, inum2, inum3;
40 printf("Nhap lieu cho mang a: \n");
41 inum1 = max(ia, input(ia));
42 printf("Nhap lieu cho mang b: \n");
43 inum2 = max(ib, input(ib));
44 printf("Nhap lieu cho mang c: \n");
45 inum3 = max(ic, input(ic));
46 printf("So lon nhat cua mang a: %d, b: %d, c: %d.\n", inum1, inum2, inum3);
47 getch();
48 }
F1 Help Alt-F8 Next Msg Alt-F7 Prev Msg Alt - F9 Compile F9 Make F10 Menu
) Kt qu in ra mn hnh
Nhap lieu cho mang a: Nhap lieu cho mang c:
Nhap vao mot so: 12 Nhap vao mot so: 1
Nhap vao mot so: 45 Nhap vao mot so: 5
Nhap vao mot so: 3 Nhap vao mot so: 4
Nhap vao mot so: 0 Nhap vao mot so: 0
Nhap lieu cho mang b: So lon nhat cua mang a: 45, b: 15, c: 5.
Nhap vao mot so: 5 _
Nhap vao mot so: 15
Nhap vao mot so: 0
Chy li chng trnh v th li vi s liu khc.
Vit thm hm tm s nh nht.

Trng TH GII TIN HC 39 Nguyn Sn H, P5, Q3 T: 8.344.480 Website: www.infoworldschool.com


Gio trnh Lp trnh C cn bn Trang 80

) Gii thch chng trnh


Hm input c kiu tr v l int thng qua bin i (cho bit s lng phn t nhp vo)
v 1 tham s l mng 1 chiu kiu int. Dng 41, 43, 45 ln lt gi hm input vi cc tham s l
mng a, b, c. Khi hm input thc hin vic nhp liu th cc phn t trong mng cng c cp
nht theo.
8.2.1.16 Dng mng 2 chiu lm tham s cho hm
V d 15 : Nhp vo 2 ma trn vung cp n s thp phn. Cng 2 ma trn ny lu vo ma
trn th 3 v tm s ln nht trn ma trn th 3.
Dng File Edit Search Run Compile Debug Project Option Window Help
1 /* cong ma tran */
2
3 #include <stdio.h>
4 #include <conio.h>
5
6 #define MAX 20
7
8 //Khai bao prototype
9 void input(float);
10 void output(float);
11 void add(float, float, float);
12 float max(float);
13
14 //khai bao bien toan cuc
15 int in;
16
17 //ham tim so lon nhat trong mang 2 chieu
18 float max(float fa[][MAX])
19 {
20 float fmax;
21 fmax = fa[0][0]; //cho phan tu dau tien la max
22 for (int i = 0; i < in; i++)
23 for (int ij = 0; ij < in; ij++)
24 if (fmax < fa[i][ij]) //neu so dang xet > max
25 fmax = fa[i][ij]; //gan so nay cho max
26 return fmax; //tra ve ket qua so lon nhat
27 }
28
29 //ham nhap lieu mang 2 chieu
30 void input(float fa[][MAX])
31 {
32 for (int i = 0; i < in; i++)
33 for (int ij = 0; ij < in; ij++)
34 {
35 printf("Nhap vao ptu[%d][%d]: ", i, ij);
36 scanf("%f", &fa[i, j]);
37 }
38 }
39
40 //ham in mang 2 chieu ra man hinh
41 void output(float fa[][MAX])
42 {
43 for (int i = 0; i < in; i++)

Trng TH GII TIN HC 39 Nguyn Sn H, P5, Q3 T: 8.344.480 Website: www.infoworldschool.com


Gio trnh Lp trnh C cn bn Trang 81
44 {
45 for (int ij = 0; ij < n; ij++)
46 printf("%5.2f", fa[i][ij]);
47 printf("\n");
48 }
49 }
50
51 //ham cong 2 mang 2 chieu
52 void add(float fa[][MAX], float fb[][MAX], float fc[][MAX])
53 {
54 for (int i = 0; i < in; i++)
55 for (int ij = 0; ij < in; ij++)
56 fc[i, ij] = fa[i, ij] + fb[i, ij];
57 }
58
59 void main(void)
60 {
61 float fa[MAX][MAX], fb[MAX][MAX], fc[MAX][MAX];
62 printf("Nhap vao cap ma tran: ");
63 scanf("%d", &in);
64 printf("Nhap lieu ma tran a: \n");
65 input(fa);
66 printf("Nhap lieu ma tran b: \n");
67 input(fb);
68 printf("Nhap lieu ma tran c: \n");
69 input(fc);
70 add(fa, fb, fc);
71 printf("Ma tran a: \n");
72 output(fa);
73 printf("Ma tran b: \n");
74 output(fb);
75 printf("Ma tran c: \n");
76 output(fc);
77 printf("So lon nhat cua ma tran c la: %5.2f.\n", max(fc));
78 getch();
79 }
F1 Help Alt-F8 Next Msg Alt-F7 Prev Msg Alt - F9 Compile F9 Make F10 Menu
) Kt qu in ra mn hnh
Nhap vao cap ma tran : 2 Ma tran a:
Nhap lieu ma tran a: 5.20 4.00
Nhap vao ptu[0][0] : 5.2 7.10 9.00
Nhap vao ptu[0][1] : 4 Ma tran b:
Nhap vao ptu[1][0] : 7.1 12.00 3.40
Nhap vao ptu[1][1] : 9 9.60 11.00
Nhap lieu ma tran b: Ma tran c:
Nhap vao ptu[0][0] : 12 17.20 7.40
Nhap vao ptu[0][1] : 3.4 16.70 20.00
Nhap vao ptu[1][0] : 9.6 So lon nhat cua ma tran c la: 20.00
Nhap vao ptu[1][1] : 11 _
Chy li chng trnh v th li vi s liu khc.
Vit thm hm tm s nh nht.

Trng TH GII TIN HC 39 Nguyn Sn H, P5, Q3 T: 8.344.480 Website: www.infoworldschool.com


Gio trnh Lp trnh C cn bn Trang 82

) Gii thch chng trnh


Trong chng trnh khai bo bin in ton cc do bin ny s dng trong sut qu trnh
chy chng trnh. Tham s truyn vo hm l mng hai chiu di dng a[][MAX] v hm
khng dnh ch cho mng, hm ch cn bit s ct tham kho n cc phn t.
V d 16 : Mng 2 chiu c khai bo int ia[3][3]
Truyn tham s vo hm: ia[][3],
tham kho n pt[2][1],
hm tnh nh sau:
2 * 3 + 1 = 7 (ch s hng * s ct + ch s ct)
ia[3][3] gm 9 phn t c lu tr trong b nh nh sau:
0 1 2 3 4 5 6 7 8

0 1 2
0
1*3+2
1
2*3+1
2

) Ging nh mng 1 chiu khi truyn mng 2 chiu sang hm cng khng to bn
sao mi.
8.2.2 Chui
Chui c xem nh l mt mng 1 chiu gm cc phn t c kiu char nh mu t, con s
v bt c k t c bit nh +, -, *, /, $, #
Theo quy c, mt chui s c kt thc bi k t null ('\0' : k t rng).
V d: chui "Infoworld" c lu tr nh sau:

I n f o w o r l d \0

K t kt thc chui
8.2.2.1 Cch khai bo chui
V d 17 : char cname[30];
ngha: Khai bo chui cname c chiu di 30 k t. Do chui kt thc bng k t null,
nn khi bn khai bo chui c chiu di 30 k t ch c th cha 29 k t.
V d 18 : Nhp vo in ra tn
Dng File Edit Search Run Compile Debug Project Option Window Help
1 /* Chuong trinh nhap va in ra ten*/
2
3 #include <stdio.h>
4 #include <conio.h>
5
6 void main(void)
7 {
8 char cname[30];
9 printf("Cho biet ten cua ban: ");
10 scanf("%s", cname);
Trng TH GII TIN HC 39 Nguyn Sn H, P5, Q3 T: 8.344.480 Website: www.infoworldschool.com
Gio trnh Lp trnh C cn bn Trang 83
11 printf("Chao ban %s\n", cname);
12 getch();
13 }

F1 Help Alt-F8 Next Msg Alt-F7 Prev Msg Alt - F9 Compile F9 Make F10 Menu
) Kt qu in ra mn hnh
Cho biet ten cua ban: Minh Chy li chng trnh v th nhp tn: Mai Lan, Thanh Nhi
Chao ban Minh Quan st kt qu.
_
) Lu : khng cn s dng ton t a ch & trong cname trong lnh scanf("%s",
fname), v bn thn fname l a ch.

Dng hm scanf nhp chui c hn ch nh sau: Khi bn th li chng trnh trn vi d


liu nhp vo l Mai Lan, nhng khi in ra bn ch nhn c Mai. V hm scanf nhn vo d liu
n khi gp khong trng th kt thc.

8.2.2.2 Hm nhp (gets), xut (puts) chui


S dng hm gets, puts phi khai bo #include <stdio.h>
Dng File Edit Search Run Compile Debug Project Option Window Help
1 /* Chuong trinh nhap va in ra ten*/
2
3 #include <stdio.h>
4 #include <conio.h>
5
6 void main(void)
7 {
8 char cname[30];
9 puts("Cho biet ten cua ban: ");
10 gets(cname);
11 puts("Chao ban ");
12 puts(cname);
13 getch();
14 }
F1 Help Alt-F8 Next Msg Alt-F7 Prev Msg Alt - F9 Compile F9 Make F10 Menu
) Kt qu in ra mn hnh
Cho biet ten cua ban: Sa dng 9 thnh printf("Cho biet ten cua ban: "); v t
Mai Lan dng 11 n 12 thnh printf("Chao ban %s.\n", cname);
Chao ban Chy li chng trnh vo th nhp tn: Tuan Anh, Thanh Lan
Mai Lan
_ Quan st kt qu.

) i vi hm puts k t kt thc chui null (\0) c thay th bng k t newline


(\n). Hm gets v puts ch c 1 i s v khng s dng dng thc trong nhp liu cng nh
xut ra mn hnh.

Trng TH GII TIN HC 39 Nguyn Sn H, P5, Q3 T: 8.344.480 Website: www.infoworldschool.com


Gio trnh Lp trnh C cn bn Trang 84
8.2.2.3 Khi to chui
Dng File Edit Search Run Compile Debug Project Option Window Help
1 /* Chuong trinh nhap va in ra ten*/
2
3 #include <stdio.h>
4 #include <conio.h>
5
6 void main(void)
7 {
8 char cname[30];
9 char chao[] = "Chao ban";
10 printf("Cho biet ten cua ban: ");
11 gets(cname);
12 printf("%s %s.\n", chao, cname);
13 getch();
14 }
F1 Help Alt-F8 Next Msg Alt-F7 Prev Msg Alt - F9 Compile F9 Make F10 Menu
) Kt qu in ra mn hnh
Cho biet ten cua ban: Mai Lan Chy li chng trnh vo th nhp tn: Doan Trang
Chao ban Mai Lan Quan st kt qu.
_
) Chiu di ti a ca chui khi to bng s k t + 1 (k t null). Vi chui chao c
chiu di l 9.

8.2.2.4 Mng chui


Dng File Edit Search Run Compile Debug Project Option Window Help
1 /* Chuong trinh nhap thang (so) v in ra thang (chu) tuong ung*/
2
3 #include <stdio.h>
4 #include <conio.h>
5
6 void main(void)
7 {
8 char cthang[12][15] = {"January", "February", "March", "April",
9 "May", "June", "July", "August", "September",
10 "October", "November", "December"};
11 int ithang;
12 printf("Nhap vao thang (1-12): ");
13 scanf("%d", &ithang);
14 printf("%s.\n", cthang[ithang-1]);
15 getch();
16 }
F1 Help Alt-F8 Next Msg Alt-F7 Prev Msg Alt - F9 Compile F9 Make F10 Menu
) Kt qu in ra mn hnh
Nhap vao thang (1-12): 2 Chy li chng trnh vo th nhp vo cc thng khc
February Quan st kt qu.
_

Trng TH GII TIN HC 39 Nguyn Sn H, P5, Q3 T: 8.344.480 Website: www.infoworldschool.com


Gio trnh Lp trnh C cn bn Trang 85
8.3 Bi tp

1. Vit hm tm s ln nht, nh nht trong mt mng n s nguyn.


2. Vit hm sp xp tng dn, gim dn ca mt dy s cho trc.
3. Vit hm tch tn v h lt t mt chui cho trc.
4. Vit hm ct b khong trng tha gia, hai u.
5. Vit hm chuyn i 1 chui sang ch thng v 1 hm chuyn i sang ch HOA.
6. Vit hm chuyn i 1 chui sang dng Title Case (k t u ca mi t l ch HOA,
cc k t cn li ch thng)
7. Vit chng trnh nhp vo 1 chui v in ra chui o ngc.
V d: Nhp vo chui "Lap trinh C can ban"
In ra "nab nac C hnirt paL"
8. Vit chng trnh nhp vo mt chui k t ri m xem trong chui c bao nhiu
ch 'th'.
9. Bit rng nm 0 l nm Canh thn (nm k nhau c chu k l 3, nm hp nhau c chu
k l 4). Hy vit chng trnh cho php g vo nm dng lch (v d 1997), xut ra nm m
lch (inh su) v cc nm k v hp.
C 12 chi: T, Su, Dn, Mo, Thn, T, Ng, Mi, Thn, Du, Tut, Hi.
C 10 can: Gip, t, Bnh, inh, Mu, K, Canh, Tn, Nhm, Qu.
10. Vit chng trnh nhp vo 3 ch s (305, 6, 28). Cho bit dng ch m t gi tr con
s . V d 305 -> ba trm l nm.
11. Vit chng trnh nhp vo mt chui sau in ra mn hnh mi dng l mt t. V
d chui "Lap trinh C". Kt qu in ra
Lap
trinh
C
12. Vit chng trnh nhp vo mt chui cc k t, k s, khong trng v du chm
cu. Cho bit chui trn gm bao nhiu t.
13. Vit chng trnh nhp vo mt chui k t. Kim tra xem chui c i xng
khng?
14. Vit chng trnh nhp vo mt chui gm cc ch ci (a -> z, A -> Z). Hy m xem
c bao nhiu nguyn m a, i, e, o, u.
15. Gi s s phng trong mt khch sn c cho bi hng s NUM_ROOM. Vit:
a. Mt khai bo dy thch hp theo di phng no cn trng.
b. Mt hm tm phng no cn trng.
c. Vit chng trnh n gin qun l phng khch sn theo dng mt trnh n
chn cng vic gm c 4 mc nh sau:
- Tm phng trng.
- Tr phng.
- Lit k nhng phng cn trng.
- Lit k nhng phng thu.
- Kt thc.

Trng TH GII TIN HC 39 Nguyn Sn H, P5, Q3 T: 8.344.480 Website: www.infoworldschool.com


Gio trnh Lp trnh C cn bn Trang 86
16. Vit chng trnh m t vn bn ca mt bc in tn. Nhp liu bao gm 1 hay
nhiu dng cha mt s t, mi t cch nhau khong trng. In ra ha n tnh tin vi mi t
gi 100 ng, ph tr thm 50 ng cho t di qu 8 k t. Ha n c dng sau:
So tu : 10
So tu co kich thuoc binh thuong : 8 x 100 = 800 dong
So tu co kch thuoc > 8 ki tu : 2 x 150 = 300 dong
Tong cong : 1100 dong
17. Vit chng thng k xem c bao nhiu ngi h "Ly", "Tran" trong 1 danh sch
cho trc. Nu khng c thng bo "Khng c nguoi nao thuoc ho .".
18. Vit chng trnh nhp vo 1 chui, sau chp sang chui khc mt chui con t
chui ban u c s k t ch nh.
V d: Chui ban u "Le Thuy Doan Trang". Nu s k t ch nh l 2 th chui ch
s l "Le"
19. Vit chng trnh nhp vo 1 chui, sau chp sang chui khc mt chui con t
chui ban u vi v tr bt u v s k t ch nh.
V d: Chui ban u "Le Thuy Doan Trang". Nu v tr ban u l 14 v s k t ch
nh l 5 th chui ch s l "Trang"
20. Vit chng trnh nhp vo 1 chui ngun, v d "Nguyen Minh Long", sau nhp
vo 1 chui con, v d "Minh", chng trnh s xc nh v tr bt u ca chui con v tr no
trong chui ngun. Kt qu in ra mn hnh nh sau:
- Chuoi nguon la : Nguyen Minh Long
- Chuoi con la : Minh
- Vi tri bat dau cua chuoi con la : 8
21. Vit chng thc hin cc yu cu sau:
- Nhp vo 1 chui bt k, v d : "Nguyen Minh Long
- Mun xa t v tr no, v d : 8
- Mun xa bao nhieu k t, v d : 5
Kt qu in ra man hinh:
- Chuoi nguon la : Nguyen Minh Long
- Chuoi sau khi xoa : Nguyen Long

Trng TH GII TIN HC 39 Nguyn Sn H, P5, Q3 T: 8.344.480 Website: www.infoworldschool.com


Gio trnh Lp trnh C cn bn Trang 87

Bi 9 :
CON TR

9.1 Mc tiu
Sau khi hon tt bi ny hc vin s hiu v vn dng cc kin thc k nng c bn sau:
- ngha, cch khai bo con tr
- S dng con tr trong mng, chui
- Truyn mng v chui gia cc hm qua con tr
- X l mng d dng qua con tr
9.2 Ni dung

9.2.1 Con tr?


Con tr dng truy cp bin thng qua a ch bin v chng trnh tham kho bin
gin tip qua a ch ny.
9.2.2 Khi bo bin con tr
V d 1:
Dng File Edit Search Run Compile Debug Project Option Window Help
1 /* Cong hang so */
2
3 #include <stdio.h>
4 #include <conio.h>
5
6 void main(void)
7 {
8 int ix = 6, iy = 7;
9 int *px, *py;
10 printf("x = %d, y = %d\n", ix, iy);
11 px = &ix;
12 py = &iy;
13 *px += 10;
14 *py += 10;
15 printf("x = %d, y = %d\n", ix, iy);
16 getch();
17 }
F1 Help Alt-F8 Next Msg Alt-F7 Prev Msg Alt - F9 Compile F9 Make F10 Menu
) Kt qu in ra mn hnh
x = 6, y = 7 Chy chng trnh v quan st kt qu.
x = 16, y = 17
_

) Gii thch chng trnh


Khai bo dng 9 cp pht 2 bytes lu gi a ch ca bin nguyn v vng nh c
tn l px, tng t cho py. Du * cho bit bin ny cha a ch ch khng phi gi tr, int cho
bit a ch s tr n cc bin nguyn.

Trng TH GII TIN HC 39 Nguyn Sn H, P5, Q3 T: 8.344.480 Website: www.infoworldschool.com


Gio trnh Lp trnh C cn bn Trang 88

) V d trn cho thy *px v *py l 2 bin con tr tr n a ch ca 2 bin ix v


iy (dng 11 v 12),v vy khi ni dung ca bin con tr *px v *py thay i th ni dung ca
ix, iy cng thay i theo.
a ch vng nh
1203
6 ix
1204
1205
1206 Sau php gn px = &ix v py = &iy th gi
1207 tr ca px = 1203 v py = 1207
7 iy
1208
1209
1210

a ch vng nh
2015
2016
2017 *px l ni dung ca px v *py l ni dung
1203 px
2018 ca py. Nn khi thc hin 2 php cng gn
2019 *px += 10 v *py += 10 th gi tr ca ix
1207 py
2020 s l 16 v gi tr iy s l 17.
2021
2022
9.2.3 Truyn a ch sang hm
V d 2:
Dng File Edit Search Run Compile Debug Project Option Window Help
1 /* Khoi tao 2 so */
2
3 #include <stdio.h>
4 #include <conio.h>
5
6 void init (int, int);
7
8 void main(void)
9 {
10 int ix, iy;
11 init(&ix, &iy);
12 printf("x = %d, y = %d\n", ix, iy);
13 getch();
14 }
15
16 void init(int *px, int *py)
17 {
18 *px = 3; //gan 3 cho noi dung cua px
19 *py = 5; //gan 5 cho noi dung cua py
20 }
F1 Help Alt-F8 Next Msg Alt-F7 Prev Msg Alt - F9 Compile F9 Make F10 Menu

Trng TH GII TIN HC 39 Nguyn Sn H, P5, Q3 T: 8.344.480 Website: www.infoworldschool.com


Gio trnh Lp trnh C cn bn Trang 89

) Kt qu in ra mn hnh
x = 3, y = 5 Chy chng trnh v quan st kt qu.
_

) Gii thch chng trnh


dng 9, gi hm init truyn 2 tham s l a ch ca bin ix v iy, nn khi ni dung ca
2 bin con tr *px v *py thay i th ix v iy ca chng trnh chnh cng thay i theo. Hm
main(void) s dng cch truy cp bin khc vi hm init, hm main(void) gi chng l ix, iy
cn hm init gi chng l *px, *py. Hm init c gi tr ca bin con tr *px, *py t vng a ch
ca chng trnh gi, sau khi thc hin v tr kt qu v chng trnh gi.
9.2.4 Con tr v mng
V d 3: Khai bo mng sau int num[] = {23, 54, 16, 72, 16, 84};
Nh nghin cu cch tham chiu n phn t mng th 5 l num[4], cn vi kiu con tr l
*(num + 4). Ngha l num[4] tng ng vi *(num + 4) v cch truy cp ni dung nh nhau.
Tng t nh vy, cch tham kho a ch ca phn t mng l &num[4] tng ng vi num + 4.
9.2.5 Con tr tr n mng trong hm
V d 4:
Dng File Edit Search Run Compile Debug Project Option Window Help
1 /* Cong hang so vao mang */
2
3 #include <stdio.h>
4 #include <conio.h>
5
6 #define SIZE 4
7
8 add(int *, int, int);
9
10 void main(void)
11 {
12 int iarray[] = {2, 5, 6, 9};
13 int i, ix = 10;
14 add(iarray, SIZE, ix);
15 for (i = 0; i < SIZE; i++);
16 printf("%d ", *(iarray + i));
17 getch();
18 }
19
20 void add(int *ptr, int inum, int ia)
21 {
22 int ij;
23 for (ij = 0; ij < inum; ij++)
24 *(ptr) = *(ptr++) + ia;
25 }
F1 Help Alt-F8 Next Msg Alt-F7 Prev Msg Alt - F9 Compile F9 Make F10 Menu
) Kt qu in ra mn hnh
12 15 16 19 Chy chng trnh v quan st kt qu.
_

Trng TH GII TIN HC 39 Nguyn Sn H, P5, Q3 T: 8.344.480 Website: www.infoworldschool.com


Gio trnh Lp trnh C cn bn Trang 90

) Gii thch chng trnh


Hm gn a ch ca mng vo bin con tr ptr, kch thc vo bin inum v hng s vo
bin ia. Sau dng vng lp cng hng vo tng phn t ca mng.
Gi s a ch ca ia l 245 khi truyn vo hm add qua ptr, ptr s c gi tr = 245
iarray 245
2
246
iarray + 1 247
ptr 245 5
248
iarray + 2 249
6
250
iarray + 3 251
9
252
ptr ++

iarray 245
12
246
iarray + 1 247
ptr 247 5
248
iarray + 2 249
6
250
iarray + 3 251
9
252
9.2.6 Con tr v chui
V d 5:
Dng File Edit Search Run Compile Debug Project Option Window Help
1 /* Chuong trinh nhap va in ra ten*/
2
3 #include <stdio.h>
4 #include <conio.h>
5
6 void main(void)
7 {
8 char *cgreeting = "Chao ban";
9 char cname[30];
10 puts("Cho biet ten cua ban: ");
11 gets(cname);
12 puts(cgreeting);
13 puts(cname);
14 getch();
15 }
F1 Help Alt-F8 Next Msg Alt-F7 Prev Msg Alt - F9 Compile F9 Make F10 Menu
) Kt qu in ra mn hnh
Cho biet ten cua ban: Chy chng trnh v quan st kt qu.
Minh
Chao ban
Minh
_

Trng TH GII TIN HC 39 Nguyn Sn H, P5, Q3 T: 8.344.480 Website: www.infoworldschool.com


Gio trnh Lp trnh C cn bn Trang 91

) Gii thch chng trnh


cgreeting l bin con tr c khi to bng pht biu char *cgreeting = "Chao ban" thay
v char cgreeting[] = "Chao ban". C hai cch u cho cng kt qu v u dnh s byte cho
chui km theo k t null. i vi mng a ch ca k t u tin ca mng s l tn mng, cn
con tr s c thm bin con tr tr n tn cgreeting.

1502 C cgreeting 1502 C


cgreeting 1503 h 1503 h
1504 a 1504 a
1502
1505 o 1505 o
1506 1506
1507 b 1507 b
1508 a 1508 a
1509 n 1509 n
char * cgreeting = "Chao ban" char cgreeting[] = "Chao ban"
(bin con tr) (hng con tr)
9.2.7 Khi to mng con tr tr n chui
V d 6:
Dng File Edit Search Run Compile Debug Project Option Window Help
1 /* Chuong trinh nhap thang (so) v in ra thang (chu) tuong ung*/
2
3 #include <stdio.h>
4 #include <conio.h>
5
6 void main(void)
7 {
8 char *cthang[12]= {"January", "February", "March", "April",
9 "May", "June", "July", "August", "September",
10 "October", "November", "December"};
11 int ithang;
12 printf("Nhap vao thang (1-12): ");
13 scanf("%d", &ithang);
14 printf("%s.\n", cthang[ithang-1]);
15 getch();
16 }
F1 Help Alt-F8 Next Msg Alt-F7 Prev Msg Alt - F9 Compile F9 Make F10 Menu
) Kt qu in ra mn hnh
Nhap vao thang (1-12): 2 Chy li chng trnh vo th nhp vo cc thng khc
February Quan st kt qu.
_

Trng TH GII TIN HC 39 Nguyn Sn H, P5, Q3 T: 8.344.480 Website: www.infoworldschool.com


Gio trnh Lp trnh C cn bn Trang 92

) Gii thch chng trnh


Khai bo char *cthang[12] c ngha nh sau: cthang l tn gi, du * l kiu con tr tr
n k t (char).
a ch 0 1 2 3 4 5 6 7 8 9
cthang[0] 1010 J a n u a r y \0
cthang[1] 1020 F e b r u a r y \0
cthang[2] 1030 M a r c h \0
cthang[3] 1040 A p r i l \0
cthang[4] 1050 M a y \0
cthang[5] 1060 J u n e \0
cthang[6] 1070 J u l y \0
cthang[7] 1080 A u g u s t \0
cthang[8] 1090 S e p t e m b e r \0
cthang[9] 1100 O c t o b e r \0
cthang[10] 1110 N o v e m b e r \0
cthang[11] 1120 D e c e m b e r \0
Mng cc chui char cthang[12][10]]

cthang[0] 1010 1010 J a n u a r y \0


cthang[1] 1018 1018 F e b r u a r y \0
cthang[2] 1027 1027 M a r c h \0
cthang[3] 1033 1033 A p r i l \0
cthang[4] 1039 1039 M a y \0
cthang[5] 1043 1043 J u n e \0
cthang[6] 1048 1048 J u l y \0
cthang[7] 1053 1053 A u g u s t \0
cthang[8] 1060 1060 S e p t e m b e r \0
cthang[9] 1070 1070 O c t o b e r \0
cthang[10] 1078 1078 N o v e m b e r \0
cthang[11] 1087 1087 D e c e m b e r \0

Mng cc con tr tr n cc chui char *cthang[12]

) Khi to mng cc con tr tr n cc chui chim t b nh hn khi to mng


chui.

9.2.8 X l con tr tr n chui


V d 7:
Dng File Edit Search Run Compile Debug Project Option Window Help
1 /* Nhap danh sach ten va sap xep theo thu tu tang dan*/
2
3 #include <stdio.h>
4 #include <conio.h>
5 #inlcude <string.h>
6
7 #define MAXNUM 5

Trng TH GII TIN HC 39 Nguyn Sn H, P5, Q3 T: 8.344.480 Website: www.infoworldschool.com


Gio trnh Lp trnh C cn bn Trang 93
8 #define MAXLEN 10
9
10 void main(void)
11 {
12 char cname[MAXNUM][MAXLEN]; //mang chuoi
13 char *cptr[MAXNUM]; //mang con tro tro den chuoi
14 char *ctemp;
15 int i, ij, icount = 0;
16
17 //nhap danh sach ten
18 while (icount < MAXNUM)
19 {
20 printf("Nhap vao ten nguoi thu %d: ", icount + 1);
21 gets(cname[icount]);
22 cptr[icount++] = cname[icount]; //con tro den ten
23 }
24
25 //sap xep danh sach theo thu tu tang dan
26 for (i = 0; i < icount 1; i ++)
27 for (ij = i + 1; ij < icount; ij ++)
28 if (strcmp(cptr[i], cptr[ij]) > 0)
29 {
30 ctemp = cptr[i];
31 cptr[i] = cptr[ij];
32 cptr[ij] = ctemp;
33 }
34
35 //In danh sach da sap xep
36 printf("Danh sach sau khi sap xep:\n");
37 for (i = 0; i < icount; i ++)
38 printf("Ten nguoi thu %d : %s\n", i + 1, cptr[i]);
39 getch();
40 }
F1 Help Alt-F8 Next Msg Alt-F7 Prev Msg Alt - F9 Compile F9 Make F10 Menu
) Kt qu in ra mn hnh
Nhap vao ten nguoi thu 1: Minh Chy li chng trnh v th nhp vi d liu
Nhap vao ten nguoi thu 2: Lan khc.
Nhap vao ten nguoi thu 3: Anh Quan st kt qu.
Nhap vao ten nguoi thu 4: Trang
Nhap vao ten nguoi thu 5: Quan
Danh sach sau khi sap xep:
Ten nguoi thu 1: Anh
Ten nguoi thu 2: Lan
Ten nguoi thu 3: Minh
Ten nguoi thu 4: Quan
Ten nguoi thu 5: Trang
_

Trng TH GII TIN HC 39 Nguyn Sn H, P5, Q3 T: 8.344.480 Website: www.infoworldschool.com


Gio trnh Lp trnh C cn bn Trang 94

) Gii thch chng trnh


Trong chng trnh dng c mng chui char cname[MAXNUM][MAXLEN] v mng
con tr tr n chui char *cptr[MAXNUM];.
cptr[0] 1010 1010 M i n h \0
cptr[1] 1016 1016 L a n \0
cptr[2] 1022 1022 A n h \0
cptr[3] 1028 1028 T r a n g \0
cptr[4] 1034 1034 Q u a n \0

Mng cc con tr tr n chui trc khi sp xp

cptr[0] 1022 1010 M i n h \0


cptr[1] 1016 1016 L a n \0
cptr[2] 1010 1022 A n h \0
cptr[3] 1034 1028 T r a n g \0
cptr[4] 1028 1034 Q u a n \0
Mng cc con tr tr n chui sau khi sp xp

9.2.9 Con tr tr n con tr


V d 8:
Dng File Edit Search Run Compile Debug Project Option Window Help
1 /* In ma trn*/
2
3 #include <stdio.h>
4 #include <conio.h>
5
6 #define ROWS 4
7 #define COLS 5
8
9 void main(void)
10 {
11 int itable[ROWS][COLS] = {{10, 12, 14, 16, 18},
12 {11, 13, 15, 17, 19},
13 {20, 22, 24, 26, 28},
14 {21, 23, 25, 27, 29}};
15 int i, ij, ix = 10;
16
17 for (i = 0; i < ROWS; i ++)
18 for (ij = 0; ij < COLS; ij ++)
19 *(*(table + i) + ij) += ix;
20
21 for (i = 0; i < ROWS; i ++)
22 {
23 for (ij = 0; ij < COLS; ij ++)
24 printf("%4d", *(*(table + i) + ij));
25 printf("\n");
26 }
27 getch();
28 }
F1 Help Alt-F8 Next Msg Alt-F7 Prev Msg Alt - F9 Compile F9 Make F10 Menu

Trng TH GII TIN HC 39 Nguyn Sn H, P5, Q3 T: 8.344.480 Website: www.infoworldschool.com


Gio trnh Lp trnh C cn bn Trang 95

) Kt qu in ra mn hnh
20 22 24 26 28 Chy chng trnh v quan st kt qu.
21 23 25 27 29
30 32 34 36 38
31 33 35 37 39
_
) Gii thch chng trnh
Trong chng trnh dng c mng chui char cname[MAXNUM][MAXLEN] v mng
con tr tr n chui char *cptr[MAXNUM];.

9.3 Bi tp
Lm li cc bi tp bi Mng v chui s dng bin con tr.

Trng TH GII TIN HC 39 Nguyn Sn H, P5, Q3 T: 8.344.480 Website: www.infoworldschool.com


Gio trnh Lp trnh C cn bn Trang 96

Bi 10 :
CC KIU D LIU T TO

10.1 Mc tiu
Sau khi hon tt bi ny hc vin s hiu v vn dng cc kin thc k nng c bn sau:
- ngha, cch khai structure, emum
- Nhp, xut structure.
- Khi to structure, enum
- Mt s k thut thao tc trn structure, enum
- Dng struct tham s cho hm.
10.2 Ni dung

10.2.1 Structure
i vi mng, ch c th lu nhiu thng tin c cng kiu d liu. Nhng vi structure ta c
th lu thng tin nh mt mng c nhiu kiu d liu khc nhau.
10.2.1.1 Khai bo kiu structure
V d 1: khai bo mt structure v thng tin nhn vin
t kha tn struct
struct nhanvien
{
Cc thnh int manv; cc phn t ca struct
phn c char hoten[30];
bc trong mc };
du chm phy kt thc struct
nhanvien int manv char hoten[30]
V d trn nh ngha kiu d liu mi c tn l struct nhanvin. Mi bin kiu ny gm 2
phn t: bin nguyn c tn l manv v bin chui c tn hoten.
) struct phi vit bng ch thng
10.2.1.2 Cch khai bo bin c kiu structure
V d 2: struct nhanvien nv; hoc nhanvien nv;
Khai bo bin nv c kiu struct nhanvien
) va to structure nhanvien va khai bo bin nv
struct nhanvien
{
int manv;
char hoten[30];
} nv;
10.2.1.3 Tham chiu cc phn t trong structure
nv manv hoten[30]

nv.manv nv.hoten
tham chiu n manv trong nv ta vit nh sau: nv.manv (l bin c kiu int)

Trng TH GII TIN HC 39 Nguyn Sn H, P5, Q3 T: 8.344.480 Website: www.infoworldschool.com


Gio trnh Lp trnh C cn bn Trang 97
) i vi bin khai bo kiu con tr nhanvien *nv th tham chiu n phn t manv:
nv -> manv.
V d 3: Nhp v in danh sch nhn vin.
Dng File Edit Search Run Compile Debug Project Option Window Help
1 /* Danh sach nhan vien */
2
3 #include <stdio.h>
4 #include <conio.h>
5 #include <stdlib.h>
6
7 #define MAX 50
8
9 void main(void)
10 {
11 struct nhanvien
12 {
13 int manv;
14 char hoten[30];
15 };
16 nhanvien snv[MAX];
17 char ctam[10];
18 int i, in;
19 printf("Nhap vao so nhan vien: ");
20 gets(ctam);
21 in = atoi(ctam);
22
23 //Nhap danh sach nhan vien
24 for(i = 0; i < in; i++)
25 {
26 printf("Nhap vao ma nhan vien thu %d: ", i + 1);
27 gets(ctam);
28 snv[i].manv = atoi(ctam);
29 printf("Nhap vao ho ten: ");
30 gets(snv[i].hoten);
31 }
32
33 //in danh sach nhan vien
34 for(i = 0; i < in; i++)
35 printf("%5d %s\n", snv[i].manv, snv[i].hoten);
36 getch();
37 }
F1 Help Alt-F8 Next Msg Alt-F7 Prev Msg Alt - F9 Compile F9 Make F10 Menu
) Kt qu in ra mn hnh
Nhap vao so nhan vien: 2 Chy v th li chng trnh vi d liu khc.
Nhap vao ma nhan vien thu 1: 123 Quan st kt qu.
Nhap vao ho ten: Le Thuy Doan Trang
Nhap vao ma nhan vien thu 2: 35

Trng TH GII TIN HC 39 Nguyn Sn H, P5, Q3 T: 8.344.480 Website: www.infoworldschool.com


Gio trnh Lp trnh C cn bn Trang 98
Nhap vao ho ten: Le Nguyen Tuan Anh
123 Le Thuy Doan Trang
35 Le Nguyen Tuan Anh
_

) Trong chng trnh trn dng t hp 2 dng 20 v 21 gm 2 lnh gets, atoi


nhp mt s nguyn trnh li do scanf v vng m bn phm gy ra.
10.2.1.4 Khi to structure
V d 4: Nhp vo bng s xe, cho bit xe ng k tnh no.
Dng File Edit Search Run Compile Debug Project Option Window Help
1 /* Xac dinh bien so xe */
2
3 #include <stdio.h>
4 #include <conio.h>
5 #include <stdlib.h>
6
7 #define MAX 6
8
9 void main(void)
10 {
11 struct tinh
12 {
13 int ma;
14 char *ten;
15 };
16 tinh sds[MAX] = {{60, "Dong Nai"}, {61, "Binh Duong"}, {62, "Long An"},
17 {63, "Tien Giang"}, {64, "Vinh Long"}, {65, "Can Tho"}};
18 char ctam[10];
19 int i, in;
20 printf("Nhap vao bien so xe: ");
21 gets(ctam);
22 in = atoi(ctam);
23
24 for(i = 0; i < MAX; i++)
25 if (sds[i].ma == in)
26 printf("Xe dang ki o tinh %s.\n", sds[i].ten);
27 getch();
28 }
F1 Help Alt-F8 Next Msg Alt-F7 Prev Msg Alt - F9 Compile F9 Make F10 Menu
) Kt qu in ra mn hnh
Nhap vao bien so xe: 62F5-1152 Chy v th li chng trnh vi 65H5-1246,
Xe dang ki o tinh Long An 60F4-7712, 64F1-4542
_ Quan st kt qu.
) Dng 22 i chui sang s nguyn, v d trn sau khi dng ny thc hin gi tr
ca in = 62.

Trng TH GII TIN HC 39 Nguyn Sn H, P5, Q3 T: 8.344.480 Website: www.infoworldschool.com


Gio trnh Lp trnh C cn bn Trang 99
10.2.1.5 Structure lng nhau
V d 5: Nhp v in danh sch nhn vin.
Dng File Edit Search Run Compile Debug Project Option Window Help
1 /* Danh sach nhan vien */
2
3 #include <stdio.h>
4 #include <conio.h>
5 #include <stdlib.h>
6
7 #define MAX 50
8
9 void main(void)
10 {
11 struct giacanh
12 {
13 char vo_chong[30];
14 char con;
15 };
16
17 struct nhanvien
18 {
19 int manv;
20 char hoten[30];
21 giacanh canhan;
22 };
23 nhanvien snv[MAX];
24 char ctam[10];
25 int i, in;
26 printf("Nhap vao so nhan vien: ");
27 gets(ctam);
28 in = atoi(ctam);
29
30 //Nhap danh sach nhan vien
31 for(i = 0; i < in; i++)
32 {
33 printf("Nhap vao ma nhan vien thu %d: ", i + 1);
34 gets(ctam);
35 snv[i].manv = atoi(ctam);
36 printf("Nhap vao ho ten: ");
37 gets(snv[i].hoten);
38 printf("Cho biet ten vo (hoac chong): ");
39 gets(snv[i].canhan.vo_chong);
40 printf("So con: ");
41 gests(ctam);
42 }
43
44 //in danh sach nhan vien
Trng TH GII TIN HC 39 Nguyn Sn H, P5, Q3 T: 8.344.480 Website: www.infoworldschool.com
Gio trnh Lp trnh C cn bn Trang 100
45 for(i = 0; i < in; i++)
46 {
47 printf("Ma so: %d\nHo ten: %s\n Ho ten vo (hoac chong): %s\nSo con: %d",
48 snv[i].manv, snv[i].hoten, snv[i].canhan.vo_chong, snv[i].canhan.con);
49 getch();
50 }
F1 Help Alt-F8 Next Msg Alt-F7 Prev Msg Alt - F9 Compile F9 Make F10 Menu
) Kt qu in ra mn hnh
Nhap vao so nhan vien: 3 Chy v th li chng trnh vi d liu khc.
Nhap vao ma nhan vien thu 1: 123 Quan st kt qu.
Nhap vao ho ten: Le Thuy Doan Trang
Nhap vao ma nhan vien thu 2: 35
Nhap vao ho ten: Le Nguyen Tuan Anh
123 Le Thuy Doan Trang
35 Le Nguyen Tuan Anh
_

) Trong chng trnh trn dng t hp 2 dng 20 v 21 gm 2 lnh gets, atoi


nhp mt s nguyn trnh li do scanf v vng m bn phm gy ra.
10.2.1.6 Truyn structure sang hm
Ging nh mng, bn c th truyn vo hm qua tham bin.
V d 6: Sa li v d 3, s dng hm cho nhp v in danh sch
Dng File Edit Search Run Compile Debug Project Option Window Help
1 /* Danh sach nhan vien */
2
3 #include <stdio.h>
4 #include <conio.h>
5 #include <stdlib.h>
6
7 #define MAX 50
8
9 //Khai bao structure toan cuc
10 struct nhanvien
11 {
12 int manv;
13 char hoten[30];
14 };
15
16 //Khai bao prototype
17 void input(nhanvien, int);
18 void output(nhanvien, int);
19
20 //Ham nhap danh sach
21 void input(nhanvien snv[], int in)
22 {

Trng TH GII TIN HC 39 Nguyn Sn H, P5, Q3 T: 8.344.480 Website: www.infoworldschool.com


Gio trnh Lp trnh C cn bn Trang 101
23 char ctam[10];
24 for(int i = 0; i < in; i++)
25 {
26 printf("Nhap vao ma nhan vien thu %d: ", i + 1);
27 gets(ctam);
28 snv[i].manv = atoi(ctam);
29 printf("Nhap vao ho ten: ");
30 gets(snv[i].hoten);
31 }
32 }
33
34 //Ham in danh sach ra man hinh
35 void output(nhanvien snv[], int in)
36 {
37 for(i = 0; i < in; i++)
38 printf("%5d %s\n", snv[i].manv, snv[i].hoten);
39 }
40
41 void main(void)
42 {
43 nhanvien snv[MAX];
44 char ctam[10];
45 int i, in;
46 printf("Nhap vao so nhan vien: ");
47 gets(ctam);
48 in = atoi(ctam);
49 input(snv, in);
50 output(snv, in);
51 getch();
52 }
F1 Help Alt-F8 Next Msg Alt-F7 Prev Msg Alt - F9 Compile F9 Make F10 Menu
) Kt qu in ra mn hnh
Nhap vao so nhan vien: 3 Chy v th li chng trnh vi d liu khc.
Nhap vao ma nhan vien thu 1: 123 Quan st kt qu.
Nhap vao ho ten: Le Thuy Doan Trang
Nhap vao ma nhan vien thu 2: 35
Nhap vao ho ten: Le Nguyen Tuan Anh
123 Le Thuy Doan Trang
35 Le Nguyen Tuan Anh
_

) Gii thch chng trnh


chng trnh ny ta phi khai bo struct nhanvien l bin ton cc, v khi nh ngha
hm input v output c s dng kiu d liu struct nhanvin.
) Bn lu rng khi truyn struct sang hm, khng to bn sao mng mi. V vy
struct truyn sang hm c dng tham bin. Ngha l gi tr ca cc phn t trong struct s
b nh hng nu c s thay i trn chng.
Trng TH GII TIN HC 39 Nguyn Sn H, P5, Q3 T: 8.344.480 Website: www.infoworldschool.com
Gio trnh Lp trnh C cn bn Trang 102
V d 7: Sa li v d 6, t dng 20 n dng 32 nh sau:
//Ham nhap tung nhan vien
nhanvien newnv()
{
nhanvien snv;
printf("Ma nhan vien: ");
gets(ctam);
snv.manv = atoi(ctam);
printf("Ho ten: ");
gets(snv.hoten);
return (snv);
}

//Ham nhap danh sach nhan vien


void input(nhanvien snv[], int in)
{
for(int i = 0; i < in; i++)
{
printf("Nhap vao nhan vien thu %d: ", i + 1);
snv[i] = newnv();
}
}

) Hm newnv c kiu tr v l struct nhanvien


10.2.2 Enum
Mt bin l kiu d liu enum c th nhn c mt gi tr no trong cc gi tr c lit k.
10.2.2.1 nh ngha kiu enum
V d 8: nh ngha kiu enum day
t kha tn du ; kt thc enum
enum day{ SUN, MON, TUE, WED, THU, FRI, SAT };

cc gi tr lit k

cc gi tr c bc trong mc
Cc tn th (SUN, MON SAT) trong day s c nh s ln lt t 0 n 6 (SUN
l 1, MON l 2 SAT l 6). Nu bn mun bt u bng gi tr khc th gn gi tr mong mun
vo v tr k tip s tng ln 1.
) enum phi vit bng ch thng
10.2.2.2 Cch khai bo bin c kiu enum
V d 9: enum day ngay; hoc day ngay;
Khai bo bin ngay c kiu enum day.
) va to enum day va khai bo bin ngay
enum day{ SUN, MON, TUE, WED, THU, FRI, SAT } ngay;

Trng TH GII TIN HC 39 Nguyn Sn H, P5, Q3 T: 8.344.480 Website: www.infoworldschool.com


Gio trnh Lp trnh C cn bn Trang 103
10.2.2.3 S dng enum trong chng trnh
V d 10: Tnh tin lng tun cho nhn vin. Th by v Ch nht c tnh ph tri
Dng File Edit Search Run Compile Debug Project Option Window Help
1 /* Tinh tien luong tuan cho nhan vien */
2
3 #include <stdio.h>
4 #include <conio.h>
5
6 #define PHU_TROI_T7 1.5
7 #define PHU_TROI_CN 2.0
8
9 //dinh nghia enum
10 enum tuan{CHU_NHAT, THU_HAI, THU_BA, THU_TU, THU_NAM, THU_SAU, THU_BAY};
11 typedef enum tuan ngay_tuan; //dinh nghia ngay_tuan la tuan
12
13 void main(void)
14 {
15 int igio;
16 float fLuongCB, fLuongNgay, fTongLuong;
17 char cngay[][4] = {"Chu Nhat", "Thu Hai", "Thu Ba", "Thu Tu", "Thu Nam", "Thu
18 Sau", "Thu Bay"};
19 ngay_tuan engay;
20 ngay_tuan ngay_mai(ngay_tuan); //khai bao prototype
21
22 printf("Nhap vao luong can ban: ");
23 scanf("%f", &fLuongCB);
24
25 luong = 0.0;
26 printf("Nhap vao so gio lam viec tu Thu hai den Chu nhat:\n");
27 engay = CHU_NHAT;
28 do
29 {
30 engay = ngay_mai(engay);
31 printf("Nhap vao gio lam viec ngay %s :", cngay[engay]);
32 scanf("%d", &igio);
33 swith(engay)
34 {
35 case THU_HAI: case THU_BA: case THU_TU: case THU_NAM: case THU_SAU:
36 fLuongNgay = fLuongCB;
37 break;
38 case THU_BAY:
39 fLuongNgay = fLuongCB * PHU_TROI_T7;
40 break;
41 case CHU_NHAT:
42 fLuongNgay = fLuongCB * PHU_TROI_CN;
43 break;
44 }
45 fTongLuong += fLuongNgay * igio;
46 } while (ngay != CHU_NHAT);

Trng TH GII TIN HC 39 Nguyn Sn H, P5, Q3 T: 8.344.480 Website: www.infoworldschool.com


Gio trnh Lp trnh C cn bn Trang 104
47 printf("Tong luong tuan = %8.2f dong.\n", fTongLuong);
48 getch();
49 }
50
51 //ham chon ngay ke tiep
52 ngay_tuan ngay_mai(ngay_tuan en)
53 {
54 ngay_tuan engay_ke;
55 switch(en)
56 {
57 case CHU_NHAT : engay_ke = THU_HAI; break;
58 case THU_HAI : engay_ke = THU_BA; break;
59 case THU_BA : engay_ke = THU_TU; break;
60 case THU_TU : engay_ke = THU_NAM; break;
61 case THU_NAM : engay_ke = THU_SAU; break;
62 case THU_SAU : engay_ke = THU_BAY; break;
63 case THU_BAY : engay_ke = CHU_NHAT; break;
64 }
65 return (engay_ke);
66 }
F1 Help Alt-F8 Next Msg Alt-F7 Prev Msg Alt - F9 Compile F9 Make F10 Menu
) Kt qu in ra mn hnh
Nhap vao luong can ban: 250 Hm chn ngy k tip trn kh di, bn
Nhap vao so gio lam viec tu Thu hai den Chu nhat: thay t dng 54 n 65 bng cu lnh
Nhap vao gio lam viec ngay Thu Hai: 7 return (++en > 6 ? 0 : en); hoc
Nhap vao gio lam viec ngay Thu Ba: 8 return (++en % 7);
Nhap vao gio lam viec ngay Thu Tu: 6
Nhap vao gio lam viec ngay Thu Nam: 7 Chy li chng trnh, quan st, nhn xt
Nhap vao gio lam viec ngay Thu Sau: 8 v nh gi kt qu vi d liu khc.
Nhap vao gio lam viec ngay Thu Bay: 7
Nhap vao gio lam viec ngay Chu Nhat: 6
Tong luong tuan = 14625.00 dong.
_

) Gii thch chng trnh


chng trnh ny ta phi khai bo struct nhanvien l bin ton cc, v khi nh ngha
hm input v output c s dng kiu d liu struct nhanvin.
10.3 Bi tp

1. nh ngha 1 dy cu trc c th c dng lm danh b in thoi, gm c tn, a


ch, s in thoi, vi s mu tin ti a l 40. Vit chng trnh vi cc chc nng sau: nhp
thng mi, tm kim s in thoi, in danh sch theo qun.
2. Vit chng trnh c vo tn, a ch, sp xp tn v a ch theo th t alphabet, sau
hin th danh sch c sp xp.
3. Vit chng trnh nhn vo cc thng tin sau: Tn i bng, s trn thng, s trn
ha, s trn thua. In ra i bng c s im cao nht (vi 1 trn thng = 3 im, 1 trn ha = 1
im v 1 trn thua = 0 im).

Trng TH GII TIN HC 39 Nguyn Sn H, P5, Q3 T: 8.344.480 Website: www.infoworldschool.com


Gio trnh Lp trnh C cn bn Trang 105
4. Xy dng cu trc gm: H tn, ngy sinh, trng, s bo danh, im thi. Trong ,
im thi l cu trc gm 3 mn: Ton, L, Ha. Nhp liu vo khong 10 th sinh, tm v in ra
cc th sinh c tng im 3 mn >= 15.
5. Vit chng trnh to lp v tm kim d liu. Ni dung yu cu gm: Nhp h v tn,
a ch (gm: Qun, phng, t), tui, lng. Tm kim nhng ngi Qun 3 c tui di 30
thu nhp t 500.000 tr ln v in ra mn hnh.

Trng TH GII TIN HC 39 Nguyn Sn H, P5, Q3 T: 8.344.480 Website: www.infoworldschool.com


Gio trnh Lp trnh C cn bn Trang 106

Bi 11 :
TP TIN

11.1 Mc tiu
Sau khi hon tt bi ny hc vin s hiu v vn dng cc kin thc k nng c bn sau:
- ngha ca vic s dng tp tin (file)
- M, ng file
- Ghi, c file s nguyn, mng, chui.
- Mt s hm x l tp tin.
11.2 Ni dung

11.2.1 V d ghi, c s nguyn


Dng File Edit Search Run Compile Debug Project Option Window Help
1 /* Ghi n so nguyen vao file va doc ra tu file*/
2
3 #include <stdio.h>
4 #include <conio.h>
5 #include <stdlib.h>
6
7 void main(void)
8 {
9 FILE *f;
10 int in, i;
11 printf("Nhap vao so n: ");
12 scanf("%d", &in);
13
14 //Ghi file
15 if((f = fopen("int_data.dat", "wb")) == NULL) //mo file
16 {
17 printf("Khong the mo file!.\n");
18 exit(0);
19 }
20 else
21 for(i = 1; i <= in; i++)
22 fwrite(&i, sizeof(int), 1, f); //ghi file
23 fclose(f); //dong file
24
25 //Doc file
26 f = fopen("int_data.dat", "rb");
27 while(fread(&i, sizeof(int), 1, f) == 1)
28 printf("%d ", i);
29 fclose(f);
30 getch();
31 }
F1 Help Alt-F8 Next Msg Alt-F7 Prev Msg Alt - F9 Compile F9 Make F10 Menu

Trng TH GII TIN HC 39 Nguyn Sn H, P5, Q3 T: 8.344.480 Website: www.infoworldschool.com


Gio trnh Lp trnh C cn bn Trang 107

) Kt qu in ra mn hnh
Nhap vao so n: 10 Chy v th li chng trnh vi d liu khc.
1 2 3 4 5 6 7 8 9 10 Quan st kt qu.
_

) Gii thch chng trnh


Dng 9 : FILE *f; : khai bo bin con tr f c kiu cu trc FILE.
Dng 15 : if(f = fopen("int_data.dat", "wb") == NULL) : l cu lnh m tp tin c
tn int_data.dat mode "w" (ghi ) dng "b" (nh phn), sau khi lnh ny thc hin xong tr v
dng con tr FILE v gn cho f, nu kt qu tr v = NULL th khng th m c tp tin, tp tin
m mode "w" nu trn a c sn tp tin ny th ni dung ca n s b ghi , nu cha c th
tp tin s c to mi.
Dng 22 : fwrite(&i, sizeof(int), 1, f); : ghi thng tin vo tp tin, thng tin c ghi
vo mi ln l mt s nguyn i. Hm ny c 4 i s: a ch ghi cu trc, kch thc ca cu
trc v s cu trc s ghi, sau cng l con tr tr ti tp tin.
Dng 23 : fclose(f); : ng tp tin
Dng 26 : f = fopen("int_data.dat", "rb"); : m tp tin c tn int_data.dat mode
"r" (c) dng "b" (nh phn). Tp tin phi c sn trn a.
Dng 27 : while(fread(&i, sizeof(int), 1, f) == 1) : c thng tin t tp tin, mi ln
c mt s nguyn v lu vo bin i. Mi ln c thnh cng gi tr tr v s l s cu trc thc
s c c, nu gi tr tr v = 0 bo hiu kt thc file.
) T kha FILE phi vit bng ch in hoa. S dng fopen, fwrite, fread, fclose phi
khai bo #include <stdio.h>, NULL phi vit hoa.
11.2.2 Ghi, c mng
Dng File Edit Search Run Compile Debug Project Option Window Help
1 /* Ghi n so nguyen vao file va doc ra tu file*/
2
3 #include <stdio.h>
4 #include <conio.h>
5 #include <stdlib.h>
6
7 #define MAX 5
8
9 void main(void)
10 {
11 FILE *f;
12 int i, ia[MAX], ib[MAX];
13 for (i = 0; i < 10; i++)
14 {
15 printf("Nhap vao mot so: ");
16 scanf("%d", &ia[i]);
17 }
18
19 if((f = fopen("array.dat", "wb")) == NULL)
20 {
21 printf("Khong the mo file!\n");

Trng TH GII TIN HC 39 Nguyn Sn H, P5, Q3 T: 8.344.480 Website: www.infoworldschool.com


Gio trnh Lp trnh C cn bn Trang 108
22 exit(0);
23 }
24 fwrite(ia, sizeof(ia), 1, f); //ghi mang vao file
25 fclose(f);
26
27 f = fopen("array.dat", "rb");
28 fread(ib, sizeof(ib), 1, f); //doc mang tu file
29 for (i = 0; i < 10; i++)
30 printf("%d ", ib[i]);
31 fclose(f);
32 getch();
33 }
F1 Help Alt-F8 Next Msg Alt-F7 Prev Msg Alt - F9 Compile F9 Make F10 Menu
) Kt qu in ra mn hnh
Nhap vao mot so: 3 Chy v th li chng trnh vi d liu khc.
Nhap vao mot so: 6 Quan st kt qu.
Nhap vao mot so: 8
Nhap vao mot so: 1
Nhap vao mot so: 9
3 6 8 1 9
_

11.2.3 Ghi, c structure


Dng File Edit Search Run Compile Debug Project Option Window Help
1 /* Danh sach nhan vien */
2
3 #include <stdio.h>
4 #include <conio.h>
5 #include <stdlib.h>
6
7 #define MAX 50
8
9 void main(void)
10 {
11 FILE *f;
12 struct nhanvien
13 {
14 int manv;
15 char hoten[30];
16 };
17 nhanvien snv[MAX], snv1[MAX];
18 char ctam[10];
19 int i, in;
20 printf("Nhap vao so nhan vien: ");
21 gets(ctam);
22 in = atoi(ctam);
23
24 //Nhap danh sach nhan vien va ghi vao file
25 if((f = fopen("struct.dat", "wb")) == NULL)

Trng TH GII TIN HC 39 Nguyn Sn H, P5, Q3 T: 8.344.480 Website: www.infoworldschool.com


Gio trnh Lp trnh C cn bn Trang 109
26 {
27 printf("Khong the mo file!\n");
28 exit(0);
29 }
30 fwrite(&in, sizeof(int), 1, f); //ghi so nhan vien vao file
31 for(i = 0; i < in; i++)
32 {
33 printf("Nhap vao ma nhan vien thu %d: ", i + 1);
34 gets(ctam);
35 snv[i].manv = atoi(ctam);
36 printf("Nhap vao ho ten: ");
37 gets(snv[i].hoten);
38 fwrite(&snv[i], sizeof(nhanvien), 1, f); //ghi tung nhan vien vao file
39 }
40 fclose(f);
41
42 //doc danh sach nhan vien tu file va in ra
43 f = fopen("struct.dat", "rb");
44 fread(&in, sizeof(int), 1, f); //doc so nhan vien
45 for(i = 0; i < in; i++)
46 {
47 fread(&snv1[i], sizeof(nhanvien, 1, f); //doc tung nhan vien in ra man hinh
48 printf("%5d %s\n", snv[i].manv, snv[i].hoten);
49 }
50 getch();
51 }
F1 Help Alt-F8 Next Msg Alt-F7 Prev Msg Alt - F9 Compile F9 Make F10 Menu
) Kt qu in ra mn hnh
Nhap vao so nhan vien: 2 Chy v th li chng trnh vi d liu khc.
Nhap vao ma nhan vien thu 1: 123 Quan st kt qu.
Nhap vao ho ten: Le Thuy Doan Trang
Nhap vao ma nhan vien thu 2: 35
Nhap vao ho ten: Le Nguyen Tuan Anh
123 Le Thuy Doan Trang
35 Le Nguyen Tuan Anh
_

11.2.4 Cc mode khc m tp tin


3 v d trn ch s dng 2 mode "w" (ghi) v "r" (c), sau y l mt s mode khc:
"a": m ni thm, thng tin s c ghi thm vo cui ca tp tin c hoc to tp
tin mi nu cha c trn a.
"r+": m va c va ghi, tp tin phi c sn trn a.
"w+": m va c va ghi, ni dung ca tp tin c trn a s b ghi ln.
"a+": m c v ni thm, nu trn a cha c tp tin n s c to mi.
11.2.5 Mt s hm thao tc trn file khc
Xem bi Cc hm chun
11.3 Bi tp
Thm chc nng ghi, c file cc bi tp ca bi Mng v chui, Cc d liu t to.

Trng TH GII TIN HC 39 Nguyn Sn H, P5, Q3 T: 8.344.480 Website: www.infoworldschool.com


Gio trnh Lp trnh C cn bn Trang 110

Bi 12 :
QUY

12.1 Mc tiu
Sau khi hon tt bi ny hc vin s hiu v vn dng cc kin thc k nng c bn sau:
- ngha, phng php hot ng ca quy.
- C th thay vng lp bng quy.
12.2 Ni dung
Bt c mt hm no c th triu gi hm khc, nhng y mt hm no c th t
triu gi chnh mnh. Kiu hm nh th c gi l hm quy.
Phng php quy thng dng ph bin trong nhng ng dng m cch gii quyt c th
c th hin bng vic p dng lin tip cng gii php cho nhng tp hp con ca bi ton.
V d 1: tnh n!
n! = 1*2*3**(n-2)*(n-1)*n vi n >= 1 v 0! = 1.
Dng File Edit Search Run Compile Debug Project Option Window Help
1 /* Ham tinh giai thua */
2
3 #include <stdio.h>
4 #include <conio.h>
5
6 void main(void)
7 {
8 int in;
9 long giaithua(int);
10 printf("Nhap vao so n: ");
11 scanf("%d", &in);
12 printf("%d! = %ld.\n", in, giaithua(in));
13 getch();
14 }
15
16 long giaithua(int in)
17 {
18 int i;
19 long ltich = 1;
20 if (in == 0)
21 return (1L);
22 else
23 {
24 for (i = 1; i <= in; i++)
25 ltich *= i;
26 return (ltich);
27 }
28 }
F1 Help Alt-F8 Next Msg Alt-F7 Prev Msg Alt - F9 Compile F9 Make F10 Menu

Trng TH GII TIN HC 39 Nguyn Sn H, P5, Q3 T: 8.344.480 Website: www.infoworldschool.com


Gio trnh Lp trnh C cn bn Trang 111

) Kt qu in ra mn hnh
Nhap vao so n: 5 Th li chng trnh vi s liu khc.
5! = 120.
_

Vi n! = 1*2*3**(n-2)*(n-1)*n,
ta vit li nh sau: (1*2*3**(n-2)*(n-1))*n = n*(n-1)! = n*(n-1)*(n-2)!
) Ta vit li hm giaithua bng quy nh sau:
Dng File Edit Search Run Compile Debug Project Option Window Help
1 /* Ham tinh giai thua */
2
3 long giaithua(int in)
4 {
5 int i;
6 if (in == 0)
7 return (1L);
8 else
9 return (in * giaithua(in 1));
10 }
F1 Help Alt-F8 Next Msg Alt-F7 Prev Msg Alt - F9 Compile F9 Make F10 Menu
) Chy li chng trnh, quan st, nhn xt v nh gi kt qu
) Gii thch hot ng ca hm quy giaithua
V d gi tr truyn vo hm giaithua qua bin in = 5.
Th t gi thc hin hm giaithua
giaithua(in) return(in * giaithua(in 1))
5 5 * giaithua(4) = 5 * ?
4 4 * giaithua(3) = 4 * ?
3 3 * giaithua(2) = 3 * ?
2 2 * giaithua(1) = 2 * ?
1 1 * giaithua(0) = 1 * ?
Khi tham s in = 0 th return v gi tr 1L (gi tr 1 kiu long). Lc ny cc gi tr ?
bt u nh tr theo th t ngc li.
nh tr theo th t ngc li
giaithua(in) return(in * giaithua(in 1))
1 1 * giaithua(0) = 1 * 1 = 1
2 2 * giaithua(1) = 2 * 1 = 2
3 3 * giaithua(2) = 3 * 2 = 6
4 4 * giaithua(3) = 4 * 6 = 24
5 5 * giaithua(4) = 5 * 24 = 120
Kt qu sau cng ta c 5! = 120.

Trng TH GII TIN HC 39 Nguyn Sn H, P5, Q3 T: 8.344.480 Website: www.infoworldschool.com


Gio trnh Lp trnh C cn bn Trang 112
5! 5! =120

5 * 4! 5 * 4! = 120

4 * 3! 4 * 3! = 24

3 * 2! 3 * 2! = 6

2 * 1! 2 * 1! = 2

1 * 0! 1 * 0! = 1

Th t gi quy nh tr theo th t ngc li


V d 2: Dy s Fibonacci
0, 1, 1, 2, 3, 5, 8, 13, 21, 34, Bt u bng 0 v 1, cc s tip theo bng tng hai s i trc.
Dy Fibonacci c khai bo quy nh sau:
Fibonacci(0) = 0
Fibonacci(1) = 1
Fibonacci(n) = Fibonacci(n 1) + Fibonacci(n 2)
Dng File Edit Search Run Compile Debug Project Option Window Help
1 /* Tinh so fibonacci thu n */
2
3 #include <stdio.h>
4 #include <conio.h>
5
6 void main(void)
7 {
8 long in;
9 long fibonacci(long);
10 printf("Nhap vao so n: ");
11 scanf("%ld", &in);
12 printf("Fibonacci(%ld) = %ld.\n", in, fibonacci(in));
13 getch();
14 }
15
16 long fibonacci(long in)
17 {
18 if (in == 0 || in == 1)
19 return in;
20 else
21 return fibonacci(in 1) + fibonacci(in 2);
22 }
F1 Help Alt-F8 Next Msg Alt-F7 Prev Msg Alt - F9 Compile F9 Make F10 Menu
) Kt qu in ra mn hnh
Nhap vao so n: 10 Th li chng trnh vi s liu khc.
Fibonacci(10) = 55.
_

Trng TH GII TIN HC 39 Nguyn Sn H, P5, Q3 T: 8.344.480 Website: www.infoworldschool.com


Gio trnh Lp trnh C cn bn Trang 113

? S dng quy hay vng lp


Phng php quy khng phi bao gi cng l gii php hu hiu nht.Gii php
vng lp c hiu qu v mt thi gian v vng nh. Cn vi quy mi ln gi quy my phi
dnh mt s vng nh tr cc tr, thng s v bin cc b. Do , quy tn nhiu vng nh,
thi gian truyn i mc, thit lp vng nh trung gian v tr v kt qu Nhng s dng
phng php quy trng chng trnh p mt hn vng lp v tnh thuyt phc ca n. iu
ct li khi thit t chng trnh phi lm th no hm quy c th chm dt thng qua iu
kin c bn.
12.3 Bi tp
1. Vit hm quy tnh tng n s nguyn dng u tin:
tong (n) = n + tong (n 1)

Trng TH GII TIN HC 39 Nguyn Sn H, P5, Q3 T: 8.344.480 Website: www.infoworldschool.com


Gio trnh Lp trnh C cn bn Trang 114

Bi 13 :
TRNH SON THO CA BORLAND C

BC c h thng menu nhiu cp. chn mt mc trong Menu bn n phm F10 (kch hot
Menu), dng cc phm mi tn di chuyn vt sng n mc mun chn n Enter hoc n phm c k
t i mu (phm chn nhanh mu ). C th chn nhanh mc menu trn thanh menu chnh bn n
t hp phm Alt + phm c k t mu . V d: n t hp phm Alt + F kch hot menu File.
13.1 M tp tin son tho mi
Chn menu File -> chn mc New -> to file son tho mi c tn mc nh l
NONAME00.CPP, NONAME01.CPP ty theo s ln mc New c chn.
13.2 Lu tp tin

13.2.1 Nu l tp tin son tho mi cha lu


n phm F2 hoc chn menu File -> Save hoc chn menu File -> Save As s xut hin hp
thoi Save File As

Save File As
E:\BORLANDC\BIN\NONAME00.CPP OK
Files
..\

Cancel

<========================> Help

E:\BORLANDC\BIN\NONAME00.CPP
Directory 12:00am
+ Chn ng dn cn lu tp tin hp Files, chn ..\ tr v th mc cha th mc hin ti.
+ t tn tp tin hp Save File As
+ Chn OK
+ Hoc c th g [ a:][ng dn]<tn tp tin>, chn OK.
) Dng phm TAB chuyn i vt sng gia cc mc trong hp thoi.
V d: mun lu tp tin c tn BT_IF1.CPP vo th mc D:\BAITAPC
+ Bn g vo hp Save File As D: -> Enter (OK), danh sch cc th mc, tp tin ca D hin th
hp Files, chn th mc BAITAPC hp Files, g tn BT_IF1.CPP vo hp Save File As, chn OK.
+ Hoc nu bn nh r ng dn, g vo hp Save File As D:\BAITAPC\BT_IF1, chn OK.
13.2.2 Nu l tp tin lu t nht 1 ln hoc c m bng lnh Open:
+ n F2 hoc chn menu File -> Save, ni dung tp tin hin hnh s c cp nht nu
c thay i.
+ Chn menu File -> Save As, xut hin hp thoi Save File As, thc hin cc bc nh
mc 2.1 (ngha l bn mun lu ni dung tp tin hin hnh vi ng dn, tn tp tin khc).

Trng TH GII TIN HC 39 Nguyn Sn H, P5, Q3 T: 8.344.480 Website: www.infoworldschool.com


Gio trnh Lp trnh C cn bn Trang 115

) bit tp tin ang son tho lu hay cha, bn xem gc di tri ca s, nu


c du hoa th l vn bn ca bn c thay i v cha c lu.
13.3 M tp tin
M mt tp tin c trn a. n phm F3 hoc chn menu File -> Open, hp thoi Open a
File xut hin:

Name
D:\BAITAPC\*.CPP OK
Files
BT_IF1.CPP Replace
BT_FOR1.CPP
..\ Cancel

<========================> Help

D:\BAITAPC\*.CPP
BT_IF1.CPP 486 Oct 17, 2002 11:04am
+ Chn ng dn cn m tp tin hp Files, chn ..\ tr v th mc cha th mc hin ti.
+ Chn tp tin cn m hp Files.
+ Chn OK
+ Hoc c th g [ a:][ng dn]<tn tp tin>, chn OK.
V d: mun m tp tin c tn BT_IF1.CPP cha trong th mc D:\BAITAPC
+ Bn g vo hp Name D: -> Enter (OK), danh sch cc th mc, tp tin ca D hin th
hp Files, chn th mc BAITAPC hp Files, chn tp tin BT_IF1.CPP, chn OK.
+ Hoc bn c th g vo hp Name D:\BAITAPC\*.CPP hin th danh sch cc tp
tin c phn m rng CPP hp Files, chn tp tin BT_IF1.CPP, chn OK.
+ Hoc nu bn nh r ng dn, g vo hp Name D:\BAITAPC\BT_IF1.CPP, chn OK.
13.4 Cc phm, t hp phm thng dng

13.4.1 Cc phm di chuyn con tr


Phm / T hp phm Chc nng
Di chuyn con tr sang tri mt k t
Di chuyn con tr sang phi mt k t
Di chuyn con tr ln trn mt dng
Di chuyn con tr xung di mt dng
Home Di chuyn con tr v u dng
End Di chuyn con tr v cui dng
PgUp (Page Up) Lt li li mt trang mn hnh
PgDn (Page Down) Lt ti mt trang mn hnh
Ctrl PgUp Di chuyn con tr v u tp tin
Ctrl PgDn Di chuyn con tr v cui tp tin

Trng TH GII TIN HC 39 Nguyn Sn H, P5, Q3 T: 8.344.480 Website: www.infoworldschool.com


Gio trnh Lp trnh C cn bn Trang 116

Backspace () Xa mt k t bn tri con tr


Del (Delete) Xa mt k t ti v tr con tr
Ins (Insert) Chuyn i gia ch ghi chn v ghi
Enter Xung mt dng
13.4.2 Cc phm thao tc trn khi
Phm / T hp phm Chc nng
Shift nh du chn mt k t bn phi
Shift nh du chn mt k t bn tri
Shift nh du chn mt hng trn v tr con tr
Shift nh du chn mt hng ti v tr con tr
Shift Home nh du chn t u hng n v tr con tr
Shift End nh du chn t v tr con tr n cui hng
Shift PgUp nh du chn mt trang lui mn hnh
Shift PgDn nh du chn mt trang ti mn hnh
Ctrl Shift nh du chn mt t bn tri
Ctrl Shift nh du chn mt t bn phi
Ctrl Shift End nh du chn t v tr con tr n cui tp tin
Ctrl Shift Home nh du chn t v tr con tr n u tp tin
13.4.3 Cc thao tc xa
Phm Chc nng
Backspace () Xa mt k t bn tri con tr
Del (Delete) Xa mt k t ti v tr con tr
Ctrl Y Xa dng ti v tr con tr
Ctr K Y Xa khi
Ctrl Q Y Xa t v tr con tr n cui dng
Ctrl T Xa mt t ti v tr con tr
Insert Bt / tt ch vit chn /
13.4.4 Cc thao tc copy, di chuyn
Phm / T hp phm Chc nng
Ctrl Insert Sao chp khi chn vo Clipboard
Shift Delete Ct khi chn vo Clipboard
Ctrl Delete Xa khi chn
Shift Insert Dn thng tin t Clipboard vo v tr con tr
Ctrl K R c thng tin t tp tin vo ca s son tho
Ctrl K W Ghi thng tin t ca s son tho vo tp tin
13.4.5 Cc thao tc khc
Phm / T hp phm Chc nng
F3 To tp tin mi hoc np tp tin t a vo ca s

Trng TH GII TIN HC 39 Nguyn Sn H, P5, Q3 T: 8.344.480 Website: www.infoworldschool.com


Gio trnh Lp trnh C cn bn Trang 117
son tho
Alt F3 ng tp tin ti ca s hin hnh
F2 Lu tp tin hin hnh
F6 Chuyn i qua li gia cc ca s ang son tho
F5 Chuyn i ca s son tho maximize restore
Alt Backspace Phc hi li thao tc trc
Ctrl K H n / hin du khi
Ctrl Q F Tm kim
Ctrl L Lp li ln tm kim sau cng
Ctrl Q A Tm kim v thay th
Ctrl Q [, Xc nh cp ngoc bao 1 khi lnh
Ctrl Q ]
F1 Gi gip
Shift F1 Hin ca s gip theo mc
Hin ca s gip v hm, ton t tung ng
Ctrl F1
ti v tr con tr.
13.5 Ghi mt khi ra a
nh du chn khi bng cc phm thao tc trn khi. n t hp phm Ctrl - K - W, xut
hin hp thoi Write Block to File, thc hin cc bc nh lu tp tin.
13.6 Chn ni dung file t a vo v tr con tr
Di chuyn con tr n v tr cn chn ni dung, n t hp phm Ctrl - K - R, xut hin hp
thoi Read Block from File, thc hin cc bc nh m tp tin.
13.7 Tm kim vn bn trong ni dung son tho
n t hp phm Ctrl - Q - F hoc chn menu Search -> Find, hp thoi Find Text xut hin:
+ G ni dung cn tm vo hp Text to Find.
+ Nu cn nh du / b chn cc mc sau:
- Case-sensitive: phn bit ch hoa ch thng.
- Whole words only: tm vn bn ng ring mt t.
- Forward: Tm xui.
- Backward: Tm ngc.
+ Chn OK.
Khi tm xong, mun tm tip n t hp phm Ctrl - L hoc chn menu Search -> Search again.
13.8 Tm v thay th vn bn trong ni dung son tho
n t hp phm Ctrl - Q - A hoc chn menu Search -> Replace, hp thoi Find Text xut hin:
+ G ni dung cn thay th vo hp Text to Find.
+ G ni dung mi vo hp New Text.
+ Nu cn nh du /b chn cc mc sau:
- Case-sensitive: phn bit ch hoa ch thng.
- Whole words only: tm vn bn ng ring mt t.
- Forward: Tm xui.
- Backward: Tm ngc.
+ Chn OK thay th tng vn bn c tm thy, chn Change All thay th tt c.

Trng TH GII TIN HC 39 Nguyn Sn H, P5, Q3 T: 8.344.480 Website: www.infoworldschool.com


Gio trnh Lp trnh C cn bn Trang 118
13.9 Sa li c php
Khi bin dch chng trnh, nu thnh cng bn s nhn c thng bo t ca s Compile
(dng cui): Success: Press any key, ngc li l thng bo li Error: Press any key.
Nu l thng bo li, khi n phm bt k ca s Message xut hin cha danh sch cc li.
Thng bo li u tin c lm sng v dng c li trong chng trnh cng c lm sng.km
theo du cho bit trnh bin dch pht hin v tr li. Dng phm mi tn di chuyn n cc
thng bo li khc, bn s thy vt sng trong chng trnh cng s chuyn n dng cha li
tng ng. Nu bn Enter ti dng thng bo li no th con tr s chuyn vo ca s son tho
ti dng cha li tng ng.
V d: In ra "Hello".
File Edit Search Run Compile Debug Project Option Window Help
#include <stdio.h>
#include <conio.h>
void main(void)
{
printf("Hello";
gech();
}

Message
Compiling HELLO.CPP
Error HELLO.CPP 5: Function call missing )
Error HELLO.CPP 6: Function 'gech' should have a prototype

F1 Help Alt-F8 Next Msg Alt-F7 Prev Msg Alt - F9 Compile F9 Make F10 Menu
Vt sng nm thng bo li u tin v dng cha li tng ng trong chng trnh cng c
lm sng: Li dng 5, khng ng ngoc hm printf.
13.10 Chy tng bc

13.10.1 Mi ln 1 bc
mi bc thc hin ta phi bn phm F7. Vi ln bm F7 u tin, dng u tin trong chng
trnh (dng main()) s c lm sng, dng c lm sng ny c gi l dng chun b thc hin, v
n s c thc hin ln bm phm F7 tip theo. Mi ln bm phm F7 dng ang uc lm sng s
c thc hin, sau tr v mu bnh thng, v ty theo ni dung ca dng m mt dng lnh tip
theo no s c lm sng chun b thc hin bc tip theo.
Ta cng c th dng phm F8 thay cho F7 vi nhng dng khng c li gi hm c khai bo
trong chng trnh. S khc nhau gia F7 v F8 ch xy ra khi dng c lm sng c li gi hm c
khai bo trong chng trnh.
Nh vy nh chy tng bc, ta c th d dng nm c cc li logic trong chng trnh.

13.10.2 Ti lp li qu trnh g ri
Bm Ctrl-F2 hoc vo menu Run chn Program reset. Khi b nh dng cho vic g ri s c
gii ta, khng c dng no c lm sng v kt thc qu trnh g ri.

Trng TH GII TIN HC 39 Nguyn Sn H, P5, Q3 T: 8.344.480 Website: www.infoworldschool.com


Gio trnh Lp trnh C cn bn Trang 119
13.10.3 Dng ca s Watch
Ln tng bc thng c dng km vi vic s dng ca s Watch theo di gi tr ca bin
trong mi bc thc hin d tm ra nguyn nhn chng trnh thc hin sai.
lm iu ta phi nhp vo cc bin cn theo di, bng cch chn mc Add watch ca menu
Break/Watch hoc c th bm Ctrl-F7, sau nhp tn bin vo ti v tr con tr trong ca s Add watch
v bm Enter. nhp thm tn bin vo ca s ny phi lp li chc nng ny hoc bm phm Insert.
Trong son tho nu cha nhn thy ca s Watch, ta bm phm F5, khi trn mn hnh s ng
thi hin ra c 2 ca s, chuyn i gia 2 ca s ny bm phm F6. Mi bin trn ca s Watch thc
hin trn 1 dng. Khi ca s Watch c chn s c 1 dng c lm sng ch rng bin ang c
chn. Gi tr trong ca s Watch s thay i theo kt qu ca tng bc thc hin.

13.11 S dng Help (Gip )


- n phm F1 kch hot mn hnh Help chnh.
- Mun xem Help ca hm trong son tho, di chuyn con tr n v tr hm n t hp
phm Ctrl - F1
- n t hp phm Shift - F1 xem danh sch cc mc Help
- n t hp phm Alt - F1 quay v mn hnh Help trc .

Trng TH GII TIN HC 39 Nguyn Sn H, P5, Q3 T: 8.344.480 Website: www.infoworldschool.com


Gio trnh Lp trnh C cn bn Trang 120

Bi 14 :
CC H M
14.1 Khi nim
Cc ch s c bn ca mt h m l cc ch s dng biu din mi s trong h m y.
H m thng gp nht l h thp phn (h 16). Nhng do bn cht nh phn ca cc thit b
in t cho nn hu ht dng biu din d liu v cc php i s u thc hin bng h nh phn
(h 2). H bt phn (h 8) rt t dng v h thp phn (h 10) l h chng ta ang s dng biu
din mt con s no trong cuc sng hng ngy.
V d 1: H nh phn gm 2 ch s : 0, 1
H bt phn gm 8 ch s : 0, 1, 2, 3, 4, 5, 6, 7
H thp phn gm 10 ch s : 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
H thp lc phn gm 16 ch s : 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F
Cc ch s trong mt h m c sp xp theo quy tc: Bt k c s N nguyn dng
no, c N k hiu khc nhau biu din cc s trong h thng. Gi tr ca N k hiu ny c
sp xp t 0 n N-1.
V d 2: H nh phn c c s N = 2 : cc ch s c nh t 0..1
H bt phn c c s N = 8 : cc ch s c nh t 0..7
H thp phn c c s N = 10 : cc ch s c nh t 0..9
H thp lc phn c c s N = 16 : cc ch s c nh t 0..9, A..F
Do h thp lc phn c 16 ch s, m trong h thng ch vit ch biu din c 9 ch
s, v vy ngi ta chn cc k t A..F biu din 10..15 v n cng c xem nh 1 ch s
(A, BF) thay v phi vit 10, 1115 (2 ch s)
14.2 Quy tc
biu din mt s ca mt h m, ta dng ch s t gc di phi s .
011012 : biu th s nh phn.
0828 : biu th s bt phn.
2316 : biu th s thp lc phn.
i vi h thp phn ta c th ghi ch s hoc khng ghi (nhm hiu), v s thp phn l s
m ta s dng quen thuc hng ngy. Do , ta s dng cng thc sau chuyn i t cc h
m sang h thp phn (c s 10) :

X = anan-1 ... a1a0 = anbn + an-1bn-1 +... + a1b1 + a0b0 (*)

trong ,
- b : l c s h m.
- a0an : l cc ch s trong mt h m.
- X : l s thuc mt h m c s b.

Bng cc gi tr tng ng h thp phn, nh phn, bt phn, thp lc phn. (**)

Thp phn Nh phn Bt phn Thp lc phn


0 0000 0 0
1 0001 1 1
2 0010 2 2
3 0011 3 3
4 0100 4 4
5 0101 5 5
6 0110 6 6
Trng TH GII TIN HC 39 Nguyn Sn H, P5, Q3 T: 8.344.480 Website: www.infoworldschool.com
Gio trnh Lp trnh C cn bn Trang 121
7 0111 7 7
8 1000 10 8
9 1001 11 9
10 1010 12 A
11 1011 13 B
12 1100 14 C
13 1101 15 D
14 1110 16 E
15 1111 17 F

14.3 Chuyn i gia cc h

14.3.1 Chuyn i gia h 2 v h 10


Chuyn i t h 2 sang h 10
V d 3: X = 010112 , chuyn sang h 10 ta dng cng thc (*)
X = 0*24 + 1*23 + 0*22 + 1*21 + 1*20
= 0+8+0+2+1
= 11
V d 4: X = 10110102, chuyn sang h 10 ta dng cng thc (*)
X = 1*26 + 0*25 + 1*24 + 1*23 + 0*22 + 1*21 + 0*20
= 64 + 0 + 16 + 8 + 0 + 2 + 0
= 90
Chuyn i t h 10 sang h 2
V d 5: X = 11

11 2 11 chia 2 = 5 d 1
1 5 2
5 chia 2 = 2 d 1
1 2 2
2 chia 2 = 1 d 0
0 1 2
1 0 1 chia 2 = 0 d 1

10112 kt qu h nh phn 10112

V d 6: X = 90
90 chia 2 = 2 d 0
90 2
45 45 chia 2 = 1 d 1
0 2
1 22 2 22 chia 2 = 0 d 0
0 11 2 11 chia 2 = 5 d 1
1 5 2
5 chia 2 = 2 d 1
1 2 2
0 1 2 2 chia 2 = 1 d 0

1 0 1 chia 2 = 0 d 1
10110102 kt qu h nh phn 10110102

Trng TH GII TIN HC 39 Nguyn Sn H, P5, Q3 T: 8.344.480 Website: www.infoworldschool.com


Gio trnh Lp trnh C cn bn Trang 122
14.3.2 Chuyn i gia h 8 v h 10
Chuyn i t h 8 sang h 10
V d 7: X = 21068 , chuyn sang h 10 ta dng cng thc (*)
X = 2*83 + 1*82 + 0*81 + 6*80
= 1024 + 64 + 0 + 6
= 1094

V d 8: X = 1308 , chuyn sang h 10 ta dng cng thc (*)


X = 1*82 + 3*81 + 0*80
= 64 + 24 + 0
= 88
Chuyn i t h 10 sang h 8
V d 9: X = 1094

1094 8 1094 chia 8 = 136 d 6


6 136 8
136 chia 8 = 17 d 0
0 17 8
17 chia 8 = 2 d 1
1 2 8
2 0 2 chia 8 = 0 d 2

21068 kt qu h bt phn 21068

V d 10: X = 88

88 8 88 chia 8 = 11 d 0
0 11 8 11 chia 8 = 1 d 3
3 1 8
1 chia 8 = 0 d 1
1 0
1308 kt qu h bt phn 1308

14.3.3 Chuyn i gia h 16 v h 10


Chuyn i t h 16 sang h 10
V d 11: X = F4016 , chuyn sang h 10 ta dng cng thc (*)
X = 15*162 + 4*161 + 0*160
= 3840 + 64 + 0
= 3904

V d 12: X = 1D16 , chuyn sang h 10 ta dng cng thc (*)


X = 1*161 + 13*160
= 16 + 13
= 29

Trng TH GII TIN HC 39 Nguyn Sn H, P5, Q3 T: 8.344.480 Website: www.infoworldschool.com


Gio trnh Lp trnh C cn bn Trang 123
Chuyn i t h 10 sang h 16
V d 13: X = 3904

3904 16 3904 chia 16 = 244 d 0


0 244 16
244 chia 16 = 15 d 4
4 15 16 S 15 tng ng
trong h 16 l F
15 0 15 chia 16 = 0 d 15
(xem bng (**))
F4016 kt qu h thp lc phn F4016

V d 14: X = 29

29 16 29 chia 16 = 1 d 13
13 1 16 S 13 tng ng
1 chia 16 = 0 d 1
1 0 trong h 16 l D
(xem bng (**))
1D16 kt qu h thp lc phn 1D16

14.3.4 Chuyn i gia h 2 v h 16


Chuyn i t h 2 sang h 16
V d 15: X = 010112 , chuyn sang h 16 ta tra trong bng (**)
X = B16
Din gii : 0 10112
0 B16 = B16

V d 16: X = 10110102, chuyn sang h 16 ta tra trong bng (**)


X = 5A16
Din gii : 101 10102
5 A16 = 5A16

Chuyn i t h 16 sang h 2
V d 17: X = B16 , chuyn sang h 2 ta tra trong bng (**)
X = 10112
Din gii : B16
10112 = 10112

V d 18: X = 5A16, chuyn sang h 2 ta tra trong bng (**)


X = 10110102
Din gii : 5 A16
0101 10102 = 10110102

Trng TH GII TIN HC 39 Nguyn Sn H, P5, Q3 T: 8.344.480 Website: www.infoworldschool.com


Gio trnh Lp trnh C cn bn Trang 124

Bi 15 :
BIU THC V PHP TON
15.1 Biu thc
L s phi hp ca nhng ton t v ton hng.
V d 1:
a+b
b = 1 + 5 * 2/i
a = 6 % (7 + 1)
x++ * 2/4 + 5 power(i, 2)
Ton hng s dng trong biu thc c th l hng s, bin, hm.
15.2 Php ton
Trong C c 4 nhm ton t chnh yu sau y:
15.2.1 Php ton s hc
+ : cng p dng trn tt c cc ton hng c kiu d liu char, int
: tr float, double (k c long, short, unsigned)
* : nhn
/ : chia
% : ly phn d p dng trn cc ton hng c kiu d liu char, int, long

* Th t u tin: o du +, ( ) *, / , % +,
V d 2:
10%4 = 2 (10 chia 4 d 2); 9%3 = 0 (9 chia 3 d 0)
3 * 5 + 4 = 19
6+2/23=4
7 + 2 * ((4 + 3) * 4 + 8) = 65
) ch s dng cp ngoc () trong biu thc, cp ngoc n c thc hin theo th t
u tin t trong ra ngoi.
15.2.2 Php quan h
> : ln hn
>= : ln hn hoc bng
< : nh hn
<= : nh hn hoc bng
== : bng
!= : khc
* Th t u tin: > , >= , < , <= == , !=

) Kt qu ca php ton quan h l s nguyn kiu int, bng 1 nu ng, bng 0 nu sai.
Php ton quan h ngoi ton hng c s dng l s cn c s dng vi kiu d liu char.
* Th t u tin gia ton t s hc v ton t quan h
Ton t s hc Ton t quan h

V d 3:
4 > 10 c gi tr 0 (sai)

Trng TH GII TIN HC 39 Nguyn Sn H, P5, Q3 T: 8.344.480 Website: www.infoworldschool.com


Gio trnh Lp trnh C cn bn Trang 125
4 >= 4 c gi tr 1 (ng)
3 == 5 c gi tr 0 (sai)
2 <= 1 c gi tr 0 (sai)
6 != 4 c gi tr 1 (ng)
63<4 c gi tr 1 (ng), tng ng (6 3) < 4
2 * 4 < 3 + 2 c gi tr 0 (sai), tng ng (2 * 4) < (3 + 2)
15.2.3 Php ton lun l
! : NOT (php ph nh)
&& : AND (php v)
|| : OR (php hoc)

Ton hng a Ton hng b !a a && b a || b


Khc 0 Khc 0 0 (sai) 1 (ng) 1 (ng)
Khc 0 Bng 0 0 (sai) 0 (sai) 1 (ng)
Bng 0 Khc 0 1 (ng) 0 (sai) 1 (ng)
Bng 0 Bng 0 1 (ng) 0 (sai) 0 (sai)

* Th t u tin: ! && ||
V d 4:
!(2 <= 1) c gi tr 1 (ng)
5 && 10 c gi tr 1 (ng)
!6 c gi tr 0 (sai)
1 && 0 c gi tr 0 (sai)
1 || 0 c gi tr 1 (ng)
* Th t u tin gia cc ton t:
! Ton t s hc Ton t quan h && ||

15.2.4 Php ton trn bit (bitwise)


& : v (AND)
| : hoc (OR)
^ : hoc loi tr (XOR)
>> : dch phi
<< : dch tri
~ : o
Bit a Bit b ~a a&b a|b a^b
0 0 1 0 0 0
0 1 1 0 1 1
1 0 0 0 1 1
1 1 0 1 1 0
V d 5:
a = 13 i ra h nh phn 1101
b = 10 i ra h nh phn 1010
1101 1101 1101
& 1010 | 1010 ^ 1010
= 1000 = 1111 = 0111
= 8 = 15 = 7 (dng thp phn)

Trng TH GII TIN HC 39 Nguyn Sn H, P5, Q3 T: 8.344.480 Website: www.infoworldschool.com


Gio trnh Lp trnh C cn bn Trang 126
a = 1235 i ra h nh phn 0100 1101 0011
b = 465 i ra h nh phn 0001 1101 0001
0100 1101 0011 0100 1101 0011 0100 1101 0011
& 0001 1101 0001 | 0001 1101 0001 ^ 0001 1101 0001
= 0000 1101 0001 = 0101 1101 0011 = 0101 0000 0010
= 209 = 1491 = 1282 (dng thp phn)
15.2.5 Cc php ton khc
1. Php ton gn
Php gn l thay th gi tr hin ti ca bin bng mt gi tr mi.
Cc php gn: =, +=, =, *=, /=, %=, <<=, >>=, &=, |=, ^=.
V d 6: ta c gi tr i = 3
i=i+3 i=6
i += 3 i=6i=i+3
i *= 3 i=9i=i*3
2. Php ton tng, gim: ++,
Ton t ++ s cng thm 1 vo ton hng ca n, ton t s tr i 1.
V d 7: ta c gi tr n = 6
+ Sau php tnh ++n hoc n++, ta c n = 7.
+ Sau php tnh n hoc n , ta c n = 5.
* S khc nhau gia ++n v n++, n v n
+ Sau php tnh x = ++n + 2, ta c x = 9. (n tng 1 cng vi 2 ri gn cho x)
+ Sau php tnh x = n++ + 2, ta c x = 8. (n cng vi 2 gn cho x ri mi tng 1)
15.2.6 u tin ca cc php ton
u tin Cc php ton Trnh t kt hp
1 ( ) [ ] -> Tri sang phi
2 ! ~ & * ++ (type) sizeof Phi sang tri
3 * / % Tri sang phi
4 + Tri sang phi
5 << >> Tri sang phi
6 < <= > >= Tri sang phi
7 == != Tri sang phi
8 & Tri sang phi
9 ^ Tri sang phi
10 | Tri sang phi
11 && Tri sang phi
12 || Tri sang phi
13 ? : Phi sang tri
14 = += = *= /= %= <<= >>= &= ^= |= Phi sang tri
15 , Tri sang phi
Lu :
- Php o () dng 2, php tr () dng 4
- Php ly a ch (&) dng 2, php AND bit (&) dng 8
- Php ly i tng con tr (*) dng 2, php nhn (*) dng 3.
15.3 Bi tp
1. Gi s a, b, c l bin kiu int vi a = 8, b = 3 v c = 5. Xc nh gi tr cc biu thc sau:
a+b+c a%c*2 a * (a % b)
a/bc 2 * b + 3 * (a c) a * (b + (c 4 * 3))
Trng TH GII TIN HC 39 Nguyn Sn H, P5, Q3 T: 8.344.480 Website: www.infoworldschool.com
Gio trnh Lp trnh C cn bn Trang 127
a+c/a c * (b / a) 5*a6/b
a%b (a * b) % c 5%b%c
2. Gi s x, y, z l bin kiu float vi x = 8.8, y = 3.5 v z = 5.2. Xc nh gi tr cc biu thc sau:
x+y+z z / (y + x) x/yz*y
5 * y + 6 * (x z) (z / y) + x 2.5 * x / z (y + 6)
x/z 2*y/3*z 5 * 6 / ((x + y ) / z)
x%z 2 * y / (3 * z) x / y*(6 + ((zy)+3.4))
3. Cho chng trnh C vi cc khai bo v khi to cc bin nh sau:
int i = 8, j = 5;
float x = 0.005, y = 0.01;
char c = 'c', d = 'd';
Hy xc nh gi tr tr v ca cc biu thc sau:
(3 * i 2 * j) % (4 * d c) c<d
2 * ((i / 4) + (6 * (j 3)) % (i + j 4)) x >= 0
(i 7 * j) % (c + 3 * d) / (x y) x<y
(i + j) * 1 j != 6
++i c == 99
i++ d != 100
i++ + 5 5 * (i + j + 1) > 'd'
++i + 5 (3 * x + y) == 0
j 2 * x + (y == 0)
j !(i < j)
j + i !(d == 100)
j 5 !(x < 0)
++x (i > 0) && (j < 6)
y-- (i > 0) !! (j < 5)
i >= j (x > y) && (i > 0) || (j < 5)
4. Cho chng trnh c cc khai bo bin v khi to nh sau:
int i = 8, j = 5, k;
float x = 0.005, y = 0.01, z;
char a, b, c = 'c', d = 'd';
Xc nh gi tr cc biu thc gn sau:
k = (i + j * 4) z=i/j i %= j
x = (x + y * 1.2) a=b=d i += (j 3)
i=j y =x k = (j = = 5) ? i : j
k = (x + y) x *= 2 k = (j > 5) ? i : j
k=c i /= j i += j *= i /= 2
i = j = 1.1 i += 2 a = (c < d) ? c : d
z=k=x z = (x >= 0) ? x : 0 i = (j > 0) ? j : 0
k=z=x z = (y >= 0) ? y : 0 i = (i*9*(3+(8*j/3)))

Trng TH GII TIN HC 39 Nguyn Sn H, P5, Q3 T: 8.344.480 Website: www.infoworldschool.com


Gio trnh Lp trnh C cn bn Trang 128

Bi 16 :
MT S HM CHUN THNG DNG

16.1 Cc hm chuyn i d liu

16.1.1 atof
double atof(const char *s); ) Phi khai bo math.h hoc stdlib.h
Chuyn i 1 chui sang gi tr double.
V d: float f;
char *str = "12345.67";
f = atof(str);
Kt qu f = 12345.67;
16.1.2 atoi
int atoi(const char *s); ) Phi khai bo stdlib.h
Chuyn i 1 chui sang gi tr int.
V d: int i;
char *str = "12345.67";
i = atoi(str);
Kt qu i = 12345
16.1.3 itoa
char *itoa(int value, char *string, int radix); ) Phi khai bo stdlib.h
Chuyn i s nguyn value sang chui string theo c s radix.
V d: int number = 12345;
char string[25];
itoa(number, string, 10); //chuyn i number sang chui theo c s 10
Kt qu string = "12345";
itoa(number, string, 2); //chuyn i number sang chui theo c s 2
Kt qu string = "11000000111001";
16.1.4 tolower
int tolower(int ch); ) Phi khai bo ctype.h
i ch hoa sang ch thng.
V d: int len, i;
char *string = "THIS IS A STRING";
len = strlen(string);
for (i = 0; i < len; i++)
string[i] = tolower(string[i]); //i t k t trong string thnh ch thng
16.1.5 toupper
int toupper(int ch); ) Phi khai bo ctype.h
i ch thng sang ch hoa.
V d: int len, i;
char *string = "this is a string";
len = strlen(string);
for (i = 0; i < len; i++)
string[i] = toupper(string[i]); //i t k t trong string thnh ch thng

Trng TH GII TIN HC 39 Nguyn Sn H, P5, Q3 T: 8.344.480 Website: www.infoworldschool.com


Gio trnh Lp trnh C cn bn Trang 129
16.2 Cc hm x l chui k t

16.2.1 strcat
char *strcat(char *dest, const char *src); ) Phi khai bo string.h
Thm chui src vo sau chui dest.
16.2.2 strcpy
char *strcpy(char *dest, const char *src); ) Phi khai bo string.h
Chp chui src vo dest.
V d: char destination[25];
char *blank = " ", *c = "C++", *borland = "Borland";
strcpy(destination, borland); //chp chui borland vo destination
strcat(destination, blank); //thm chui blank vo sau chui destination
strcat(destination, c); //thm chui c vo sau chui destination
16.2.3 strcmp
int *strcmp(const char *s1, const char *s2); ) Phi khai bo string.h
So snh chui s1 vi chui s2. Kt qu tr v:
< 0 nu s1 < s2
= 0 nu s1 = s2
> 0 nu s1 > s2
V d: char *buf1 = "aaa", *buf2 = "bbb", *buf3 = "aaa";
strcmp(buf1, buf2); //kt qu tr v - 1
strcmp(buf1, buf3); //kt qu tr v 0
strcmp(buf2, buf3); //kt qu tr v 1
16.2.4 strcmpi
int *strcmp(const char *s1, const char *s2); ) Phi khai bo string.h
So snh chui s1 vi chui s2 khng phn bit ch hoa, ch thng. Kt qu tr v:
< 0 nu s1 < s2
= 0 nu s1 = s2
> 0 nu s1 > s2
V d: char *buf1 = "aaa", *buf2 = "AAA";
strcmp(buf1, buf2); //kt qu tr v 0
16.2.5 strlwr
char *strlwr(char *s); ) Phi khai bo string.h
Chuyn chui s sang ch thng
V d: char *s = "Borland C";
s = strlwr(s); //kt qu s = "borland c"
16.2.6 strupr
char *strupr(char *s); ) Phi khai bo string.h
Chuyn chui s sang ch hoa
V d: char *s = "Borland C";
s = strlwr(s); //kt qu s = "BORLAND C"

Trng TH GII TIN HC 39 Nguyn Sn H, P5, Q3 T: 8.344.480 Website: www.infoworldschool.com


Gio trnh Lp trnh C cn bn Trang 130
16.2.7 strlen
int strlen(const char *s); ) Phi khai bo string.h
Tr v di chui s.
V d: char *s = "Borland C";
int len_s;
len_s = strlen(s); //kt qu len_s = 9
16.3 Cc hm ton hc

16.3.1 abs
int abs(int x); ) Phi khai bo stblib.h
Cho gi tr tuyt i ca s nguyn x.
V d: int num = - 123;
num = abs(num); //kt qu num = 123
16.3.2 labs
long int labs(long int x); ) Phi khai bo stblib.h
Cho gi tr tuyt i ca s nguyn di x.
V d: int num = - 12345678L;
num = labs(num); //kt qu num = 12345678
16.3.3 rand
int rand(void); ) Phi khai bo stblib.h
Cho 1 gi tr ngu nhin t 0 n 32767
V d: int num;
randomize(); //dng hm ny khi u b s ngu nhin
num = rand(); //kt qu num = 1 con s trong khong 0..32767
16.3.4 random
int random(int num); ) Phi khai bo stblib.h
Cho 1 gi tr ngu nhin t 0 n 32767
V d: int n;
randomize();
n = random(100); //kt qu n = 1 con s trong khong 0..99
16.3.5 pow
double pow(double x, double y); ) Phi khai bo math.h
Tnh x m y
V d: double x = 2.0, y = 3.0, z;
z = pow(x, y); //kt qu z = 8.0
16.3.6 sqrt
double sqrt(double x); ) Phi khai bo math.h
Tnh cn bc 2 ca x.
V d: double x = 4.0, y;
y = sqrt(x); //kt qu y = 2.0

Trng TH GII TIN HC 39 Nguyn Sn H, P5, Q3 T: 8.344.480 Website: www.infoworldschool.com


Gio trnh Lp trnh C cn bn Trang 131
16.4 Cc hm x l file

16.4.1 rewind
void rewind(FILE *stream); ) Phi khai bo stdio.h
a con tr v u file.
16.4.2 ftell
long ftell(FILE *stream); ) Phi khai bo stdio.h
Tr v v tr con tr file hin ti.
16.4.3 fseek
int fseek(FILE *stream, long offset, int whence); ) Phi khai bo stdio.h
Di chuyn con tr file n v tr mong mun
long offset: ch ra s byte k t v tr trc n v tr bt u c
int whence: ch ra im xut pht tnh offset gm cc gi tr sau: SEEK_SET
(u tp tin), SEEK_CUR (ti v tr con tr hin hnh), SEEK_END (cui tp tin).

Trng TH GII TIN HC 39 Nguyn Sn H, P5, Q3 T: 8.344.480 Website: www.infoworldschool.com

You might also like