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 U 4.1 Mc tiu .............................................................................................................................. 21 4.2 Ni dung .............................................................................................................................. 21 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 ................................................................................................................................. 48 5.3.1 S dng lnh if ............................................................................................................... 48 5.3.2 S dng lnh switch ....................................................................................................... 49 5.4 Bi tp lm thm ................................................................................................................ 49 BI 6 : CU TRC VNG LP .......................................................................... 51 6.1 Mc tiu .............................................................................................................................. 51 6.2 Ni dung .............................................................................................................................. 51 6.2.1 Lnh for ........................................................................................................................... 51 6.2.2 Lnh break ...................................................................................................................... 56 6.2.3 Lnh continue ................................................................................................................. 56 6.2.4 Lnh while....................................................................................................................... 56 6.2.5 Lnh dowhile .............................................................................................................. 58 6.2.6 Vng lp lng nhau ........................................................................................................ 60 6.2.7 So snh s khc nhau ca cc vng lp ....................................................................... 61 6.3 Bi tp ................................................................................................................................. 62 BI 7 : HM ......................................................................................................... 65 7.1 Mc tiu .............................................................................................................................. 65 7.2 Ni dung .............................................................................................................................. 65 7.2.1 Cc v d v hm ............................................................................................................ 65 7.2.2 Tham s dng tham bin v tham tr ........................................................................... 68 HanoiAptech Computer Education Center Thanghv Gio trnh Lp trnh C cn bn Trang 3 7.2.3 S dng bin ton cc ................................................................................................... 69 7.2.4 Dng dn hng #define ............................................................................................... 71 7.3 Bi tp ................................................................................................................................. 71 BI 8 : MNG V CHUI ................................................................................... 72 8.1 Mc tiu .............................................................................................................................. 72 8.2 Ni dung .............................................................................................................................. 72 8.2.1 Mng ................................................................................................................................ 72 8.2.1.1 Cch khai bo mng ............................................................................................... 72 8.2.1.2 Tham chiu n tng phn t mng .................................................................... 72 8.2.1.3 Nhp d liu cho mng .......................................................................................... 73 8.2.1.4 c d liu t mng ............................................................................................... 73 8.2.1.5 S dng bin kiu khc .......................................................................................... 74 8.2.1.6 K thut Sentinal .................................................................................................... 74 8.2.1.7 Khi to mng ......................................................................................................... 75 8.2.1.8 Khi to mng khng bao hm kch thc .......................................................... 76 8.2.1.9 Mng nhiu chiu ................................................................................................... 76 8.2.1.10 Tham chiu n tng phn t mng 2 chiu ....................................................... 76 8.2.1.11 Nhp d liu cho mng 2 chiu ............................................................................. 77 8.2.1.12 c d liu t mng 2 chiu .................................................................................. 77 8.2.1.13 S dng bin kiu khc trong mng 2 chiu ........................................................ 78 8.2.1.14 Khi to mng 2 chiu ........................................................................................... 78 8.2.1.15 Dng mng 1 chiu lm tham s cho hm ........................................................... 79 8.2.1.16 Dng mng 2 chiu lm tham s cho hm ........................................................... 82 8.2.2 Chui ............................................................................................................................... 84 8.2.2.1 Cch khai bo chui ............................................................................................... 84 8.2.2.2 Hm nhp (gets), xut (puts) chui ....................................................................... 85 8.2.2.3 Khi to chui ......................................................................................................... 86 8.2.2.4 Mng chui .............................................................................................................. 86 8.3 Bi tp ................................................................................................................................. 87 BI 9 : CON TR ................................................................................................ 90 9.1 Mc tiu .............................................................................................................................. 90 9.2 Ni dung .............................................................................................................................. 90 9.2.1 Con tr? .......................................................................................................................... 90 9.2.2 Khi bo bin con tr .................................................................................................... 90 9.2.3 Truyn a ch sang hm ............................................................................................... 91 9.2.4 Con tr v mng ............................................................................................................. 92 9.2.5 Con tr tr n mng trong hm ................................................................................. 92 9.2.6 Con tr v chui ............................................................................................................. 93 9.2.7 Khi to mng con tr tr n chui ........................................................................... 94 9.2.8 X l con tr tr n chui ........................................................................................... 95 9.2.9 Con tr tr n con tr .................................................................................................. 97 9.3 Bi tp ................................................................................................................................. 98 HanoiAptech Computer Education Center Thanghv Gio trnh Lp trnh C cn bn Trang 4 BI 10 : CC KIU D LIU T TO ................................................................. 99 10.1 Mc tiu .............................................................................................................................. 99 10.2 Ni dung .............................................................................................................................. 99 10.2.1 Structure ......................................................................................................................... 99 10.2.1.1 Khai bo kiu structure ......................................................................................... 99 10.2.1.2 Cch khai bo bin c kiu structure ................................................................... 99 10.2.1.3 Tham chiu cc phn t trong structure .............................................................. 99 10.2.1.4 Khi to structure ................................................................................................ 101 10.2.1.5 Structure lng nhau .............................................................................................. 102 10.2.1.6 Truyn structure sang hm ................................................................................. 103 10.2.2 Enum ............................................................................................................................. 105 10.2.2.1 nh ngha kiu enum .......................................................................................... 105 10.2.2.2 Cch khai bo bin c kiu enum ....................................................................... 106 10.2.2.3 S dng enum trong chng trnh ..................................................................... 106 10.3 Bi tp ............................................................................................................................... 108 BI 11 : TP TIN ................................................................................................. 109 11.1 Mc tiu ............................................................................................................................ 109 11.2 Ni dung ............................................................................................................................ 109 11.2.1 V d ghi, c s nguyn .............................................................................................. 109 11.2.2 Ghi, c mng .............................................................................................................. 110 11.2.3 Ghi, c structure ........................................................................................................ 111 11.2.4 Cc mode khc m tp tin ..................................................................................... 112 11.2.5 Mt s hm thao tc trn file khc ............................................................................. 112 11.3 Bi tp ............................................................................................................................... 113 BI 12 : QUY ................................................................................................. 114 12.1 Mc tiu ............................................................................................................................ 114 12.2 Ni dung ............................................................................................................................ 114 12.3 Bi tp ............................................................................................................................... 117 BI 13 : TRNH SON THO CA BORLAND C .............................................. 118 13.1 M tp tin son tho mi ................................................................................................ 118 13.2 Lu tp tin ........................................................................................................................ 118 13.2.1 Nu l tp tin son tho mi cha lu ....................................................................... 118 13.2.2 Nu l tp tin lu t nht 1 ln hoc c m bng lnh Open: ........................ 118 13.3 M tp tin ......................................................................................................................... 119 13.4 Cc phm, t hp phm thng dng ............................................................................. 119 13.4.1 Cc phm di chuyn con tr ........................................................................................ 119 HanoiAptech Computer Education Center Thanghv Gio trnh Lp trnh C cn bn Trang 5 13.4.2 Cc phm thao tc trn khi ........................................................................................ 120 13.4.3 Cc thao tc xa ........................................................................................................... 120 13.4.4 Cc thao tc copy, di chuyn ....................................................................................... 120 13.4.5 Cc thao tc khc ......................................................................................................... 120 13.5 Ghi mt khi ra a ......................................................................................................... 121 13.6 Chn ni dung file t a vo v tr con tr ................................................................... 121 13.7 Tm kim vn bn trong ni dung son tho ................................................................ 121 13.8 Tm v thay th vn bn trong ni dung son tho ...................................................... 121 13.9 Sa li c php ................................................................................................................. 122 13.10 Chy tng bc ............................................................................................................... 122 13.11 S dng Help (Gip ) .................................................................................................. 122 BI 14 : CC H M ........................................................................................ 124 14.1 Khi nim ......................................................................................................................... 124 14.2 Quy tc .............................................................................................................................. 124 14.3 Chuyn i gia cc h ................................................................................................... 125 14.3.1 Chuyn i gia h 2 v h 10 .................................................................................... 125 14.3.2 Chuyn i gia h 8 v h 10 .................................................................................... 126 14.3.3 Chuyn i gia h 16 v h 10 .................................................................................. 126 14.3.4 Chuyn i gia h 2 v h 16 .................................................................................... 127 BI 15 : BIU THC V PHP TON ............................................................... 128 15.1 Biu thc ........................................................................................................................... 128 15.2 Php ton .......................................................................................................................... 128 15.2.1 Php ton s hc ........................................................................................................... 128 15.2.2 Php quan h ................................................................................................................ 128 15.2.3 Php ton lun l .......................................................................................................... 129 15.2.4 Php ton trn bit (bitwise) ......................................................................................... 129 15.2.5 Cc php ton khc ...................................................................................................... 130 15.2.6 u tin ca cc php ton ...................................................................................... 130 15.3 Bi tp ............................................................................................................................... 130 BI 16 : MT S HM CHUN THNG DNG ............................................. 132 16.1 Cc hm chuyn i d liu ........................................................................................... 132 16.1.1 atof ................................................................................................................................. 132 16.1.2 atoi ................................................................................................................................. 132 16.1.3 itoa ................................................................................................................................. 132 16.1.4 tolower ........................................................................................................................... 132 HanoiAptech Computer Education Center Thanghv Gio trnh Lp trnh C cn bn Trang 6 16.1.5 toupper .......................................................................................................................... 132 16.2 Cc hm x l chui k t .............................................................................................. 133 16.2.1 strcat .............................................................................................................................. 133 16.2.2 strcpy ............................................................................................................................. 133 16.2.3 strcmp ............................................................................................................................ 133 16.2.4 strcmpi .......................................................................................................................... 133 16.2.5 strlwr ............................................................................................................................. 133 16.2.6 strupr ............................................................................................................................. 133 16.2.7 strlen .............................................................................................................................. 134 16.3 Cc hm ton hc ............................................................................................................ 134 16.3.1 abs .................................................................................................................................. 134 16.3.2 labs ................................................................................................................................. 134 16.3.3 rand ............................................................................................................................... 134 16.3.4 random .......................................................................................................................... 134 16.3.5 pow ................................................................................................................................ 134 16.3.6 sqrt ................................................................................................................................. 134 16.4 Cc hm x l file ............................................................................................................ 135 16.4.1 rewind ............................................................................................................................ 135 16.4.2 ftell ................................................................................................................................. 135 16.4.3 fseek ............................................................................................................................... 135
HanoiAptech Computer Education Center Thanghv 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 HanoiAptech Computer Education Center Thanghv 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.
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 Input Output Process 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: ax 2 + 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. HanoiAptech Computer Education Center Thanghv Gio trnh Lp trnh C cn bn Trang 9 1.2.3.2 S dng lu (Flowchart) (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). 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 dng (symbol) Hnh ng (Activity) 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 C ph, nc si Ha c ph vo nc si B ng vo Khuy u hn hp C ph sn sng Bt u Kt thc LCB, ngy cng Nhn LCB vi ngy cng Kt qu lng Gi tr a, b Chia b cho a Nghim x Kt thc Bt u Kt thc HanoiAptech Computer Education Center Thanghv Gio trnh Lp trnh C cn bn Trang 10 HanoiAptech Computer Education Center Thanghv V d 9: Cng 2 s V d 10: so snh 2 s
V d 11: Kim tra tnh hp l ca im
V d 12: Xp lon vo thng
V d 13: Kim tra loi s
V d 14: Kim tra tnh hp l ca im
Bt u Kt thc a, b c = a + b c Bt u Kt thc S a, S b S a bng S b S a c bng S b khng? S a khng bng S b C Khng Bt u Kt thc im im hp l im >=0 v im <=10 ? im khng hp l C Khng Bt u Kt thc S S dng S > 0 ? C S < 0 ? S m C S khng Khng Khng Bt u Kt thc Thng = 24 Lon? Cha Thng = 0 Lon 1 Lon Thm 1 Lon vo thng Bng Bt u Kt thc Sai im ng im >=0 v im <=10 ? 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: ax 2 + 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.
HanoiAptech Computer Education Center Thanghv Gio trnh Lp trnh C cn bn Trang 12 HanoiAptech Computer Education Center Thanghv
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
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
F1 Help F2 Save F3 Open Alt - F9 Compile F9 Make F10 Menu [] [] 1 1:1 * 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 2 3 4 5 6 7 /* Chuong trinh in ra cau bai hoc C dau tien */ #include <stdio.h>
void main(void) { printf("Bai hoc C dau tien."); } 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 :
Cc t include, stdio.h, void, main, printf phi vit bng ch thng. Chui trong nhy kp cn in ra "Bn c th vit ch HOA, thng ty, ". Kt thc cu lnh phi c du chm phy. Kt thc tn hm khng c du chm phy hoc bt c du g. Ghi ch phi t trong cp /* . */. Thn hm phi c bao bi cp { }. Cc cu lnh trong thn hm phi vit tht vo. HanoiAptech Computer Education Center Thanghv 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 2 3 4 5 6 7 8 9 /* Chuong trinh in ra cau bai hoc C dau tien */ #include <stdio.h> #include <conio.h>
void main(void) { printf("\t\tBai hoc C \rdau tien.\n"); getch(); } F1 Help Alt-F8 Next Msg Alt-F7 Prev Msg Alt - F9 Compile F9 Make F10 Menu HanoiAptech Computer Education Center Thanghv 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 2 3 4 5 6 7 8 9 10 11 12 /* Chuong trinh nhap va in ra man hinh gia tri bien*/ #include <stdio.h> #include <conio.h>
void main(void) { int i; printf("Nhap vao mot so: "); scanf("%d", &i); printf("So ban vua nhap la: %d.\n", i); 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 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. HanoiAptech Computer Education Center Thanghv 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 2 3 4 5 6 7 8 9 10 11 12 13 14 /* Chuong trinh nhap vao 2 so a, b in ra tong*/ #include <stdio.h> #include <conio.h>
void main(void) { int a, b; printf("Nhap vao so a: "); scanf("%d", &a); printf("Nhap vao so b: "); scanf("%d", &b); printf("Tong cua 2 so %d va %d la %d.\n", a, b, a+b); 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 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 2 3 4 5 6 7 8 9 10 11 12 13 14 /* Chuong trinh nhap vao ban kinh hinh tron. Tinh dien tich */ #include <stdio.h> #include <conio.h>
#define PI 3.14
void main(void) { float fR; printf("Nhap vao ban kinh hinh tron: "); scanf("%f", &fR); printf("Dien tich hinh tron: %.2f.\n", 2*PI*fR); getch(); } F1 Help Alt-F8 Next Msg Alt-F7 Prev Msg Alt - F9 Compile F9 Make F10 Menu HanoiAptech Computer Education Center Thanghv 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.
HanoiAptech Computer Education Center Thanghv 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 HanoiAptech Computer Education Center Thanghv case cdecl char default do double extern far float huge if int near pascal register static struct signed typedef union unsigned volatile while 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. Gio trnh Lp trnh C cn bn Trang 19 TT Kiu d liu (Type) Kch thc (Length) Min gi tr (Range) 1 2 3 4 5 6 7 8 9 10 11 unsigned char char enum unsigned int short int int unsigned long long float double long double 1 byte 1 byte 2 bytes 2 bytes 2 bytes 2 bytes 4 bytes 4 bytes 4 bytes 8 bytes 10 bytes 0 n 255 128 n 127 32,768 n 32,767 0 n 65,535 32,768 n 32,767 32,768 n 32,767 0 n 4,294,967,295 2,147,483,648 n 2,147,483,647 3.4 * 10 38 n 3.4 * 10 38
1.7 * 10 308 n 1.7 * 10 308
3.4 * 10 4932 n 1.1 * 10 4932
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 Hanoi Aptech Computer Education Center
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.
Hanoi Aptech Computer Education Center
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 Hanoi Aptech Computer Education Center
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 Hanoi Aptech Computer Education Center
\\\" 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 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 165 2 965 _ S canh v bn phi b rng trng. 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 165 2 965 _ S canh v bn tri b rng trng. Hanoi Aptech Computer Education Center
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 165.0 2.0 965.0 _ S canh v bn phi b rng trng. 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 165.00 2.00 965.00 _ S canh v bn tri b rng trng. 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. Hanoi Aptech Computer Education Center
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. 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 = 4R 2 v V = (4/3)R 3 . 5. Vit chng trnh nhp vo mt s a bt k v in ra gi tr bnh phng (a 2 ), lp phng (a 3 ) ca a v gi tr a 4 . 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
Hanoi Aptech Computer Education Center
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) Hanoi Aptech Computer Education Center
Gio trnh Lp trnh C cn bn Trang 27 Lu bthc lun l khi lnh ng Sai Vo Ra
nu biu thc lun l ng th thc hin khi lnh v thot khi if, ngc li khng lm g c v thot khi if.
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 - Nhp vo gi tr a
- Nhp vo gi tr b
- Gn a cho max - Nu b > a th gn b cho max - In ra kt qu max - 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); Biu thc lun l phi t trong cp du ( ). if ib > ia bo li Hanoi Aptech Computer Education Center
Gio trnh Lp trnh C cn bn Trang 28 c. M t bng lu
b > a ng Bt u Nhp a, b Sai So lon nhat = max
Hanoi Aptech Computer Education Center
Kt thc max = a max = b 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 Nhap vao so b : 8 So lon nhat = 10. _ Cho chy li chng trnh v th li vi: a = 7, b = 9 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 Gio trnh Lp trnh C cn bn Trang 29 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 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 - Nhp vo gi tr a
- Nhp vo gi tr b
- Nu a > b th tam = a; a = b; b = tam;
- In ra a, b - int ia, ib, itam; - printf("Nhap vao so a: "); scanf("%d", &ia); - printf("Nhap vao so b: "); scanf("%d", &ib); - if (ia > ib) { itam = ia; ia = ib; ib = itam; } - printf("%d, %d\n", ia, ib);
c. M t bng lu Bt u
Hanoi Aptech Computer Education Center
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: "); a > b Nhp a, ng b Sai In a, b tam = a a = b b = tam Kt thc Gio trnh Lp trnh C cn bn Trang 30 scanf("%d", &ia); printf("Nhap vao so b: "); scanf("%d", &ib); 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 Nhap vao so b : 8 8, 10 _ Cho chy li chng trnh v th li vi: a = 1, b = 8 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 Hanoi Aptech Computer Education Center
nu biu thc lun l ng th thc hin khi lnh 1 v thot khi if ngc li thc hin khi lnh 2 v thot khi if.
Nu khi lnh 1, khi lnh 2 bao gm t 2 lnh tr ln th phi t trong du { }
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 bthc lun l khi lnh 1 ng Sai Vo khi lnh 2 Ra Gio trnh Lp trnh C cn bn Trang 31 - Khai bo 2 bin a, b kiu s nguyn - Nhp vo gi tr a
- Nhp vo gi tr b
- Nu a = b th in ra thng bo "a bng b" Ngc li (cn khng th) in ra thng bo "a khc b" - 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");
c. M t bng lu Bt u
Hanoi Aptech Computer Education Center
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 Nhap vao so b : 8 a khac b. Cho chy li chng trnh v th li vi: a = 6, b = 6 a = 1, b = 5 a= b ng Nhp a, b Sai a bang b a khac b Kt thc Gio trnh Lp trnh C cn bn Trang 32 _ 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 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 - Nhp vo k t c
- Nu c >= a v c <= z th c = c 32 in c ra mn hnh
Ngc li in ra thng bo " K t bn va nhp l: c " - char c; - printf("Nhap vao 1 ki tu: "); scanf("%c", &c); - if (c >= 'a' && c <= 'z') { c = c 32; printf("Ki tu hoa la: %c.\n", c); }; else printf("Ki tu ban vua nhap la: %c.\n", c); c. M t bng lu
Bt u
Hanoi Aptech Computer Education Center
d. Vit chng trnh File Edit Search Run Compile Debug Project Option Window Help c = c 32 c >= 'a' v c <= 'z' ng Nhp c Sai Ki tu hoa = c Ki tu vua nhap = c Kt thc Gio trnh Lp trnh C cn bn Trang 33 /* 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; 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 Ki tu hoa la: G. _ Cho chy li chng trnh v th li vi: 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
Ngc li Nu biu thc lun l n-1 ng th thc hin khi lnh n-1 v thot khi cu trc if Ngc li th thc hin khi lnh n. Hanoi Aptech Computer Education Center
khi l h BTLL 1 Sai Vo BTLL 2 Sai BTLL n-1 Sai khi l h 1 ng ng ng khi l h 1 khi l h 2 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 - Nhp vo gi tr a
- Nhp vo gi tr 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 li th in ra thng bo "a bng b" - 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) printf("a nho hon b.\n"); else printf("a bang b.\n"); c. M t bng lu
Bt u Hanoi Aptech Computer Education Center
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) a > b Nhp a, b Sai "a lon hon b" a < b Sai ng ng Kt thc "a nho hon b" "a bang b" Gio trnh Lp trnh C cn bn Trang 35 Hanoi Aptech Computer Education Center
{ 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) 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 Nhap vao so b : 7 a nho hon b _ Cho chy li chng trnh v th li vi: a = 8, b = 4 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 - Nhp vo k t c
- Nu c >= a v c <= z th c = c 32 in c ra mn hnh
Ngc li Nu c >= A v c <= Z th c = c + 32 in c ra mn hnh
- char c; - printf("Nhap vao 1 ki tu: "); scanf("%c", &c); - if (c >= 'a' && c <= 'z') { c = c 32; printf("Ki tu hoa la: %c.\n", c); }; else if(c >= 'A' && c <= 'Z') { c = c + 32; printf("Ki tu thuong la: %c.\n", c); Gio trnh Lp trnh C cn bn Trang 36
Ngc li Nu c >= 0 v c <= 9 th in thng bo "K t bn va nhp l s c" Ngc li th in thng bo "Bn nhp k t c" }; else if(c >= '0' && c <= '9') printf("Ki tu Ban vua nhap la so %c.\n", c); else 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. c. M t bng lu
Bt u Hanoi Aptech Computer Education Center
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 c >= 'a' v c <= 'z' Nhp c ng c = c 32 Ki tu hoa = c Kt thc Ktu nhap la so c c >= 'A' v c <= 'Z' c >= '0' v c <= '9' ng c = c + 32 Ki tu thuong=c Sai ng Ban da nhap ktu c Sai Sai Gio trnh Lp trnh C cn bn Trang 37 Hanoi Aptech Computer Education Center
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); 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 Ki tu hoa la: G. _ Cho chy li chng trnh v th li vi: 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:
Gio trnh Lp trnh C cn bn Trang 38 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. 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 - Nhp vo im s
- Nu diem >= 0 v diem <= 10 th - Nu diem >= 9 th in ra xp loi = Xut sc Ngc li Nu diem >= 8 th in ra xp loi = Gii Ngc li Nu diem >= 7 th in ra xp loi = Kh Ngc li Nu diem >= 6 th in ra xp loi = TBKh Ngc li Nu diem >= 5 th in ra xp loi = TBnh Ngc li th in ra xp loi = Yu Ngc li th in ra "Bn nhp im khng hp l" - 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 printf("Ban nhap diem khong hop le.\n"); c. M t bng lu
Hanoi Aptech Computer Education Center
Bt u Nhp diem diem >= 0 v diem <= 10 diem >=9 ng diem >=8 Sai diem >=7 Sai Sai diem >=6 Sai Sai ng ng ng Sai Gio trnh Lp trnh C cn bn Trang 39 Hanoi Aptech Computer Education Center
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 Xep loai = TBKha. _ Cho chy li chng trnh v th li vi: diem = 4, diem = 9, diem = 7, diem = 12 Quan st v nhn xt kt qu e. Bn thm v chng trnh Gio trnh Lp trnh C cn bn Trang 40 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. 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 - Nhp vo s a
- Nhp vo s b
- Nhp vo s c
- Nu a > b th - Nu a > c th a ln nht Ngc li th c ln nht Ngc li - Nu b > c th b ln nht Ngc li th c ln nht - int ia, ib, ic; - printf("Nhap vao so a: "); 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); c. M t bng lu
Bt u
Nhp a, b, c
a > b Sai a ln nht Hanoi Aptech Computer Education Center
Kt thc ng a > c c ln nht Sai ng b ln nht ng b > c c ln nht Sai Gio trnh Lp trnh C cn bn Trang 41 Hanoi Aptech Computer Education Center
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: "); 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 Nhap vao so b: 5 Nhap vao so c: 3 5 lon nhat. _ Cho chy li chng trnh v th li vi: a = 5, b = 4, c = 2 a = 2, b = 1, c = 10 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. Gio trnh Lp trnh C cn bn Trang 42 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;] }
Lu
Hanoi Aptech Computer Education Center
Khi gi tr ca biu thc bng gi tr i th lnh i s c thc hin. Nu sau lnh i khng c lnh break th s tip tc thc hin lnh i + 1Ngc li thot khi cu trc switch.
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: "); Vo Biu thc Ra = gi tr 1 ? ng lnh 1 break ? Khng = gi tr 2 ? ng lnh 2 break ? Khng = gi tr n ? ng lnh n . . . C C break ? C Khng Gio trnh Lp trnh C cn bn Trang 43 Hanoi Aptech Computer Education Center
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 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: Gio trnh Lp trnh C cn bn Trang 44 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 Quy 2. _ Cho chy li chng trnh v th li vi: thang = 7, thang = 1, thang = 13, thang = -4 Quan st v nhn xt kt qu 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 i s c thc hin. Nu sau lnh i khng c lnh break th s tip tc thc hin lnh i + 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 s c thc hin. Vo Biu thc Hanoi Aptech Computer Education Center
= gi tr 1 ? ng lnh 1 break ? Khng = gi tr 2 ? ng lnh 2 break ? Khng . . . C C Gio trnh Lp trnh C cn bn Trang 45 Hanoi Aptech Computer Education Center
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 Gio trnh Lp trnh C cn bn Trang 46 Hanoi Aptech Computer Education Center
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) { 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 Quy 2. _ Cho chy li chng trnh v th li vi: 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 Gio trnh Lp trnh C cn bn Trang 47 Hanoi Aptech Computer Education Center
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"); 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 -------------------------- MAIN MENU Cho chy li chng trnh v th li vi: mc chn chc nng khc Gio trnh Lp trnh C cn bn Trang 48 Hanoi Aptech Computer Education Center
-------------------------- 1. File 2. Edit 3. Search Chon muc tuong ung: 1 -------------------------- MENU FILE -------------------------- 1. New 2. Open Chon muc tuong ung: 2 Ban da chon chuc nang Open File _ Quan st kt qu. * Thm cc thnh phn sau vo chng trnh: - Thm mc Save vo menu File. - To menu Edit gm 4 chc nng: Copy, Cut, Paste, Clear. - To menu Search gm 2 chc nng: Find, Replace. Chy li chng trnh v th vi nhiu mc chn khc nhau. Quan st kt qu. 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. 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 Gio trnh Lp trnh C cn bn Trang 49 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 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 = ) c p * ) b p ( * ) a p ( * p , 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 Hanoi Aptech Computer Education Center
Gio trnh Lp trnh C cn bn Trang 50 Hanoi Aptech Computer Education Center
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.
Gio trnh Lp trnh C cn bn Trang 51 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 Hanoi Aptech Computer Education Center
kim tra iu kin nu ng ng th thc hin khi lnh; lp li kim tra iu kin nu sai thot khi vng lp.
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 (;) iu kin Vo khi lnh ng Sai Ra Gio trnh Lp trnh C cn bn Trang 52 Hanoi Aptech Computer Education Center
+ 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. + 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 2 3 4 5 6 7 8 9 10 11 12 13 14 /* Chuong trinh in ra cau "Vi du su dung vong lap for" 3 lan */
#include <stdio.h> #include <conio.h>
#define MSG "Vi du su dung vong lap for.\n"
void main(void) { int i; for(i = 1; i<=3; i++) /hoac for(i = 1; i<=3; i+=1) printf("%s", MSG); getch(); } 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. Vi du su dung vong lap for. Vi du su dung vong lap for. _ Bn thay 2 dng 11 v 12 bng cu lnh for(i=1; i<=3; i++, printf("%s", MSG)); 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 2 3 4 5 6 7 8 9 /* Chuong trinh nhap vao 3 so va tinh tong */
#include <stdio.h> #include <conio.h>
void main(void) { int i, in, is; is = 0; Gio trnh Lp trnh C cn bn Trang 53 Hanoi Aptech Computer Education Center
10 11 12 13 14 15 16 17 18 for(i = 1; i<=3; i++) { printf("Nhap vao so thu %d :", i); scanf("%d", &in); is = is + in; } printf("Tong: %d", is); 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 thu 1: 5 Nhap vao so thu 2: 4 Nhap vao so thu 3: 2 Tong: 11. _ Bn thay cc dng t 9 n 15 bng cu lnh: for(is=0, i=1; i<=3; printf("Nhap vao so thu %d: ", i), scanf("%d", &in), i++, is=is+in); 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 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 /* Chuong trinh nhap vao 3 so va tinh tong */
#include <stdio.h> #include <conio.h>
void main(void) { int i, in, is = 0; printf("Nhap vao so n: "); scanf("%d", &in); is = 0; for(i = 0; i<=in; i++) { if (i % 2 != 0) //neu i la so le is = is + i; //hoac is += i; } printf("Tong: %d", is); 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 n : 5 Tong: 9. _ Bn thay cc dng t 11 n 16 bng cu lnh: for(is=0, i=1; i<=n; is=is+i, i+=2); Chy li chng trnh, quan st v nhn xt kt qu. Gio trnh Lp trnh C cn bn Trang 54 Hanoi Aptech Computer Education Center
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. 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 2 3 4 5 6 7 8 9 10 11 12 /* Doc vao 1 loat ktu tren ban phim. Ket thuc khi gap dau cham */
#include <stdio.h>
#define DAU_CHAM '.'
void main(void) { char c; for(; (c = getchar()) != DAU_CHAM; ) putchar(c); } F1 Help Alt-F8 Next Msg Alt-F7 Prev Msg Alt - F9 Compile F9 Make F10 Menu Kt qu in ra mn hnh a a 4 4 . _ Bn thay cc dng t 10 n 11 bng cu lnh: for(; (c = getchar()) != DAU_CHAM; putchar(c)); Chy li chng trnh, quan st v nhn xt kt qu. 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 2 3 4 5 6 7 8 /* Doc vao 1 loat ktu tren ban phim, dem so ktu nhap vao. Ket thuc khi gap dau cham */
#include <stdio.h> #include <conio.h>
#define DAU_CHAM '.'
void main(void) Gio trnh Lp trnh C cn bn Trang 55 Hanoi Aptech Computer Education Center
9 10 11 12 13 14 15 16 { char c; int idem; for(idem = 0; (c = getchar()) != DAU_CHAM; ) idem++; printf("So ki tu: %d.\n", idem); getch(); } F1 Help Alt-F8 Next Msg Alt-F7 Prev Msg Alt - F9 Compile F9 Make F10 Menu Kt qu in ra mn hnh afser. So ki tu: 5. _ Bn thay cc dng t 12 n 13 bng cu lnh: 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 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 /* Doc vao 1 loat ktu tren ban phim, dem so ktu nhap vao. Ket thuc khi gap dau cham */
#include <stdio.h> #include <conio.h>
#define DAU_CHAM '.'
void main(void) { char c; int idem = 0; for(; ;) { c = getchar(); if (c == DAU_CHAM) //nhap vao dau cham break; //thoat vong lap idem++; } printf("So ki tu: %d.\n", idem); getch(); } F1 Help Alt-F8 Next Msg Alt-F7 Prev Msg Alt - F9 Compile F9 Make F10 Menu Kt qu in ra mn hnh afser. So ki tu: 5. _ Chy li chng trnh, quan st v nhn xt kt qu. 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 Gio trnh Lp trnh C cn bn Trang 56 Hanoi Aptech Computer Education Center
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 /* Nhap vao 1 day so nguyen tu ban phim den khi gap so 0 thi dung. In ra tong cac so nguyen duong */
#include <stdio.h> #include <conio.h>
void main(void) { int in, itong = 0; for(; ;) { printf("Nhap vao 1 so nguyen: "); scanf("%d", &in); if (in < 0) continue; //in < 0 quay nguoc len dau vong lap if (in == 0) break; //in = 0 thoat vong lap itong += in; } printf("Tong: %d.\n", itong); 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 1 so nguyen: -8 Nhap vao 1 so nguyen: 9 Nhap vao 1 so nguyen: -7 Nhap vao 1 so nguyen: 3 Nhap vao 1 so nguyen: 0 Tong: 12 _ Chy li chng trnh vi s liu khc Quan st v nhn xt kt qu. 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 Gio trnh Lp trnh C cn bn Trang 57 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 { }
Lu Hanoi Aptech Computer Education Center
Trc tin biu thc c kim tra nu sai th kt thc vng lp while (khi lnh khng c thi hnh 1 ln no) nu ng thc hin khi lnh; lp li kim tra biu thc
+ 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 2 3 4 5 6 7 8 9 10 11 12 13 14 /* Chuong trinh in ra cau "Vi du su dung vong lap while" 3 lan */
#include <stdio.h> #include <conio.h>
#define MSG "Vi du su dung vong lap while.\n"
void main(void) { int i = 0; while (i++ < 3) printf("%s", MSG); getch(); } 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. Vi du su dung vong lap while. Vi du su dung vong lap while. _ Bn thay 2 dng 11 v 12 bng cu lnh while(printf("%s", MSG), ++i < 3); 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. biu thc Vo khi lnh ng Sai Ra Gio trnh Lp trnh C cn bn Trang 58 Dng File Edit Search Run Compile Debug Project Option Window Help 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 /* Chuong trinh tnh tong cac so nguyen tu 1 den n */
#include <stdio.h> #include <conio.h>
void main(void) { int i = 0, in, is = 0; printf("Nhap vao so n: "); scanf("%d", &in); while (i++ < in) is = is + i; //hoac is += i; printf("Tong: %d", is); 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 n : 5 Tong: 15. _ Bn thay cc dng t 11 n 12 bng cu lnh: 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 Hanoi Aptech Computer Education Center
khi lnh biu thc khi lnh ng Gio trnh Lp trnh C cn bn Trang 59 Hanoi Aptech Computer Education Center
Kim tra biu thc Nu ng th lp li thc hin khi lnh Nu sai th kt thc vng lp (khi lnh c thi hnh 1 ln)
+ 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 2 3 4 5 6 7 8 9 10 11 12 13 14 15 /* Chuong trinh kiem tra mat khau */
#include <stdio.h>
# define PASSWORD 12345
void main(void) { int in; do { printf("Nhap vao password: "); scanf("%d", &in); } while (in != PASSWORD) } 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 Nhap vao password: 12346 Nhap vao password: 12345 Bn thay cc dng t 10 n 14 bng cu lnh: do{}while(printf("Nhap vao password: "), scanf("%d", &in), 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 2 3 4 5 6 7 8 /* Chuong trinh in tuoi */
#include <stdio.h>
# define CHUC "Chuc ban vui ve (: >\n"
void main(void) { Gio trnh Lp trnh C cn bn Trang 60 Hanoi Aptech Computer Education Center
9 10 11 12 13 14 15 16 17 18 19 20 21 unsigned char choi; int inamhtai, inamsinh; do { printf("Nhap vao nam hien tai: "); scanf("%d", inamhtai); printf("Nhap vao nam sinh: "); scanf("%d", inamsinh); printf("Ban %d tuoi, %s", inamhtai inamsinh, CHUC); printf("Ban co muon tiep tuc? (Y/N)\n"); choi = getch(); } while (choi == 'y' || choi == 'Y'); } 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 Nhap vao nam sinh: 1980 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) Bn li chng trnh vi s liu khc. Quan st, nh gi v nhn xt kt qu. 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 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 /* Ve hinh chu nhat dac */
#include <stdio.h> #include <conio.h>
void main(void) { int i, ij, idai, irong; printf("Nhap vao chieu dai: "); scanf("%d", &idai); printf("Nhap vao chieu rong: "); scanf("%d", &irong); for (i = 1; i <= irong; i++) { for (ij = 1; ij <= idai; ij++) //in mot hang voi chieu dai dau * printf("*"); printf("\n"); //xuong dong khi in xong 1 hang } getch(); } F1 Help Alt-F8 Next Msg Alt-F7 Prev Msg Alt - F9 Compile F9 Make F10 Menu Kt qu in ra mn hnh Gio trnh Lp trnh C cn bn Trang 61 Hanoi Aptech Computer Education Center
Nhap vao chieu dai: 10 Nhap vao chieu rong: 5 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * _ Bn li chng trnh vi s liu khc. Quan st, nh gi v nhn xt kt qu. 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 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 /* Ve hinh chu nhat bang cac so tu 0 den 9 */
#include <stdio.h> #include <conio.h>
void main(void) { int i = 0, ij; while (i <= 9) { ij = 0; //khoi tao lai ij = 0 cho lan in ke tiep while (ij++ <= 9) //in 1 hang 10 so i printf("%d", i); printf("\n"); //xuong dong khi in xong 1 hang i++; //tang i len 1 cho vong lap ke tiep } getch(); } F1 Help Alt-F8 Next Msg Alt-F7 Prev Msg Alt - F9 Compile F9 Make F10 Menu Kt qu in ra mn hnh 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 9 9 9 9 9 9 9 9 9 9 _ Thay dng 11, 12 thnh cu lnh for (ij = 0; ij <= 9; ij++) Chy li chng trnh. Quan st, nh gi v nhn xt kt qu. 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. Gio trnh Lp trnh C cn bn Trang 62 Hanoi Aptech Computer Education Center
- 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. 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 P n = a n x n + a n-1 x n-1 + + a 1 x 1 + a 0 Hng dn a thc c th vit li P n = ((a n x + a n-1 )x + a n-2 )x + + a 0
Nh vy trc tin tnh a n x + a n-1, ly kt qu nhn vi x, sau ly kt qu nhn vi x cng thm a n-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% . Gio trnh Lp trnh C cn bn Trang 63 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 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) - 1 + 1 n x ... 2 x n + + 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.
Hanoi Aptech Computer Education Center
Gio trnh Lp trnh C cn bn Trang 64 Hanoi Aptech Computer Education Center
Gio trnh Lp trnh C cn bn Trang 65 Hanoi Aptech Computer Education Center
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:
// ham in 1 dong dau void line() { int i; for(i = 0; i < 19; i++) printf("*"); printf("\n"); }
void main(void) { line(); printf("* Minh hoa ve ham *"); line(); getch(); } 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 * ***************** _ Gio trnh Lp trnh C cn bn Trang 66 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) { line(); printf("* Minh hoa ve ham *"); line(); getch(); }
gi thc hin hm line
quay v chng trnh chnh thc hin lnh k tip void line() { int i; for(i = 0; i < 19; i++) printf("*"); printf("\n"); }
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.
// ham tinh so mu int power(int ix, int in) { int i, ip = 1; for(i = 1; i <= in; i++) ip *= ix; return ip; }
void main(void) { printf("2 mu 2 = %d.\n", power(2, 2)); printf("2 mu 3 = %d.\n", power(2, 3)); getch(); } F1 Help Alt-F8 Next Msg Alt-F7 Prev Msg Alt - F9 Compile F9 Make F10 Menu Hanoi Aptech Computer Education Center
Gio trnh Lp trnh C cn bn Trang 67 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) { printf("2 mu 2 = %d.\n", power(2, 2));
printf("2 mu 3 = %d.\n", power(2, 3)); getch(); }
gi thc hin hm power
quay v chng trnh chnh thc hin lnh k tip int power(int ix, int in) { int i, ip = 1; for(i = 1; i <= in; i++) ip *= ix; return ip; }
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.
// ham doi phut thanh gio:phut void time(int &ig, int &ip) { ig = ip / 60; ip %= 60; }
void main(void) { int igio, iphut; Hanoi Aptech Computer Education Center
Gio trnh Lp trnh C cn bn Trang 68 17 18 19 20 21 22 printf("Nhap vao so phut : "); scanf("%d", &iphut); time(igio, iphut); printf("%02d:%02d\n", igio, iphut); 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 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) { int igio, iphut; printf("Nhap vao so phut : "); scanf("%d", &iphut);
void time(int &ig, int &ip) { ig = ip / 60; ip %= 60; }
igio = ig = 3 iphut = ip = 5
7.2.2 Tham s dng tham bin v tham tr V d 4:
void thamtri(int ix, int iy) { ix += 1; //cong ix them 1 iy += 1; //cong iy them 1 } void thambien(int &ix, int &iy) { ix += 1; //cong ix them 1 iy += 1; //cong iy them 1 } void main(void) { int ia = 5, ib = 5; thamtri(ia, ib); printf("a = %d, b = %d", ia, ib); thambien(ia, ib); printf("a = %d, b = %d", ai, ib); } Kt qu in ra:
a = 5, b = 5
a = 6, b = 6 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. Hanoi Aptech Computer Education Center
Gio trnh Lp trnh C cn bn Trang 69 Hanoi Aptech Computer Education Center
// ham kiem tra chan le void oddeven() { if (inum % 2) printf("%d la so le.\n", inum); else printf("%d la so chan.\n", inum); }
//ham kiem tra so am void negative() { if (inum < 0) printf("%d la so am.\n", inum); else printf("%d la so duong.\n", inum); } 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. _ Gio trnh Lp trnh C cn bn Trang 70 Hanoi Aptech Computer Education Center
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.
// ham tinh dien tich hinh cau float area() { return (4*PI*frad*frad); } F1 Help Alt-F8 Next Msg Alt-F7 Prev Msg Alt - F9 Compile F9 Make F10 Menu Kt qu in ra mn hnh Gio trnh Lp trnh C cn bn Trang 71 Hanoi Aptech Computer Education Center
Nhap vao ban kinh hinh cau: 3.2 Dien tich hinh cau: 128.614 _ 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:
void main(void) { float a = 4.5, b = 6.1; printf("So lon nhat la: %5.2f.\n", MAX(a, b)); getch(); } 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.
Gio trnh Lp trnh C cn bn Trang 72
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
Hanoi Aptech Computer Education Center
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] Gio trnh Lp trnh C cn bn Trang 73 Hanoi Aptech Computer Education Center
ia[2], ia[7] l phn t th 3, 8 trong mng xem nh l mt bin kiu int. 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 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 /* Tinh trung binh cong n so nguyen */
#include <stdio.h> #include <conio.h>
void main(void) { int ia[50], i, in, isum = 0; printf("Nhap vao gia tri n: "); scanf("%d", &in);
//Nhap du lieu vao mang for(i = 0; i < in; i++) { printf("Nhap vao phan tu thu %d: ", i + 1); scanf("%d", &ia[i]); //Nhap gia tri cho phan tu thu i }
//Tinh tong gia tri cac phan tu for(i = 0; i < in; i++) isum += ia[i]; //cong don tung phan tu vao isum
printf("Trung binh cong: %.2f\n", (float) isum/in); 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 gia tri n: 3 Nhap vao phan tu thu 1: 7 Nhap vao phan tu thu 2: 3 Nhap vao phan tu thu 3: 6 Trung binh cong: 5.33 Bn c th gp 2 lnh for thnh mt va nhp va tnh tng, a hng 21 sau hng 16 v b cc hng 19, 20, 21. Chy v quan st kt qu. Gio trnh Lp trnh C cn bn Trang 74 Hanoi Aptech Computer Education Center
_ 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 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 /* Nhap vao day so nguyen duong, in ra day chan, day le */
#include <stdio.h> #include <conio.h> #define MAX 50
void main(void) { float fa[MAX], fsum = 0; int i = 0; do { printf("Nhap vao phan tu thu %d: ", i + 1); scanf("%f", &fa[i]); //Nhap gia tri cho phan tu thu i } while (fa[i++] > 0); //con nhap lieu khi gia tri phan tu > 0
i--; //giam i di 1 lan cuoi cung tang 1 truoc khi thoat //Tinh tong for(int ij = 0; ij < i; ij++) fsum += fa[ij]; //cong don tung phan tu vao isum
printf("Tong : %5.2f\n", fsum); getch(); Gio trnh Lp trnh C cn bn Trang 75 Hanoi Aptech Computer Education Center
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 phan tu thu 1: 1.2 Nhap vao phan tu thu 2: 3 Nhap vao phan tu thu 3: 4.6 Nhap vao phan tu thu 4: -9 Tong : 8.80 _ Bn chy li chng trnh v th li vi s liu khc. Quan st kt qu. 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 2 3 4 5 6 7 8 9 10 /* Nhap vao so tien va doi tien ra cac loai 50, 25, 10, 5, 1 */
#include <stdio.h> #include <conio.h> #define MAX 5
void main(void) { int itien[MAX] = {50, 25, 10, 5, 1}; //Khai bao va khoi tao mang voi 5 phan tu int i , isotien, ito; Gio trnh Lp trnh C cn bn Trang 76 11 12 13 14 15 16 17 18 19 20 printf("Nhap vao so tien: "); scanf("%d", &isotien); //Nhap vao so tien for (i = 0; i < MAX; i++) { ito = isotien/itien[i]; //Tim so to cua loai tien thu i printf("%4d to %2d dong\n", ito, itien[i]); isotien = isotien%itien[i]; //So tien con lai sau khi da loai tru cac loai tien da co } 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 tien: 246 4 t 50 ng 1 t 25 ng 2 t 10 ng 0 t 5 ng 1 t 1 ng _ Bn chy li chng trnh v th li vi s liu khc. Quan st kt qu. 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
Hanoi Aptech Computer Education Center
10 ct 5 hng 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 Gio trnh Lp trnh C cn bn Trang 77 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. 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 2 3 4 5 6 7 8 9 10 11 12 13 /* Tinh trung binh cong n so nguyen */
#include <stdio.h> #include <conio.h> #define MAX 50;
void main(void) { int ia[MAX][MAX], i, ij, in; printf("Nhap vao cap ma tran: "); scanf("%d", &in);
//Nhap du lieu vao ma tran Hanoi Aptech Computer Education Center
Gio trnh Lp trnh C cn bn Trang 78 Hanoi Aptech Computer Education Center
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 for (i = 0; i < in; i++) //vng for c gi tr i chy t 0 n in-1 cho hng for (ij = 0; ij < in; ij++) //vng for c gi tr ij chy t 0 n in-1 cho ct { printf("Nhap vao phan tu ia[%d][%d]: ", i + 1, ij + 1); scanf("%d", &ia[i][ij]); }
//In ma tran for (i = 0; i < in; i++) //vng for c gi tr i chy t 0 n in-1 cho hng { for (ij = 0; ij < in; ij++) //vng for c gi tr ij chy t 0 n in-1 cho ct printf("%3d ", ia[i][ij]); printf("\n"); //xung dng in hng k tip } printf("\n"); //Tao khoang cach giua 2 ma tran
//In ma tran theo thu tu nguoc for (i = in-1; i >= 0; i--) //vng for c gi tr i chy t in-1 n 0 cho hng { for (ij = in-1; ij >= 0 in; ij--) //vng for c gi tr ij chy t in-1 n 0 cho ct printf("%3d ", ia[i][ij]); printf("\n"); //xung dng in hng k tip } 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 cap ma tran: 2 Nhap vao phan tu ia[1][1]: 7 Nhap vao phan tu ia[1][2]: 4 Nhap vao phan tu ia[2][1]: 6 Nhap vao phan tu ia[2][2]: 15 7 4 6 15
15 6 4 7 _ Chy v th li chng trnh vi n = 3, 5. Quan st kt qu. - Sa li chng trnh trn cho php nhp vo ma trn m x n.. Ngha l ma trn c m hng v n ct. Bn sa li chng trnh bng cch cho nhp vo gi tr m v n v sa li vng for cho hng chy m ln v vng for cho ct chy n ln.
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 Gio trnh Lp trnh C cn bn Trang 79 Hanoi Aptech Computer Education Center
#include <stdio.h> #include <conio.h> #define MAX 5
int H[MAX][MAX] = {{1, 0, 0, 0, 1}, {1, 0, 0, 0, 1}, {1, 1, 1, 1, 1}, {1, 0, 0, 0, 1}, {1, 0, 0, 0, 1}}; void main(void) { int i , ij; for (i = 0; i < MAX; i++) { for (ij = 0; ij < MAX; ij++) if (H[i][ij]) printf("!"); else printf(" "); printf("\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 ! ! ! ! !!!!! ! ! ! ! _ 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 2 3 4 5 6 7 8 9 10 11 12 /* Chuong trinh tim so lon nhat su dung ham */
#include <stdio.h> #include <conio.h>
#define MAX 20
//Khai bao prototype int max(int, int);
//ham tim so lon nhat trong mang 1 chieu int max(int ia[], int in) Gio trnh Lp trnh C cn bn Trang 80 Hanoi Aptech Computer Education Center
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 { int i, imax; imax = ia[0]; //cho phan tu dau tien la max for (i = 1; i < in; i++) if (imax < ia[i]) //neu so dang xet > max imax = ia[i]; //gan so nay cho max return imax; //tra ve ket qua so lon nhat }
void main(void) { int ia[MAX]; int i = 0, inum; do { printf("Nhap vao mot so: "); scanf("%d", &ia[i]); } while (ia[i++] != 0); i--; inum = max(ia, i); printf("So lon nhat la: %d.\n", inum); 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 so: 12 Nhap vao mot so: 45 Nhap vao mot so: 3 Nhap vao mot so: 0 So lon nhat la: 45 _ Chy li chng trnh v th li vi s liu khc. Thc hin mt s thay i sau: - Di chuyn dng int a[MAX]; ln sau dng s 10 - Sa dng int max(int, int); thnh int max(int); - 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. Gio trnh Lp trnh C cn bn Trang 81 Hanoi Aptech Computer Education Center
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 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 /* Chuong trinh tim so lon nhat su dung ham */
#include <stdio.h> #include <conio.h>
#define MAX 20
//Khai bao prototype int max(int, int); int input(int);
//ham tim phan tu lon nhat trong mang 1 chieu int max(int ia[], int in) { int i, imax; imax = ia[0]; //cho phan tu dau tien la max for (i = 1; i < in; i++) if (max < ia[i]) //neu so dang xet > max max = ia[i]; //gan so nay cho max return imax; //tra ve ket qua so lon nhat }
//ham nhap lieu vao mang 1 chieu int input(int ia[]) { int i = 0; do { printf("Nhap vao mot so: "); scanf("%d", &ia[i]); } while (ia[i++] != 0); i--; return i; }
void main(void) { int ia[MAX], ib[MAX], ic[MAX]; int inum1, inum2, inum3; printf("Nhap lieu cho mang a: \n"); inum1 = max(ia, input(ia)); printf("Nhap lieu cho mang b: \n"); inum2 = max(ib, input(ib)); printf("Nhap lieu cho mang c: \n"); inum3 = max(ic, input(ic)); printf("So lon nhat cua mang a: %d, b: %d, c: %d.\n", inum1, inum2, inum3); getch(); } F1 Help Alt-F8 Next Msg Alt-F7 Prev Msg Alt - F9 Compile F9 Make F10 Menu Kt qu in ra mn hnh Gio trnh Lp trnh C cn bn Trang 82 Hanoi Aptech Computer Education Center
Nhap lieu cho mang a: Nhap vao mot so: 12 Nhap vao mot so: 45 Nhap vao mot so: 3 Nhap vao mot so: 0 Nhap lieu cho mang b: Nhap vao mot so: 5 Nhap vao mot so: 15 Nhap vao mot so: 0 Nhap lieu cho mang c: Nhap vao mot so: 1 Nhap vao mot so: 5 Nhap vao mot so: 4 Nhap vao mot so: 0 So lon nhat cua mang a: 45, b: 15, c: 5. _
Chy li chng trnh v th li vi s liu khc. Vit thm hm tm s nh nht. 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 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 /* cong ma tran */
//ham tim so lon nhat trong mang 2 chieu float max(float fa[][MAX]) { float fmax; fmax = fa[0][0]; //cho phan tu dau tien la max for (int i = 0; i < in; i++) for (int ij = 0; ij < in; ij++) if (fmax < fa[i][ij]) //neu so dang xet > max fmax = fa[i][ij]; //gan so nay cho max return fmax; //tra ve ket qua so lon nhat }
//ham nhap lieu mang 2 chieu Gio trnh Lp trnh C cn bn Trang 83 Hanoi Aptech Computer Education Center
//ham in mang 2 chieu ra man hinh void output(float fa[][MAX]) { for (int i = 0; i < in; i++) { for (int ij = 0; ij < n; ij++) printf("%5.2f", fa[i][ij]); printf("\n"); } }
//ham cong 2 mang 2 chieu void add(float fa[][MAX], float fb[][MAX], float fc[][MAX]) { for (int i = 0; i < in; i++) for (int ij = 0; ij < in; ij++) fc[i, ij] = fa[i, ij] + fb[i, ij]; }
void main(void) { float fa[MAX][MAX], fb[MAX][MAX], fc[MAX][MAX]; printf("Nhap vao cap ma tran: "); scanf("%d", &in); printf("Nhap lieu ma tran a: \n"); input(fa); printf("Nhap lieu ma tran b: \n"); input(fb); printf("Nhap lieu ma tran c: \n"); input(fc); add(fa, fb, fc); printf("Ma tran a: \n"); output(fa); printf("Ma tran b: \n"); output(fb); printf("Ma tran c: \n"); output(fc); printf("So lon nhat cua ma tran c la: %5.2f.\n", max(fc)); getch(); } F1 Help Alt-F8 Next Msg Alt-F7 Prev Msg Alt - F9 Compile F9 Make F10 Menu Kt qu in ra mn hnh Gio trnh Lp trnh C cn bn Trang 84 Nhap vao cap ma tran : 2 Nhap lieu ma tran a: Nhap vao ptu[0][0] : 5.2 Nhap vao ptu[0][1] : 4 Nhap vao ptu[1][0] : 7.1 Nhap vao ptu[1][1] : 9 Nhap lieu ma tran b: Nhap vao ptu[0][0] : 12 Nhap vao ptu[0][1] : 3.4 Nhap vao ptu[1][0] : 9.6 Nhap vao ptu[1][1] : 11 Ma tran a: 5.20 4.00 7.10 9.00 Ma tran b: 12.00 3.40 9.60 11.00 Ma tran c: 17.20 7.40 16.70 20.00 So lon nhat cua ma tran c la: 20.00 _ Chy li chng trnh v th li vi s liu khc. Vit thm hm tm s nh nht. 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
Hanoi Aptech Computer Education Center
0 1 2 0
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]; 1 2 2 * 3 + 1 1 * 3 + 2 Gio trnh Lp trnh C cn bn Trang 85 Hanoi Aptech Computer Education Center
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 2 3 4 5 6 7 8 9 10 11 12 13 /* Chuong trinh nhap va in ra ten*/
#include <stdio.h> #include <conio.h>
void main(void) { char cname[30]; printf("Cho biet ten cua ban: "); scanf("%s", cname); printf("Chao ban %s\n", cname); 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 biet ten cua ban: Minh Chao ban Minh _ Chy li chng trnh v th nhp tn: Mai Lan, Thanh Nhi 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 2 3 4 5 6 7 8 9 10 11 12 13 14 /* Chuong trinh nhap va in ra ten*/
#include <stdio.h> #include <conio.h>
void main(void) { char cname[30]; puts("Cho biet ten cua ban: "); gets(cname); puts("Chao ban "); puts(cname); getch(); } Gio trnh Lp trnh C cn bn Trang 86 Hanoi Aptech Computer Education Center
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 Chao ban Mai Lan _ Sa dng 9 thnh printf("Cho biet ten cua ban: "); v t dng 11 n 12 thnh printf("Chao ban %s.\n", cname); Chy li chng trnh vo th nhp tn: Tuan Anh, Thanh 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. 8.2.2.3 Khi to chui Dng File Edit Search Run Compile Debug Project Option Window Help 1 2 3 4 5 6 7 8 9 10 11 12 13 14 /* Chuong trinh nhap va in ra ten*/
#include <stdio.h> #include <conio.h>
void main(void) { char cname[30]; char chao[] = "Chao ban"; printf("Cho biet ten cua ban: "); gets(cname); printf("%s %s.\n", chao, cname); 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 biet ten cua ban: Mai Lan Chao ban Mai Lan _ Chy li chng trnh vo th nhp tn: Doan Trang 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 2 3 4 5 6 7 8 9 /* Chuong trinh nhap thang (so) v in ra thang (chu) tuong ung*/
#include <stdio.h> #include <conio.h>
void main(void) { char cthang[12][15] = {"January", "February", "March", "April", "May", "June", "July", "August", "September", Gio trnh Lp trnh C cn bn Trang 87 Hanoi Aptech Computer Education Center
10 11 12 13 14 15 16 "October", "November", "December"}; int ithang; printf("Nhap vao thang (1-12): "); scanf("%d", &ithang); printf("%s.\n", cthang[ithang-1]); 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 (1-12): 2 February _ Chy li chng trnh vo th nhp vo cc thng khc Quan st kt qu. 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? Gio trnh Lp trnh C cn bn Trang 88 Hanoi Aptech Computer Education Center
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. 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
Gio trnh Lp trnh C cn bn Trang 89
Hanoi Aptech Computer Education Center
Gio trnh Lp trnh C cn bn Trang 90 Hanoi Aptech Computer Education Center
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 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 /* Cong hang so */
#include <stdio.h> #include <conio.h>
void main(void) { int ix = 6, iy = 7; int *px, *py; printf("x = %d, y = %d\n", ix, iy); px = &ix; py = &iy; *px += 10; *py += 10; printf("x = %d, y = %d\n", ix, iy); getch(); } 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 x = 16, y = 17 _ Chy chng trnh v quan st kt qu. 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. Gio trnh Lp trnh C cn bn Trang 91 Hanoi Aptech Computer Education Center
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 Sau php gn px = &ix v py = &iy th gi tr ca px = 1203 v py = 1207 1204 1205 1206 1207 7 iy 1208 1209 1210
a ch vng nh 2015
*px l ni dung ca px v *py l ni dung ca py. Nn khi thc hin 2 php cng gn *px += 10 v *py += 10 th gi tr ca ix s l 16 v gi tr iy s l 17. 2016 2017 1203 px 2018 2019 1207 py 2020 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 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 /* Khoi tao 2 so */
#include <stdio.h> #include <conio.h>
void init (int, int);
void main(void) { int ix, iy; init(&ix, &iy); printf("x = %d, y = %d\n", ix, iy); getch(); }
void init(int *px, int *py) { *px = 3; //gan 3 cho noi dung cua px *py = 5; //gan 5 cho noi dung cua py } F1 Help Alt-F8 Next Msg Alt-F7 Prev Msg Alt - F9 Compile F9 Make F10 Menu Gio trnh Lp trnh C cn bn Trang 92 Hanoi Aptech Computer Education Center
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:
void main(void) { int iarray[] = {2, 5, 6, 9}; int i, ix = 10; add(iarray, SIZE, ix); for (i = 0; i < SIZE; i++); printf("%d ", *(iarray + i)); getch(); }
void add(int *ptr, int inum, int ia) { int ij; for (ij = 0; ij < inum; ij++) *(ptr) = *(ptr++) + ia; } 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. Gio trnh Lp trnh C cn bn Trang 93 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 245 2 246 Hanoi Aptech Computer Education Center
ptr 245 247 5 248 249 6 250 251 9 252
245 12 246 ptr 247 247 5 248 249 6 250 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 2 3 4 5 6 7 8 9 10 11 12 13 14 15 /* Chuong trinh nhap va in ra ten*/
#include <stdio.h> #include <conio.h>
void main(void) { char *cgreeting = "Chao ban"; char cname[30]; puts("Cho biet ten cua ban: "); gets(cname); puts(cgreeting); puts(cname); 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 biet ten cua ban: Minh Chao ban Minh _ Chy chng trnh v quan st kt qu. iarray iarray + 1 iarray + 2 iarray + 3 iarray iarray + 1 iarray + 2 iarray + 3 ptr ++ Gio trnh Lp trnh C cn bn Trang 94 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 1502 C 1503 h 1503 h Hanoi Aptech Computer Education Center
1502 1504 a 1504 a 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 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 /* Chuong trinh nhap thang (so) v in ra thang (chu) tuong ung*/
#include <stdio.h> #include <conio.h>
void main(void) { char *cthang[12]= {"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"}; int ithang; printf("Nhap vao thang (1-12): "); scanf("%d", &ithang); printf("%s.\n", cthang[ithang-1]); 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 (1-12): 2 February _ Chy li chng trnh vo th nhp vo cc thng khc Quan st kt qu. cgreeting cgreeting Gio trnh Lp trnh C cn bn Trang 95 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 2 3 4 5 6 7 /* Nhap danh sach ten va sap xep theo thu tu tang dan*/
void main(void) { char cname[MAXNUM][MAXLEN]; //mang chuoi char *cptr[MAXNUM]; //mang con tro tro den chuoi char *ctemp; int i, ij, icount = 0;
//nhap danh sach ten while (icount < MAXNUM) { printf("Nhap vao ten nguoi thu %d: ", icount + 1); gets(cname[icount]); cptr[icount++] = cname[icount]; //con tro den ten }
//sap xep danh sach theo thu tu tang dan for (i = 0; i < icount 1; i ++) for (ij = i + 1; ij < icount; ij ++) if (strcmp(cptr[i], cptr[ij]) > 0) { ctemp = cptr[i]; cptr[i] = cptr[ij]; cptr[ij] = ctemp; }
//In danh sach da sap xep printf("Danh sach sau khi sap xep:\n"); for (i = 0; i < icount; i ++) printf("Ten nguoi thu %d : %s\n", i + 1, cptr[i]); 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 ten nguoi thu 1: Minh Nhap vao ten nguoi thu 2: Lan Nhap vao ten nguoi thu 3: Anh 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 _ Chy li chng trnh v th nhp vi d liu khc. Quan st kt qu. Gio trnh Lp trnh C cn bn Trang 97 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:
void main(void) { int itable[ROWS][COLS] = {{10, 12, 14, 16, 18}, {11, 13, 15, 17, 19}, {20, 22, 24, 26, 28}, {21, 23, 25, 27, 29}}; int i, ij, ix = 10;
for (i = 0; i < ROWS; i ++) for (ij = 0; ij < COLS; ij ++) *(*(table + i) + ij) += ix;
for (i = 0; i < ROWS; i ++) { for (ij = 0; ij < COLS; ij ++) printf("%4d", *(*(table + i) + ij)); printf("\n"); } getch(); } Hanoi Aptech Computer Education Center
Gio trnh Lp trnh C cn bn Trang 98 F1 Help Alt-F8 Next Msg Alt-F7 Prev Msg Alt - F9 Compile F9 Make F10 Menu Kt qu in ra mn hnh 20 22 24 26 28 21 23 25 27 29 30 32 34 36 38 31 33 35 37 39 _ Chy chng trnh v quan st kt qu. 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.
Hanoi Aptech Computer Education Center
Gio trnh Lp trnh C cn bn Trang 99 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 Hanoi Aptech Computer Education Center
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) Gio trnh Lp trnh C cn bn Trang 100 Hanoi Aptech Computer Education Center
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 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 /* Danh sach nhan vien */
void main(void) { struct nhanvien { int manv; char hoten[30]; }; nhanvien snv[MAX]; char ctam[10]; int i, in; printf("Nhap vao so nhan vien: "); gets(ctam); in = atoi(ctam);
//Nhap danh sach nhan vien for(i = 0; i < in; i++) { printf("Nhap vao ma nhan vien thu %d: ", i + 1); gets(ctam); snv[i].manv = atoi(ctam); printf("Nhap vao ho ten: "); gets(snv[i].hoten); }
//in danh sach nhan vien for(i = 0; i < in; i++) printf("%5d %s\n", snv[i].manv, snv[i].hoten); 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 nhan vien: 2 Nhap vao ma nhan vien thu 1: 123 Nhap vao ho ten: Le Thuy Doan Trang Nhap vao ma nhan vien thu 2: 35 Chy v th li chng trnh vi d liu khc. Quan st kt qu. Gio trnh Lp trnh C cn bn Trang 101 Hanoi Aptech Computer Education Center
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 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 /* Xac dinh bien so xe */
void main(void) { struct tinh { int ma; char *ten; }; tinh sds[MAX] = {{60, "Dong Nai"}, {61, "Binh Duong"}, {62, "Long An"}, {63, "Tien Giang"}, {64, "Vinh Long"}, {65, "Can Tho"}}; char ctam[10]; int i, in; printf("Nhap vao bien so xe: "); gets(ctam); in = atoi(ctam);
for(i = 0; i < MAX; i++) if (sds[i].ma == in) printf("Xe dang ki o tinh %s.\n", sds[i].ten); 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 bien so xe: 62F5-1152 Xe dang ki o tinh Long An _ Chy v th li chng trnh vi 65H5-1246, 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. Gio trnh Lp trnh C cn bn Trang 102 Hanoi Aptech Computer Education Center
struct nhanvien { int manv; char hoten[30]; giacanh canhan; }; nhanvien snv[MAX]; char ctam[10]; int i, in; printf("Nhap vao so nhan vien: "); gets(ctam); in = atoi(ctam);
//Nhap danh sach nhan vien for(i = 0; i < in; i++) { printf("Nhap vao ma nhan vien thu %d: ", i + 1); gets(ctam); snv[i].manv = atoi(ctam); printf("Nhap vao ho ten: "); gets(snv[i].hoten); printf("Cho biet ten vo (hoac chong): "); gets(snv[i].canhan.vo_chong); printf("So con: "); gests(ctam); }
Gio trnh Lp trnh C cn bn Trang 103 Hanoi Aptech Computer Education Center
44 45 46 47 48 49 50 //in danh sach nhan vien for(i = 0; i < in; i++) { printf("Ma so: %d\nHo ten: %s\n Ho ten vo (hoac chong): %s\nSo con: %d", snv[i].manv, snv[i].hoten, snv[i].canhan.vo_chong, snv[i].canhan.con); 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 nhan vien: 3 Nhap vao ma nhan vien thu 1: 123 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 _ Chy v th li chng trnh vi d liu khc. Quan st kt qu. 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 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 /* Danh sach nhan vien */
//Ham in danh sach ra man hinh void output(nhanvien snv[], int in) { for(i = 0; i < in; i++) printf("%5d %s\n", snv[i].manv, snv[i].hoten); }
void main(void) { nhanvien snv[MAX]; char ctam[10]; int i, in; printf("Nhap vao so nhan vien: "); gets(ctam); in = atoi(ctam); input(snv, in); output(snv, in); 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 nhan vien: 3 Nhap vao ma nhan vien thu 1: 123 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 _ Chy v th li chng trnh vi d liu khc. Quan st kt qu. 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. Gio trnh Lp trnh C cn bn Trang 105 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. 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 it bng ch thng Hanoi Aptech Computer Education Center
Gio trnh Lp trnh C cn bn Trang 106 Hanoi Aptech Computer Education Center
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; 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 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 /* Tinh tien luong tuan cho nhan vien */
//ham chon ngay ke tiep ngay_tuan ngay_mai(ngay_tuan en) { ngay_tuan engay_ke; switch(en) { case CHU_NHAT : engay_ke = THU_HAI; break; case THU_HAI : engay_ke = THU_BA; break; case THU_BA : engay_ke = THU_TU; break; case THU_TU : engay_ke = THU_NAM; break; case THU_NAM : engay_ke = THU_SAU; break; case THU_SAU : engay_ke = THU_BAY; break; case THU_BAY : engay_ke = CHU_NHAT; break; } return (engay_ke); } 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 Nhap vao so gio lam viec tu Thu hai den Chu nhat: Nhap vao gio lam viec ngay Thu Hai: 7 Nhap vao gio lam viec ngay Thu Ba: 8 Nhap vao gio lam viec ngay Thu Tu: 6 Nhap vao gio lam viec ngay Thu Nam: 7 Nhap vao gio lam viec ngay Thu Sau: 8 Nhap vao gio lam viec ngay Thu Bay: 7 Nhap vao gio lam viec ngay Chu Nhat: 6 Tong luong tuan = 14625.00 dong. _ Hm chn ngy k tip trn kh di, bn thay t dng 54 n 65 bng cu lnh return (++en > 6 ? 0 : en); hoc return (++en % 7); Chy li chng trnh, quan st, nhn xt v nh gi kt qu vi d liu khc.
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. Gio trnh Lp trnh C cn bn Trang 108 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). 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.
Hanoi Aptech Computer Education Center
Gio trnh Lp trnh C cn bn Trang 109 Hanoi Aptech Computer Education Center
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 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 /* Ghi n so nguyen vao file va doc ra tu file*/
//Doc file f = fopen("int_data.dat", "rb"); while(fread(&i, sizeof(int), 1, f) == 1) printf("%d ", i); fclose(f); getch(); } Gio trnh Lp trnh C cn bn Trang 110 Hanoi Aptech Computer Education Center
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 1 2 3 4 5 6 7 8 9 10 _ Chy v th li chng trnh vi d liu khc. 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 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 /* Ghi n so nguyen vao file va doc ra tu file*/
f = fopen("array.dat", "rb"); fread(ib, sizeof(ib), 1, f); //doc mang tu file for (i = 0; i < 10; i++) printf("%d ", ib[i]); fclose(f); 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 so: 3 Nhap vao mot so: 6 Nhap vao mot so: 8 Nhap vao mot so: 1 Nhap vao mot so: 9 3 6 8 1 9 _ Chy v th li chng trnh vi d liu khc. Quan st kt qu. 11.2.3 Ghi, c structure Dng File Edit Search Run Compile Debug Project Option Window Help 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 /* Danh sach nhan vien */
void main(void) { FILE *f; struct nhanvien { int manv; char hoten[30]; }; nhanvien snv[MAX], snv1[MAX]; char ctam[10]; int i, in; printf("Nhap vao so nhan vien: "); gets(ctam); in = atoi(ctam);
Gio trnh Lp trnh C cn bn Trang 112 Hanoi Aptech Computer Education Center
24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 //Nhap danh sach nhan vien va ghi vao file if((f = fopen("struct.dat", "wb")) == NULL) { printf("Khong the mo file!\n"); exit(0); } fwrite(&in, sizeof(int), 1, f); //ghi so nhan vien vao file for(i = 0; i < in; i++) { printf("Nhap vao ma nhan vien thu %d: ", i + 1); gets(ctam); snv[i].manv = atoi(ctam); printf("Nhap vao ho ten: "); gets(snv[i].hoten); fwrite(&snv[i], sizeof(nhanvien), 1, f); //ghi tung nhan vien vao file } fclose(f);
//doc danh sach nhan vien tu file va in ra f = fopen("struct.dat", "rb"); fread(&in, sizeof(int), 1, f); //doc so nhan vien for(i = 0; i < in; i++) { fread(&snv1[i], sizeof(nhanvien, 1, f); //doc tung nhan vien in ra man hinh printf("%5d %s\n", snv[i].manv, snv[i].hoten); } 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 nhan vien: 2 Nhap vao ma nhan vien thu 1: 123 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 _ Chy v th li chng trnh vi d liu khc. Quan st kt qu. 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 Gio trnh Lp trnh C cn bn Trang 113 Hanoi Aptech Computer Education Center
11.3 Bi tp Thm chc nng ghi, c file cc bi tp ca bi Mng v chui, Cc d liu t to. Gio trnh Lp trnh C cn bn Trang 114 Hanoi Aptech Computer Education Center
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 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 /* Ham tinh giai thua */
#include <stdio.h> #include <conio.h>
void main(void) { int in; long giaithua(int); printf("Nhap vao so n: "); scanf("%d", &in); printf("%d! = %ld.\n", in, giaithua(in)); getch(); }
long giaithua(int in) { int i; long ltich = 1; if (in == 0) return (1L); else { for (i = 1; i <= in; i++) ltich *= i; return (ltich); } } F1 Help Alt-F8 Next Msg Alt-F7 Prev Msg Alt - F9 Compile F9 Make F10 Menu Gio trnh Lp trnh C cn bn Trang 115 Kt qu in ra mn hnh Nhap vao so n: 5 5! = 120. _ Th li chng trnh vi s liu khc.
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 2 3 4 5 6 7 8 9 10 /* Ham tinh giai thua */
long giaithua(int in) { int i; if (in == 0) return (1L); else return (in * giaithua(in 1)); } 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 4 3 2 1 5 * giaithua(4) = 5 * ? 4 * giaithua(3) = 4 * ? 3 * giaithua(2) = 3 * ? 2 * giaithua(1) = 2 * ? 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 2 3 4 5 1 * giaithua(0) = 1 * 1 = 1 2 * giaithua(1) = 2 * 1 = 2 3 * giaithua(2) = 3 * 2 = 6 4 * giaithua(3) = 4 * 6 = 24 5 * giaithua(4) = 5 * 24 = 120 Kt qu sau cng ta c 5! = 120. Hanoi Aptech Computer Education Center
Gio trnh Lp trnh C cn bn Trang 116
Hanoi Aptech Computer Education Center
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 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 /* Tinh so fibonacci thu n */
#include <stdio.h> #include <conio.h>
void main(void) { long in; long fibonacci(long); printf("Nhap vao so n: "); scanf("%ld", &in); printf("Fibonacci(%ld) = %ld.\n", in, fibonacci(in)); getch(); }
long fibonacci(long in) { if (in == 0 || in == 1) return in; else return fibonacci(in 1) + fibonacci(in 2); } 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 Fibonacci(10) = 55. Th li chng trnh vi s liu khc. 5! 5 * 4! 4 * 3! 3 * 2! 2 * 1! 1 * 0! 5! =120 1 * 0! = 1 5 * 4! = 120 4 * 3! = 24 3 * 2! = 6 2 * 1! = 2 Gio trnh Lp trnh C cn bn Trang 117 _ ? 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)
Hanoi Aptech Computer Education Center
Gio trnh Lp trnh C cn bn Trang 118 Hanoi Aptech Computer Education Center
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). Gio trnh Lp trnh C cn bn Trang 119 Hanoi Aptech Computer Education Center
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 Gio trnh Lp trnh C cn bn Trang 120 Hanoi Aptech Computer Education Center
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 Gio trnh Lp trnh C cn bn Trang 121 Hanoi Aptech Computer Education Center
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 [, Ctrl Q ] Xc nh cp ngoc bao 1 khi lnh F1 Gi gip Shift F1 Hin ca s gip theo mc Ctrl F1 Hin ca s gip v hm, ton t tung ng 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. Gio trnh Lp trnh C cn bn Trang 122 Hanoi Aptech Computer Education Center
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. Gio trnh Lp trnh C cn bn Trang 123 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 .
Hanoi Aptech Computer Education Center
Gio trnh Lp trnh C cn bn Trang 124
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 . 01101 2 : biu th s nh phn. 082 8 : biu th s bt phn. 23 16 : 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 = a n a n-1 ... a 1 a 0 = a n b n + a n-1 b n-1 +... + a 1 b 1 + a 0 b 0 (*) trong , - b : l c s h m. - a 0 a n : 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. (**)
Gio trnh Lp trnh C cn bn Trang 125 6 0110 6 6 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 = 01011 2 , chuyn sang h 10 ta dng cng thc (*) X = 0*2 4 + 1*2 3 + 0*2 2 + 1*2 1 + 1*2 0
= 0 + 8 + 0 + 2 + 1 = 11 V d 4: X = 1011010 2 , chuyn sang h 10 ta dng cng thc (*) X = 1*2 6 + 0*2 5 + 1*2 4 + 1*2 3 + 0*2 2 + 1*2 1 + 0*2 0
= 64 + 0 + 16 + 8 + 0 + 2 + 0 = 90 Chuyn i t h 10 sang h 2 V d 5: X = 11
V d 6: X = 90
11 2 1 5 11 chia 2 = 5 d 1 5 chia 2 = 2 d 1 2 chia 2 = 1 d 0 1 chia 2 = 0 d 1 2 1 2 2 0 1 2 1 0 1011 2 kt qu h nh phn 1011 2 Hanoi Aptech Computer Education Center
kt qu h nh phn 90 2 0 45 2 1 22 2 0 11 2 1 5 2 1 2 2 0 1 2 1 0 90 chia 2 = 2 d 0 45 chia 2 = 1 d 1 22 chia 2 = 0 d 0 11 chia 2 = 5 d 1 5 chia 2 = 2 d 1 2 chia 2 = 1 d 0 1 chia 2 = 0 d 1 1011010 2 1011010 2
Gio trnh Lp trnh C cn bn Trang 126
14.3.2 Chuyn i gia h 8 v h 10 Chuyn i t h 8 sang h 10 V d 7: X = 2106 8 , chuyn sang h 10 ta dng cng thc (*) X = 2*8 3 + 1*8 2 + 0*8 1 + 6*8 0
= 1024 + 64 + 0 + 6 = 1094 V d 8: X = 130 8 , chuyn sang h 10 ta dng cng thc (*) X = 1*8 2 + 3*8 1 + 0*8 0
= 64 + 24 + 0 = 88 Chuyn i t h 10 sang h 8 V d 9: X = 1094
V d 10: X = 88
1094 8 6 136 1094 chia 8 = 136 d 6 136 chia 8 = 17 d 0 17 chia 8 = 2 d 1 2 chia 8 = 0 d 2 8 0 17 8 1 2 8 2 0 2106 8 kt qu h bt phn 2106 8 Hanoi Aptech Computer Education Center
14.3.3 Chuyn i gia h 16 v h 10 Chuyn i t h 16 sang h 10 V d 11: X = F40 16 , chuyn sang h 10 ta dng cng thc (*) X = 15*16 2 + 4*16 1 + 0*16 0
= 3840 + 64 + 0 = 3904 V d 12: X = 1D 16 , chuyn sang h 10 ta dng cng thc (*) X = 1*16 1 + 13*16 0
Chuyn i t h 10 sang h 16 V d 13 Hanoi Aptech Computer Education Center
: X = 3904
3904 16
3904 chia 16 = 244 d 0 244 chia 16 = 15 d 4 15 chia 16 = 0 d 15 0 244 16 4 15 16 15 0
V d 14: X = 29
14.3.4 Chuyn i gia h 2 v h 16 Chuyn i t h 2 sang h 16 V d 15: X = 01011 2 , chuyn sang h 16 ta tra trong bng (**) X = B 16 Din gii : 0 1011 2 0 B 16 = B 16
V d 16: X = 1011010 2 , chuyn sang h 16 ta tra trong bng (**) X = 5A 16
Din gii : 101 1010 2 5 A 16 = 5A 16
Chuyn i t h 16 sang h 2 V d 17: X = B 16 , chuyn sang h 2 ta tra trong bng (**) X = 1011 2 Din gii : B 16 1011 2 = 1011 2
V d 18: X = 5A 16 , chuyn sang h 2 ta tra trong bng (**) X = 1011010 2
Din gii : 5 A 16 0101 1010 2 = 1011010 2
kt qu h thp lc phn F40 16 F40 16
S 15 tng ng trong h 16 l F (xem bng (**)) kt qu h thp lc phn 29 chia 16 = 1 d 13 1 chia 16 = 0 d 1 29 16 13 1 16 1 0 S 13 tng ng trong h 16 l D (xem bng (**)) 1D 16 1D 16
Gio trnh Lp trnh C cn bn Trang 128 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: Hanoi Aptech Computer Education Center
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 / 2 3 = 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) Gio trnh Lp trnh C cn bn Trang 129 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) 6 3 < 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 Bng 0 Bng 0 Khc 0 Bng 0 Khc 0 Bng 0 0 (sai) 0 (sai) 1 (ng) 1 (ng) 1 (ng) 0 (sai) 0 (sai) 0 (sai) 1 (ng) 1 (ng) 1 (ng) 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 1 0 1 0 1 1 1 0 0 0 0 0 1 0 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) Hanoi Aptech Computer Education Center
Gio trnh Lp trnh C cn bn Trang 130 Hanoi Aptech Computer Education Center
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 = 6 i = i + 3 i *= 3 i = 9 i = 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 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ( ) [ ] -> ! ~ & * ++ (type) sizeof * / % + << >> < <= > >= == != & ^ | && || ? : = += = *= /= %= <<= >>= &= ^= |= , Tri sang phi Phi sang tri Tri sang phi Tri sang phi Tri sang phi Tri sang phi Tri sang phi Tri sang phi Tri sang phi Tri sang phi Tri sang phi Tri sang phi Phi sang tri Phi sang tri 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) Gio trnh Lp trnh C cn bn Trang 131 Hanoi Aptech Computer Education Center
a / b c 2 * b + 3 * (a c) a * (b + (c 4 * 3)) a + c / a c * (b / a) 5 * a 6 / 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 / y z * 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)))
Gio trnh Lp trnh C cn bn Trang 132 Hanoi Aptech Computer Education Center
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 Gio trnh Lp trnh C cn bn Trang 133 Hanoi Aptech Computer Education Center
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" Gio trnh Lp trnh C cn bn Trang 134 Hanoi Aptech Computer Education Center
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
Gio trnh Lp trnh C cn bn Trang 135 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).