You are on page 1of 77

Lp trnh cn bn tp

Tm tt l thuyt v bi

PHN 1 CU TRC IU KHIN


I. TM TT L THUYT I.1. Cc kiu d liu c bn trong C

I.2. Cu trc r nhnh a. Cu trc if if (biu thc iu kin) { <khi lnh> ; } b. Cu trc if else if (biu thc iu kin) { <khi lnh 1>; } else { <khi lnh 2>; }
Trang 1

Lp trnh cn bn tp

Tm tt l thuyt v bi

V d: Gii v bin lun phng trnh: ax+b=0 #include <conio.h> #include <stdio.h> void main () { float a, b; printf ( \n Nhap vao a:); scanf ( %f, &a); printf ( Nhap vao b:); scanf ( %f, &b) ; if (a= = 0) if (b= = 0) printf ( \n PTVSN); else printf ( \n PTVN); else printf ( \n Nghiem x=%f, -b/a); getch (); } I.3. Cu trc la chn switch switch (biu thc) { case n1: cc cu lnh ; break ; case n2: cc cu lnh ; break ; case nk: <cc cu lnh> ; break ; [default: cc cu lnh] } Trong : ni l cc hng s nguyn hoc k t. Ph thuc vo gi tr ca biu thc vit sau switch, nu: o Gi tr ny = ni th thc hin cu lnh sau case ni. o Khi gi tr biu thc khng tha tt c cc ni th thc hin cu lnh sau default nu c, hoc thot khi cu lnh switch. o Khi chng trnh thc hin xong cu lnh ca case ni no th n s thc hin lun cc lnh thuc case bn di n m khng xt li iu kin (do cc ni c xem nh cc nhn) .V vy, chng trnh thot khi lnh switch sau khi thc hin xong mt trng hp, ta dng lnh break.
Trang 2

Lp trnh cn bn tp

Tm tt l thuyt v bi

V d 1 : Vit chng trnh chn menu bng s nhp t bn phm. #include<stdio.h> #include<conio.h> void ChonTD (int &chon) { printf ("Thuc Don") ; printf ("\n1. Lau thai!") ; printf ("\n2. Nuoc ngot!") ; printf ("\n3. Ca loc hap bau!") ; printf ("\n4. Chuot dong!") ; printf ("\n Xin moi ban chon mon an!") ; scanf ("%d",&chon) ; } void TDchon(int chon) { switch (chon) { case 1: printf ("\nBan chon lau thai!") ; break ; case 2: printf ("\nBan chon nuoc ngot!") ; break ; case 3: printf ("\nBan chon ca loc hap bau!") ; break ; case 4: printf ("\Ban chon chuot dong!") ; break ; default: printf ("\nBan chon khong dung!") ; } } void main() { clrscr() ; int chon ; ChonTD(chon) ; TDchon(chon) ; getch() ; } V d 2 : Vit chng trnh nhp vo thng , xut ra mn hnh s ngy ca thng va nhp (Gi s thng 2 c 28 ngy) . #include<stdio.h>
Trang 3

Lp trnh cn bn tp

Tm tt l thuyt v bi

#include<conio.h> void so_ngay (int thang) { switch (thang) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: { printf ("\n Thng %d c 31 ngy ", thang) ; break ; } case 4: case 6: case 9: case 11: { printf ("\n Thng %d c 30 ngy", thang) ; break ; } case 2: { printf ("\n Thng 2 c 28 ngy") ; break ; } default: printf ("\n Ban nhp thng khng ng!") ; } } void main() { clrscr() ; int thang ; printf( Hy nhp thng : ); scanf(%d, &thang); so_ngay(thang) ; getch() ; } I.4. Cu trc lp a. Cu trc lp for : for (<biu thc khi gn>; <biu thc iu kin>; <biu thc tng/gim>)
Trang 4

Lp trnh cn bn tp

Tm tt l thuyt v bi

{ <khi lnh>; } V d: In ra mn hnh bng m ASCII t k t s 33 n 255. #include<conio.h> #include<stdio.h> void main() { for (int i=33;i<=255;i++) printf("Ma ASCII cua %c: %d\t", i, i) ; getch () ; } b. Cu trc lp while < Khi gn> while ( <biu thc iu kin>) { lnh/ khi lnh; } V d: Tnh gi tr trung bnh cc ch s ca s nguyn n gm k ch s. #include<stdio.h> #include<conio.h> void main() { int n, tong=0, sochuso=0; float tb; printf ("Nhap vao gia tri n gom k chu so") ; scanf ("%d",&n) ; while(n>0) { tong=tong+n%10 ; sochuso++ ; n=n/10 ; } tb=(float)1.0*tong/sochuso ; printf ("Gia tri trung binh la: %f", tb) ; getch () ; } c. Cu trc lp do while do { < khi lnh> ;
Trang 5

Lp trnh cn bn tp

Tm tt l thuyt v bi

} while (biu thc iu kin) ; V d : Nhp k t t bn phm hin th ln mn hnh m ASCII ca k t , thc hin n khi nhn phm ESC (M ASCII ca phm ESC l 27). #include<stdio.h> #include<conio.h> void main() { int ma ; do { ma=getch (); if (ma !=27) printf ("Ma ASCII %c:%d\t", ma, ma); }while (ma!=27) ; getch () ; } II. BI TP II.1. Phng php chy tay tng bc tm kt qu chng trnh Xc nh chng trnh c s dng nhng bin no. Gi tr ban u ca mi bin. Nhng bin no s b thay i trong qu trnh chy chng trnh th lp thnh bng c dng sau:

V d: Cho bit kt qu ca on chng trnh sau: void main() { int i, a = 4; for(i = 0 ; i<a; i++) printf(%d\n, i); getch(); } Chng trnh gm 2 bin i v a, ch c bin i c gi tr thay i trong qu trnh chy chng trnh nn ta lp bng sau: a c gi tr l 4
Trang 6

Lp trnh cn bn tp

Tm tt l thuyt v bi

Ti bc 4, gi tr ca i = 4 vi phm iu kin lp (i<a) nn vng lp kt thc. Do kt qu in ra mn hnh: 0 1 2 3 II.2. Bi tp c bn a. Cu trc if / if..else v switch : 1. Cho bit kt qu ca on chng trnh sau: int a=9, b=6; a++; a=a+b--; a=a+(--b); if(a%2==0) printf("Gia tri cua a la chan); printf(Tong cua a va b la: %d, a+b) ; 2. Cho bit kt qu ca on chng trnh sau: int a=7, b=8; a++; a=a+(b--); --b; a--; a=(--a)+(--b); if(a%2!=0) printf("\n a la so le"); else printf("\n a la so chan");
Trang 7

Lp trnh cn bn tp

Tm tt l thuyt v bi

printf("\na = %d",a); 3. Cho bit kt qu ca on chng trnh sau: int x=5, y; y=x++ + 5; printf(x=%d, y=%d\n, x, y); y*=6; x=y%7; printf(x=%d,y=%d,y/x=%d, x, y, y/x); 4. Nhp vo hai s nguyn a, b. In ra mn hnh gi tr ln nht. 5. Cho ba s a, b, c nhp vo t bn phm. Hy tm gi tr ln nht ca ba s trn v in ra kt qu. 6. Cho ba s a, b, c nhp vo t bn phm. Hy in ra mn hnh theo th t tng dn cc s. 7. Vit chng trnh nhp vo mt s nguyn n gm ba ch s. Xut ra mn hnh ch s ln nht v tr no? V d: n=291. Ch s ln nht nm hng chc (9). 8. Vit chng trnh nhp vo s nguyn n gm ba ch s. Xut ra mn hnh theo th t tng dn ca cc ch s. V d: n=291. Xut ra 129. 9. Nhp vo ngy, thng, nm. Kim tra xem ngy, thng, nm c hp l hay khng? In kt qu ra mn hnh. 10. Nhp vo gi, pht, giy. Kim tra xem gi, pht, giy c hp l hay khng? In kt qu ra mn hnh. 11. Vit chng trnh nhp vo ngy, thng, nm hp l. Cho bit nm ny c phi l nm nhun hay khng? In kt qu ra mn hnh. 12. Vit chng trnh tnh din tch v chu vi cc hnh: tam gic, hnh vung, hnh ch nht v hnh trn vi nhng thng tin cn c nhp t bn phm. 13. Vit chng trnh tnh tin cc TAXI. Bit rng: - KM u tin l 5000. - 200m tip theo l 1000. - Nu ln hn 30km th mi km thm s l 3000. Hy nhp s km sau in ra s tin phi tr. 14. Nhp vo 3 s nguyn dng a, b, c. Kim tra xem 3 s c lp thnh tam gic khng? Nu c hy cho bit tam gic thuc loi no? (Cn, vung, u, ). 15. Vit chng trnh nhp vo s nguyn dng n. Kim tra xem n c phi l s chnh phng hay khng? (s chnh phng l s khi ly cn bc 2 c kt qu l nguyn).
Trang 8

Lp trnh cn bn tp

Tm tt l thuyt v bi

b. Cu trc lp 16. Cho bit kt qu ca an chng trnh sau: int a=18; for(int i=1; i<=a; i++) if(a%i= =0) printf("\t %d", i); 17. Cho bit kt qu ca an chng trnh sau: for(int i=0; i<5; i++) { for(int j=0; j<=i; j++) printf(%d\t, j); printf(\n); } 18. Cho bit kt qu ca an chng trnh sau: int i=10, s=0; while(i>0) { if(i%2= =0) s+=i; else if(i>5) s+=2*i; i--; } printf(s = %d,s); 19. Cho bit kt qu ca an chng trnh sau: int a=18, i=1; do { if(a%i==0) printf("\t %d",i); i++; } while(i<=a); 20. Cho bit kt qu ca an chng trnh sau: int a=11, b=16, i=a; while( i<b ) { if(i%2==0) { printf("\t %d", i);
Trang 9

Lp trnh cn bn tp

Tm tt l thuyt v bi

break; } i++; } 21. Cho bit kt qu ca an chng trnh sau: int a=10, s=0, i=0; while( i<a ) { i++; if(i%2==0) continue; else s=s+i; } printf("s=%d",s); 22. Cho bit kt qu ca an chng trnh sau: int i=1,s=0; while(1) // tc l vng lp khng bao gi dng { s=s+i++; if(i%2) i=i+2; else i=i+1; if(i>20) break; } printf("%d",s); 23. Vit chng trnh v hnh ch nht c kch thc nm (m, n nhp t bn phm). V d: Nhp m=5, n=4 ***** ***** ***** ***** 24. Vit chng trnh v hnh ch nht rng kch thc nm (m, n nhp t bn phm). V d: Nhp m=5, n=4 ***** * * * * ***** 25. Vit chng trnh v tam gic vung cn c c cao h (h nhp t bn phm).
Trang 10

Lp trnh cn bn tp

Tm tt l thuyt v bi

V d: Nhp h=4 * ** *** **** 26. Vit chng trnh v tam gic cn rng c cao h (h nhp t bn phm). V d: Nhp h=4 * * * * * **** 27. Vit chng trnh v tam gic cn c c cao h (h nhp t bn phm). V d: Nhp h=4 * *** ***** ******* 28. Vit chng trnh v tam gic cn rng c cao h (h nhp t bn phm). V d: Nhp h=4 * * * * * ******* 29. Vit chng trnh nhp s nguyn dng n. Lit k cc s nguyn t t 1 n n. 30. Vit chng trnh nhp vo hai s nguyn dng a v b. Tm c s chung ln nht v bi s chung nh nht ca a v b. 31. Vit chng trnh m s c s ca s nguyn dng N. V d: N=12 , s c s ca 12 l 6 32. Mt s hon thin l mt s c tng cc c s ca n (khng k n) bng chnh n. Hy lit k cc s hon thin nh hn 5000. V d: s 6 l s han thin v tng cc c s l 1+2+3=6. 33. Nhp vo ngy, thng, nm. Cho bit l ngy th my trong nm. 34. In ra dy s Fibonaci f1 = f0 =1 ; fn = fn-1 + fn-2 ; (n>1) II.3. Bi tp luyn tp v nng cao
Trang 11

Lp trnh cn bn tp

Tm tt l thuyt v bi

35. Ci t tt c cc lu v chng 1. 36. Nhp vo ngy, thng, nm. Kim tra xem ngy, thng, nm c hp l hay khng, nu hp l cho bit ngy sau l bao nhiu. V d: Nhp 31/12/2003, Ngy sau 01/01/2004 37. Nhp vo ngy, thng, nm. Kim tra xem ngy, thng, nm c hp l hay khng, nu hp l cho bit ngy trc l bao nhiu. V d: Nhp 01/01/2003, Ngy trc 31/12/2002 38. Nhp vo gi, pht, giy. Kim tra xem gi, pht, giy c hp l hay khng, nu hp l cho bit gi sau 1 giy l bao nhiu v gi trc 1 giy l bao nhiu. V d: Nhp 01:59:59, Gi sau 1 giy 02:00:00, Gi trc 1 giy 01:59:58 39. Vit chng trnh in ra bng cu chng t 2 n 9. 40. (*) V hnh cnh qut sau:

S dng cc hm cprintf(), textcolor(), delay(), kbhit(), thay i mu to cm gic cho cnh qut xoay cho n khi nhn mt phm bt k.

PHN 3 HM CON (CHNG TRNH CON)


I. TM TT L THUYT I.1 Cc hm con c s dng nhm mc ch:
Trang 12

Lp trnh cn bn tp

Tm tt l thuyt v bi

Khi c mt cng vic ging nhau cn thc hin nhiu v tr. Khi cn chia mt chng trnh ln phc tp thnh cc n th nh (hm con) chng trnh c trong sng, d hiu trong vic x l, qun l vic tnh ton v gii quyt vn . I.2 Khai bo hm con <Kiu d liu ca hm> Tn hm ([ danh sch cc tham s]) I.3 Cch xy dng mt hm con a. Kiu d liu ca hm : Gm 2 loi : void : Hm khng tr v gi tr. Nhng hm loi ny thng ri vo nhng nhm chc nng: Nhp / xut d liu , thng k, sp xp, lit k. void Tn_hm (danh sch cc tham s) { Khai bo cc bin cc b Cc cu lnh / khi lnh hay li gi n hm khc. } Kiu d liu c bn hay kiu d liu c cu trc: Kiu d liu ty theo mc ch ca hm cn tr v gi tr g thng qua vic phn tch bi ton. Nhng hm loi ny thng s dng trong cc trng hp: m, kim tra, tm kim, tnh trung bnh, tng, tch, <Kiu d liu> Tn_hm ([danh sch cc tham s]) { <Kiu d liu> kq; Khai bo cc bin cc b Cc cu lnh / khi lnh hay li gi n hm khc. return kq; } b. Tham s : Xc nh da vo d liu u vo ca bi ton (Input). Gm 2 loi Tham s khng l con tr (tham tr): Khng thay i hoc khng cn ly gi tr mi ca tham s sau li gi hm. Tham s dng ny ch mang ngha l d liu u vo. Tham s con tr (tham bin): C s thay i gi tr ca tham s trong qu trnh thc hin v cn ly li gi tr sau khi ra khi hm. ng dng ca tham s loi ny c th l d liu u ra (kt qu) hoc cng c th va l d liu u vo va l d liu u ra. Lu : phi c du & trc tn tham s c. Tn hm : t tn theo quy c t tn trong C sao cho tn gi ng vi chc nng hay mc ch thc hin ca hm v gi nh. d. V d V d 1: Vit chng trnh nhp s nguyn dng n v in ra mn hnh cc c s ca n Phn tch bi ton: Input: n - Gi tr n khng b thay i trong qu trnh tm c s do tham s ca hm l tham tr.
Trang 13

Lp trnh cn bn tp

Tm tt l thuyt v bi

Output: In ra cc c s ca n Xc nh tn hm: Hm ny dng in ra cc c s ca n nn c th t l LietKeUocSo #include<conio.h> #include<stdio.h> void LietKeUocSo (int n) { int i; for( i=1; i<=n; i++) printf(%5d, i); } void main() { int n; printf(Nhap n = ); scanf(%d,&n); printf("Cac uoc so cua n : " ); LietKeUocSo(n); getch( ); } V d 2: Vit chng trnh nhp s nguyn dng n v tnh tng S = 1+2+ + n, vi n>0 Phn tch bi ton: Input: n - Gi tr n khng thay i trong qu trnh tnh tng tham s ca hm khng l tham tr. Output: Tng S - Tr v gi tr ca S. - S l tng cc s nguyn dng nn S cng l s nguyn dng. Xc nh tn hm: Hm ny dng tnh tng S nn c th t l TongS. #include<conio.h> #include<stdio.h> int TongS ( int n) { int S=0, i=1; while(i<=n) { S+=i; i++; } return S; } void main() { int n, kq;
Trang 14

Lp trnh cn bn tp

Tm tt l thuyt v bi

printf(Nhap n = ); scanf(%d,&n); kq = TongS ( n ); printf(Tong can tinh la: %d , kq); getch( ); } II. BI TP II.1. Bi tp c bn 1. Ci t li tt c cc bi tp chng 2 theo phng php hm. 2. Vit chng trnh tnh din tch v chu vi ca hnh ch nht vi chiu di v chiu rng c nhp t bn phm. 3. Vit chng trnh tnh din tch v chu vi hnh trn vi bn knh c nhp t bn phm. 4. Nhp s nguyn dng n (n>0). Lit k tt c cc s nguyn t nh hn n. 5. Nhp s nguyn dng n (n>0). Lit k n s chnh phng u tin. 6. Nhp s nguyn dng n (n>0). m xem c bao nhiu s hon thin nh hn n. 7. Nhp s nguyn dng n (0 <= n< 1000) v in ra cch c ca n. V d: Nhp n = 105. In ra mn hnh: Mot tram le nam. 8. Vit chng trnh tnh tin thu my dch v Internet v in ra mn hnh kt qu. Vi d liu nhp vo l gi bt u thu (GBD), gi kt thc thu (GKT), s my thu (SoMay). - iu kin cho d liu nhp: 6<=GBD<GKT<=21. Gi l s nguyn. - n gi: 2500 cho mi gi my trc 17:30 v 3000 cho mi gi my sau 17:30. 9. Vit chng trnh tnh tin lng ngy cho cng nhn, cho bit trc gi vo ca, gi ra ca ca mi ngi. Gi s rng: - Tin tr cho mi gi trc 12 gi l 6000 v sau 12 gi l 7500. - Gi vo ca sm nht : 6 gi sng v gi ra ca tr nht : 18 gi (gi nhp vo l s nguyn) 10. Nhp vo 3 s thc a, b, c v kim tra xem chng c thnh lp thnh 3 cnh ca mt tam gic hay khng? Nu c hy tnh din tch, chiu di mi ng cao ca tam gic v in kt qu ra mn hnh. - Cng thc tnh din tch s = sqrt(p*(p-a)*(p-b)*(p-c) ) (Vi p l na chu vi ca tam gic). - Cng thc tnh cc ng cao: ha = 2s/a, hb=2s/b, hc=2s/c. 11. Nhp vo 6 s thc a, b, c, d, e, f . Gii h phng trnh sau :

12. Vit chng trnh nhp 2 s nguyn dng a, b. Tm USCLN v BSCNN ca a,b. 13. Vit chng trnh tnh tng nghch o ca n giai tha.
Trang 15

Lp trnh cn bn tp

Tm tt l thuyt v bi

14. Cho 2 s nguyn a, b. Vit hm hon v gi tr 2 s trn. 15. (*) Vit chng trnh nhp s nguyn dng n gm 5 ch s, kim tra xem cc ch s n c phi l s i xng hay khng. V d: i xng: 13531 , Khng i xng: 13921 16. Vit chng trnh nhp s nguyn dng n gm k ch s , m xem n c bao nhiu ch s chn v bao nhiu ch s l. 17. Vit chng trnh nhp s nguyn dng n gm k ch s, m xem n c bao nhiu ch s l s nguyn t. 18. Vit chng trnh nhp s nguyn dng n gm k ch s, tnh tng cc c s dng ca n. V d: Nhp n=6 , Tng cc c s t 1 n n: 1+2+3+6=12. 19. Vit chng trnh nhp s nguyn dng n gm k ch s , tm c s l ln nht ca n. V d: c s l ln nht ca 27 l 9. 20. Vit chng trnh nhp s nguyn dng n gm k ch s, kim tra xem cc ch s ca n c ton l hay ton chn khng. 21. (*) Vit chng trnh nhp s nguyn dng n gm k ch s, sp xp cc ch s ca n theo th t tng dn. V d: Nhp n=1536 , Kt qu sau khi sp xp: 1356. II.2. Bi tp luyn tp v nng cao 22. Vit chng trnh nhp s nguyn dng n gm k ch s , sau nhp mt s nguyn x, tm v tr xut hin ca ch s c gi tr x trong n. V d: Nhp n=1526, x=2 , Kt qu: Chu so 2 o vi tri thu 3. 23. Vit chng trnh nhp s nguyn dng n gm k ch s, kim tra xem cc ch s ca n c c sp th t khng. V d: Nhp n=1569 hoc n=8521 , Kt qu: C th t. 24. Vit chng trnh nhp 2 s a, b sao cho: s ln nht trong 2 s phi l mt s dng v chia ht cho 7. Nu nhp sai phi yu cu nhp li cho n khi ng. 25. Vit chng trnh nhp s nguyn dng n gm k ch s, tnh gi tr trung bnh cc ch s chn trong n. 26. (*) Vit chng trnh in ra mn hnh ngy/thng/nm ca ngy hin ti, cho php s dng cc phm mi tn ln, xung tng hoc gim mt ngy. 27. (*) Vit chng trnh in ra mn hnh gi:pht:giy hin ti, cho php s dng cc phm mi tn ln, xung tng hoc gim mt giy.

PHN 4 MNG MT CHIU


I. TM TT L THUYT I.1. Khi nim

Trang 16

Lp trnh cn bn tp

Tm tt l thuyt v bi

Mng thc cht l mt bin c cp pht b nh lin tc v bao gm nhiu bin thnh phn. Cc thnh phn ca mng l tp hp cc bin c cng kiu d liu v cng tn. Do truy xut cc bin thnh phn, ta dng c ch ch mc. I.2. Khai bo mng khai bo mt mng, ta c 2 cch khai bo sau : Cch 1: Con tr hng < Kiu d liu > < Tn mng > [ < S phn t ti a ca mng> ] ; V d: int a[100]; // Khai bao mang so nguyen a gom 100 phan tu float b[50]; // Khai bao mang so thuc b gom 50 phan tu Cch 2: Con tr < Kiu d liu > *< Tn mng >; V d : int *p; // khai bao con tro p Lu : Khi s dng bin con tr truy xut mng, theo cch nh trn th thc cht con tr p ch chim 2 byte b nh cha a ch m thi. to mng cha d liu thnh phn th ta phi cp pht vng nh cho con tr p. Dng hm : malloc trong th vin <stdlib.h> cp pht vng nh. Tn con tr = (kiu d liu *) malloc(100); V d: int *px; //Khai bo con tr px px = (int *) malloc (100); //Cp pht 100 nh kiu int cho con tr px Sau khi s dng xong th nn gii phng vng nh bng hm free free (p) ; // gii phng vng nh cho con tr p. I.3. Truy xut phn t ca mng Vi khi nim v cch khai bo nh trn ta c hnh dng ca mng mt chiu nh sau: V d : int A[5] // Khai bo mng A gm ti a 5 phn t nguyn.

V d minh ho: Khai bo v gn gi tr cho mng #include <conio.h> #include <stdio.h> void main ( ) {
Trang 17

Lp trnh cn bn tp

Tm tt l thuyt v bi

clrscr ( ); int a[4] = {5,9,3,8}; for (int i = 0; i < 4 ; i++) printf ( a [ %d ] = %d \n, i , a[i] ); getch ( ); } i vi con tr: Ly a ch ca phn t trong mng ta dng du & V d: int a[7]; int *p = a[3]; //Ly a ch phn t th 3 V d : int a[7]; int *px; px = a; //px tr ti phn t th 0 px = px + 4; //px tr ti phn t th 4 T v d trn ta c th m hnh ho mng nh sau:

V d minh ho: Vit chng trnh nhp vo mng mt chiu n phn t kiu s nguyn, xut mng va nhp ra mn hnh #include <conio.h> #include <stdio.h> void nhap_mang(int a[10], int &n) { int i; printf(nhap vao so phan tu mang n=); scanf(%d,&n); for(i=0;i<n;i++) { printf ( a [ %d ] = , i ); scanf ( %d, &a[i] ); } } void xuat_mang(int a[10], int n) { int i; printf ( \n Noi dung mang vua nhap: ); for (i = 0; i <n ; i ++) printf ( %5d ,a[i]);
Trang 18

Lp trnh cn bn tp

Tm tt l thuyt v bi

} void main ( ) { int a[10], i; nhap_mang(a,n); xuat_mang(a,n); getch ( ); } II. BI TP II.1. Mt s k thut c bn a. K thut t c hiu : K thut ny thng c p dng cho nhng bi ton kim tra. V d 1 : Vit hm kim tra xem mng cc s nguyn c th t tng dn khng? (Tr v 1: Nu mng tng dn, ngc li tr v 0). int KiemTraTang (int a[ ], int n) { int i, flag = 1; for ( i = 0; i < n-1; i ++ ) if ( a[i] > a[i+1] ) // Vi phm iu kin tng dn { flag = 0; break; } return flag; } V d 2 : Vit hm kim tra xem trong mng cc s nguyn c tn ti s nguyn l ln hn 100 hay khng? (Tr v 1: Nu c tn ti s l v ln hn 100, ngc li tr v 0). int KiemTraLe (int a[ ], int n) { int i, flag = 0; for ( i = 0; i < n; i ++ ) if ( a[i] % 2 != 0 && a[i][j] > 100 ) //Gp phn t tho { flag = 1; break; } return flag; } b. K thut t lnh canh : K thut ny thng c p dng cho nhng bi tp v tm kim, lit k theo mt iu kin nht nh no .
Trang 19

Lp trnh cn bn tp

Tm tt l thuyt v bi

V d : Vit hm tm v tr v gi tr ln nht trong mng mt chiu cc s nguyn. int TimMax (int a[], int n) { int max, i = 1; max = a[0]; while ( i < n ) { if ( a[i] > max ) max = a[i] ; i++; } return max; } II.2. Bi tp c bn a. Nhp, xut mng 1. Vit chng trnh nhp xut mng mt chiu cc s thc. 2. Vit chng trnh nhp ngu nhin mng mt chiu cc s nguyn, xut mng va nhp ra mn hnh. 3. Vit chng trnh nhp mng cc s thc v in cc phn t m trong mng. 4. Vit chng trnh nhp mng cc s nguyn v in cc phn t l c trong mng. 5. Vit chng trnh nhp vo mng mt chiu cc s nguyn v in ra cc phn t chn < 20 6. Vit chng trnh nhp vo mng mt chiu cc s nguyn v in ra mn hnh cc phn t l s nguyn t. 7. Vit chng trnh nhp vo s nguyn n v lit k cc s nguyn t nh hn n, nu mng khng tn ti s nguyn t no nh hn n th phi xut ra mt cu thng bo. 8. Vit chng trnh nhp vo mng mt chiu cc s nguyn v xut ra mn hnh cc phn t l s chnh phng nm ti nhng v tr l trong mng. b. Tm kim trn mng mt chiu Phng php c bn : Vit hm tm phn t c gi tr x xut hin u tin trong mng mt chiu. (Nu tm thy tr v v tr xut hin x, ngc li tr v -1) int TimX (int a[], int n) { int x, i; for ( i = 0; i < n ; i ++) if ( x==a[i] )
Trang 20

Lp trnh cn bn tp

Tm tt l thuyt v bi

return i; return -1; } 9. Vit hm tm v tr phn t c gi tr x xut hin cui cng trong mng. 10. Vit hm tm v tr ca phn t nh nht trong mng cc s nguyn. 11. Vit hm tm v tr ca phn t ln nht trong mng cc s nguyn. 12. Vit hm in v tr cc phn t nguyn t trong mng cc s nguyn. 13. Vit hm in v tr cc phn t nguyn t ln hn 23. 14. Vit hm tm v tr phn t m u tin trong mng. Nu khng c phn t m tr v 1. 15. Vit hm tm v tr phn t m ln nht trong mng. 16. Vit hm tm v tr phn t dng u tin trong mng. Nu khng c phn t dng tr v 1. 17. Vit hm tm v tr phn t dng b nht trong mng. 18. Vit hm in cc phn t trong mng l bi ca 3 v 5. 19. Vit hm tm s chn cui cng c trong mng, nu khng tn ti s chn hm tr v -1 20. Vit hm tm s l ln nht c trong mng, nu khng tn ti s l hm tr v -1. 21. Vit hm tm v i ch phn t ln nht vi phn t nh nht trong mng. 22. Nhp vo X. Vit hm in ra mn hnh nhng phn t trong mng c gi tr t 1 n X. 23. Vit chng trnh nhp vo mt dy s a gm n s thc ( 100 n ), nhp vo dy s b gm m s thc ( 100 m ). In ra nhng phn t ch xut hin trong dy a m khng xut hin trong dy b. In ra nhng phn t xut hin c hai dy. c. m Tn sut Phng php c bn : Vit hm m phn t chia ht cho 5 trong mng cc s nguyn. int Dem (int a[], int n ) { int i, dem = 0; for ( i = 0; i < n ; i++ ) if ( a[i] % 5 == 0 ) dem++; return dem; } 24. Vit hm m cc phn t m, dng trong mng. 25. Vit hm m cc phn t chn, l trong mng. 26. Vit hm m s ln xut hin ca phn t x trong mng. 27. Vit hm m cc phn t nh hn x trong mng.
Trang 21

Lp trnh cn bn tp

Tm tt l thuyt v bi

28. Vit hm m cc phn t l s nguyn t trong mng. 29. Vit hm m cc phn t l s hon thin trong mng. 30. Vit hm m cc phn t l bi ca 3 v 5 trong mng cc s nguyn. d. Tnh tng Trung bnh c iu kin Phng php c bn : Vit hm tnh tng cc phn t trong mng. int TinhTong (int a[], int n ) { int i, tong = 0; for ( i = 0; i < n; i++ ) tong = tong + a[i] ; return tong; } Vit hm tnh gi tr trung bnh cc phn t c gi tr m trong mng. i vi hm tnh trung bnh c iu kin phi lu khi chia gi tr (C th mng khng c phn t no tho iu kin, nu ta chia tc l chia cho 0). float TrungBinhAm (int a[], int n ) { int i, tong = 0, spt=0; for ( i = 0; i < n; i++ ) if( a[i]<0 ) { tong = tong + a[i] ; spt++; } if(spt==0) return 0; return 1.0*tong/spt; } Bi tp 31. Vit hm tnh tng cc phn t chn trong mng. 32. Vit hm tnh tng cc phn t l trong mng cc s nguyn. 33. Vit hm tnh tng cc phn t nguyn t trong mng. 34. Vit hm tnh tng cc phn t nm v tr chn trong mng cc s nguyn. 35. Vit hm tnh tng cc phn t nm v tr nguyn t trong mng. 36. Vit hm tnh tng cc phn t chia ht cho 5 c trong mng. 37. Vit hm tnh tng cc phn t cc i trong mng cc s nguyn (phn t cc i l phn t ln hn cc phn t xung quanh n). V d : 1 5 2 6 3 5 1 8 6
Trang 22

Lp trnh cn bn tp

Tm tt l thuyt v bi

38. Vit hm tnh tng cc phn t cc tiu trong mng cc s nguyn ( phn t cc tiu l phn t nh hn cc phn t xung quanh n ). V d : 6 4 2 9 5 3 7 1 5 8 39. Vit hm tnh tng cc phn t l bi ca 3 v 5 trong mng cc s nguyn. 40. Vit hm tnh tng cc phn t l s hon thin trong mng cc s nguyn. 41. Vit hm tnh gi tr trung bnh ca cc s hon thin trong mng cc s nguyn. e. Sp xp K thut c bn : Vit hm sp xp mng theo th t tng dn. void HoanVi (int &a, int &b) { int tam ; tam= a; a = b; b = tam; } void SapTang (int a[], int n) { int i, j; for ( i = 0; i < n-1 ; i++) for ( j = i+1; j < n; j++) if (a[i] > a [j]) HoanVi (a[i], a[j]); } Bi tp 42. Vit hm sp xp mng theo th t gim dn. 43. Vit hm sp xp mng theo th t tng dn ca cc phn t l s nguyn t. 44. Vit hm sp xp cc phn t l tng dn. 45. Vit hm sp xp cc phn t chn gim dn. 46. Vit hm sp xp cc phn t chn nm bn tri theo th t tng dn cn cc phn t l bn phi theo th t gim dn. 47. Vit hm sp xp cc phn t m gim dn t tri sang phi, phn t dng tng dn t phi sang tri. f. Xo K thut c bn : Duyt mng t tri sang phi . Xut pht t v tr cn xo tin hnh di ln lt cc phn t v pha trc cho n khi kt thc mng, sau gim kch thc mng. Vn t ra l tm v tr cn xa theo iu kin bi ton ri thc hin xa. Vit hm xo phn t u tin ca mng. void XoaDau (int a[], int &n)
Trang 23

Lp trnh cn bn tp

Tm tt l thuyt v bi

{ for (int i = 0; i < n-1 ; i++) a[i] = a[i+1]; n--; } Vit hm xo phn t ti v tr (vitri) cho trc trong mng. void XoaTaiViTri (int a[], int &n, int vitri) { for (int i = vitri; i < n-1 ; i++) a[i] = a[i+1]; n--; } Bi tp 48. Vit hm xo phn t ti v tr l trong mng. 49. Vit hm xo phn t c gi tr ln nht trong mng. 50. Nhp vo gi tr X. Vit hm xo tt c cc phn t c gi tr nh hn X. 51. Nhp vo gi tr X. Vit hm xo phn t c gi tr gn X nht. g. Chn K thut c bn : Duyt mng t phi sang tri. Xut pht t cui mng tin hnh y ln lt cc phn t v pha sau cho n v tr cn chn, chn phn t cn chn vo v tr chn v tng kch thc mng. Trc khi chn ta phi xc nh v tr cn chn theo iu kin bi ton. Thm phn t c gi tr X vo cui mng. void ThemCuoi (int a[], int &n, int X) { a[n]=X; n++; } Chn phn t c gi tr X vo mng ti v tr cho trc void ChenX (int a[], int &n, int X, int vitri) { for (int i = n; i >vitri ; i--) a[i] = a[i-1] ; a[vitri] = X; n++; } Bi tp 52. Vit hm chn phn t c gi tr X vo v tr u tin ca mng. 53. Vit hm chn phn t c gi tr X vo pha sau phn t c gi tr ln nht trong mng.
Trang 24

Lp trnh cn bn tp

Tm tt l thuyt v bi

54. Vit hm chn phn t c gi tr X vo trc phn t c gi tr l s nguyn t u tin trong mng. 55. Vit hm chn phn t c gi tr X vo sau tt c cc phn t c gi tr chn trong mng. h. Tch / ghp mng K thut tch c bn : Cho mng a kch thc n (n chn). Tch mng a thnh 2 mng b v c sao cho: b c phn t u ca mng a, phn t cn li a vo mng c. void TachMang(int a[], int n, int b[], int &m, int c[], int &l) { int k=n/2; m=l=0; for(int i=0; i<k; i++) { b[m++]=a[i]; c[l++]=a[k+i] } } K thut ghp c bn : Cho 2 mng s nguyn a v b kch thc ln lt l n v m. Vit chng trnh ni mng b vo cui mng a. void NoiMang(int a[], int &n, int b[], int m) { for(int i=0; i<m; i++) a[n+i]=b[i]; n=n+m; } Cho 2 mng s nguyn a v b kch thc ln lt l n v m. Vit chng trnh ni xen k (an xen) ln lt cc phn t mng a v b vo mng c. Cch thc hin: a ln lt tng phn t ca mng a v mng b vo mng c, tng ch s tng ng. Nu mt trong hai mng ht trc th chp tt c cc phn t cn li ca mng cha ht vo mng c. t i l ch s ca mng a; j: ch s ca mng b v k l ch s ca mng c. void NoiMang(int a[], int &n, int b[], int m, int c[], int &k) { int i=0, j=0; k=0; while(i<n&&j<m) { c[k++]=a[i++]; c[k++]=b[j++]; } while(i<n) c[k++]=a[i++]; while(j<m)
Trang 25

Lp trnh cn bn tp

Tm tt l thuyt v bi

c[k++]=b[j++]; } Bi tp 56. Vit chng trnh tch 1 mng cc s nguyn thnh 2 mng a v b, sao cho mng a cha ton s l v mng b cha ton s chn. V d: Mng ban u: 1 3 8 2 7 5 9 0 10 Mng a: 1 3 7 5 9 Mng b: 8 2 10 57. Cho 2 mng s nguyn a v b kch thc ln lt l n v m. Vit chng trnh ni 2 mng trn thnh mng c theo nguyn tc chn u mng v l cui mng. V d: Mng a: 3 2 7 5 9 Mng b: 1 8 10 4 12 6 Mng c: 6 12 4 10 2 8 3 1 7 5 9 II.3. Bi tp luyn tp v nng cao 58. Vit chng trnh nhp vo mng A gm n phn t, trong qu trnh nhp kim tra cc phn t nhp vo khng c trng, nu trng thng bo v yu cu nhp li. 59. Vit hm tnh tng ca tng dy con gim c trong mng. 60. (*) Cho mng cc s nguyn a gm n phn t ( 30000 n ) v nhp vo mt s dng k. Hy ch ra s hng ln th k ca mng. V d: Mng a: 6 3 1 10 11 18 , k = 2 Kt qu: 10 61. (*) Cho 2 dy A, B cc s nguyn (kch thc dy A nh hn dy B). Hy kim tra xem A c phi l con ca B hay khng? 62. Vit hm lit k cc b 4 s a, b, c, d trong mng cc s nguyn (c t nht 4 phn t v i mt khc nhau) sao cho a + b = c + d. 63. (*) Vit chng trnh tnh trung bnh cng ca cc tng cc dy tng dn c trong mng cc s nguyn. V d: 1 2 3 4 2 3 4 5 6 4 5 6 => TB = 15. 64. (**) Vit chng trnh nhp vo hai s ln a, b nguyn ( a, b c t 20 ch s tr ln). Tnh tng, hiu, tch, thng ca hai s trn. 65. Vit hm tnh tng cc phn t l s Amstrong (s Amstrong l s c c im nh sau: s c k k s, tng ca cc lu tha bc k ca cc k s bng chnh s . V d: 153 l s c cc k s 13+53+33= 153 l mt s Amstrong). 66. Vit hm tm v xa tt c cc phn t trng vi x trong mng mt chiu cc s nguyn, nu khng tn ti phn t x trong mng th tr v -1. 67. Vit hm xo tt c phn t trng nhau trong dy ch gi li mt phn t trong . V d: 1 6 2 3 2 4 2 6 5 1 6 2 3 4 5
Trang 26

Lp trnh cn bn tp

Tm tt l thuyt v bi

68. (**) Vit hm xo nhng phn t sao cho mng kt qu c th t tng dn v s ln xo l t nht. 69. Cho dy a gm n s nguyn c th t tng dn. Nhp vo mt phn t nguyn X, vit hm chn X vo dy sao cho dy vn c th t tng dn (khng sp xp). 70. Vit chng trnh tm s l nh nht ln hn mi s chn c trong mng. 71. Vit hm tm gi tr chn nh nht nh hn mi gi tr l trong mng cc s nguyn. 72. Vit hm tm phn t xut hin nhiu nht trong mng cc s nguyn. 73. Vit chng trnh m v lit k cc mng con tng dn trong mng mt chiu cc s nguyn. V d: 6 5 3 2 3 4 2 7 cc dy con tng dn l 2 3 4 v 2 7 74. Vit chng trnh tm mng con tng dn c tng ln nht trong mng mt chiu. 75. (*) Vit chng trnh nhp vo mt dy s a gm n s nguyn (n <= 100). Tm v in ra dy con tng di nht V d : Nhp dy a : 1 2 3 6 4 7 8 3 4 5 6 7 8 9 4 5 Dy con tng di nht : 3 4 5 6 7 8 9 76. (**) Vit chng trnh tch 1 mng cc s nguyn thnh 2 mng a v b, sao cho kt qu thu c l: Mng a cha ton s l tng dn. Mng b cha ton s chn gim dn. (Khng dng sp xp) Hng dn: Tm v tr chn thch hp khi trch phn t t mng ban u. V d: Mng ban u: 9 3 8 2 7 5 1 0 10 Mng a: 1 3 5 7 9 Mng b: 10 8 2 77. (**) Vit chng trnh in ra tam gic Pascal (dng mng mt chiu). 78. Vit chng trnh nhp vo dy s a gm n s thc ( n <= 100 ), nhp vo dy s b gm m s thc ( m <= 100 ). Hy sp xp hai dy theo th t tng dn. (*) Trn 2 dy trn thnh dy c sao cho dy c vn c th t tng. Xut dy a, b, c ra mn hnh. 79. (*) Cho mng C c n phn t ( n < 200 ), cc phn t l cc ch s trong h m c s 16 (Hexa) (iu kin mi phn t <= n ). Hy tch mng C ra cc mng con theo iu kin sau: cc mng con c gii hn bi hai ln xut hin th hai ca con s trong dy. V d: 123A4518B23 c cc dy con l123A451, 23A4518B2, 23A4518B23 80. (**) Cho hai s nguyn dng A, B. Hy xc nh hai s C, D to thnh t hai s A, B sao cho C l s ln nht, D l s nh nht. Khi gch i mt s ch s trong C (D), th cc s cn li gi nguyn to thnh A, cc ch s b i gi nguyn to thnh B.
Trang 27

Lp trnh cn bn tp

Tm tt l thuyt v bi

V d: A = 52568, B = 462384 C = 54625682384, D = 45256236884. 81. Vit chng trnh nhp vo dy s a gm n s nguyn ( n <= 100 ). Hy o ngc dy . V d: Nhp a: 3 4 5 2 0 4 1 , Dy sau khi o: 1 4 0 2 5 4 3 (*) Hy kim tra xem dy cho c th t cha (dy c gi l th t khi l dy tng hoc dy gim ). 82. Cho mng A c n phn t hy cho bit mng ny c i xng hay khng. 83. Cho mng A c n phn t. Nhp vo s nguyn k ( 0 k ), dch phi xoay vng mng A k ln. V d: Mng A: 5 7 2 3 1 9 Nhp k = 2 Dch phi xoay vng mng A: 1 9 5 7 2 3

PHN 5 CHUI K T
I. TM TT L THUYT I.1. Khi nim : Chui k t l mt dy cc phn t, mi phn t c kiu k t. Lu : Chui k t c kt thc bng k t \0. Do khi khai bo di ca chui lun lun khai bo d 1 phn t cha k t \0. V d: char S[5]=CNTT //khai bo chui c 5 phn t kiu char v gn dy k t CNTT

Chui rng l chui cha c k t no trong mng k hiu I.2. Khai bo chui : khai bo mt chui, ta c 2 cch khai bo sau : Cch 1: Con tr hng char < Tn chui > [ < S k t ti a ca chui > ] ; V d: char chuoi[25]; ngha khai bo 1 mng kiu k t tn l chuoi c 25 phn t (nh vy ti a ta c th nhp 24 k t v phn t th 25 cha k t kt thc chui \0 ) Cch 2: Con tr char *< Tn chui >;
Trang 28

Lp trnh cn bn tp

Tm tt l thuyt v bi

V d :

char *chuoi; gets(S); puts(S);

I.3. Cc thao tc trn chui a. Nhp chui S : b. Xut chui S : Xut chui s ra mn hnh. V d: void main() { char chuoi[80]; printf("Nhap vao chuoi:"); gets(chuoi); printf("Chuoi vua nhap la:); puts(string); getch(); } c. Cc hm th vin (string.h) 1) strlen(s) : Tr v di ca chui s. V d : char *s = "Borland International"; printf("Do dai s: %d", strlen(s)); Kt qu: V d : Do dai s: 21 2) strcpy(s1,s2 ) : Sao chp ni dung chui s2 vo chui s1. char dest[10]; char *src = "abcdefghi"; strcpy(dest, src); puts(dest); Kt qu: abcdefghi Nhp cc k t t phm cho n khi nhn phm Enter .

3) strncpy(s1, s2, n) : Chp n k t t chui s2 sang chui s1. Nu chiu di s2 < n th hm s in khong trng cho n k t vo s1. V d : char dest[4]; char *src = "abcdefghi"; strncpy(dest, src, 3); puts( dest); Kt qu: abc 4) strcat( s1, s2) : Ni chui s2 vi chui s1. V d : char *s1 = Khoa ; char *s2 = "CNTT"; strcat(s1, s2);
Trang 29

Lp trnh cn bn tp

Tm tt l thuyt v bi

puts( s1); Kt qu: Khoa CNTT 5) strncat(s1, s2, n) : Ni n k t u tin ca chui s2 vo chui s1. V d : char *s1 = Khoa ; char *s2 = "CNTT"; strncat(s1, s2, 2); puts( s1); Kt qu: Khoa CN 6) strcmp(s1, s2) : So snh 2 chui s1 v s2 theo nguyn tc th t t in (Phn bit ch hoa v thng) . Tr v: 0 : nu s1 bng s2. >0: nu s1 ln hn s2. <0: nu s1 nh hn s2. V d : char *s1 = abcd; char *s2 = "abCD"; if(strcmp(s1, s2)==0) printf("Giong nhau"); else printf(Khac nhau); Kt qu: Khac nhau 7) strncmp(s1,s2, n) : Tng t nh strcmp, nhng ch so snh n k t u tin ca 2 chui 8) stricmp(s1, s2) : Tng t nh strcmp, nhng khng phn bit ch hoa hay thng. 9) strnicmp(s1, s2, n): Tng t nh stricmp, nhng ch so snh n k t u ca 2 chui 10) strchr(s, c) : Tm ln xut hin u tin ca k t c trong chui s. Tr v: NULL: nu khng c. a ch c: nu tm thy. V d : char s[15]; char *ptr, c = 'm'; strcpy(s, "Vi du tim ky tu"); ptr = strchr(s, c); if (ptr) printf("Ky tu %c tai: %d", c,ptr); else printf("Khong tim thay"); kt qu: 11) strtok(s1, s2) : Ky tu m tai: 8

Trang 30

Lp trnh cn bn tp

Tm tt l thuyt v bi

Nu s2 c xut hin trong s1: Tch chui s1 thnh hai chui: Chui u l nhng k t cho n khi gp chui s2 u tin, chui sau l nhng k t cn li ca s1 sau khi b i chui s2 xut hin trong s1. Nu s2 khng xut hin trong s1 th kt qu chui tch vn l s1. V d : char input[16] = "abc,d"; char *p; p = strtok(input, ","); // Lay chuoi dau if (p) { printf("S11: "); puts(p); } p = strtok(NULL, ","); // Lay chuoi con lai, tham so dau la NULL if (p) { printf("S12: "); puts(p); } Kt qu: S11: abc S12: d Lu : Cch truy xut cc k t tng t nh mng mt chiu. d. V d Nhp vo mt chui k t, xut ra mn hnh chui b o ngc th t cc k t. V d: Nhp vo: Tran minh thai. Xut ra mn hnh: iaht hnim narT #include<stdio.h> #include<string.h> #include<conio.h> void DaoChuoi(char *s1, char *s2) { int l=strlen(s1); for(int i=0; i<l; i++) s2[i]=s1[l-i-1]; s2[i]='\0'; } void main() { char *s1, *s2; clrscr(); printf("\nNhap vao chuoi ky tu: "); gets(s1); DaoChuoi(s1, s2);
Trang 31

Lp trnh cn bn tp

Tm tt l thuyt v bi

printf("\nKet qua sau khi dao nguoc chuoi: ") puts( s2); getch(); } II. BI TP II.1. Bi tp c bn 1. Cho bit kt qu ca an chng trnh sau: char input[20]=Khoa CNTT, *p, *temp; strcpy(temp, input); do { p = strtok(temp, " "); puts(p); p = strtok(NULL, ""); strcpy(temp, p); }while(p!=NULL); printf(Chuoi temp); puts(temp); printf( Chuoi input:); puts(input); 2. Cho bit kt qu ca an chng trnh sau: char s1[20]=Khoa CNTT, s1[10]=Tp. HCM, *input, *s3; strcpy(input, s1); strcpy(s3,aeiou); strcat(input, s2); int n=strlen(input), k=0; printf(Chuoi: ) puts(input); for(int i=0; i<n; i++) { if(strchr(s3, input[i])) k++; } printf(\nKet qua: %d, k); 3. Vit chng trnh nhp vo mt chui k t, m s k t c trong chui. 4. Vit chng trnh m c bao nhiu khong trng trong chui. 5. Vit chng trnh nhp vo mt chui, hy loi b nhng khong trng tha trong chui. 6. Vit chng trnh nhp hai chui s1, s2, ni chui s2 vo s1. Xut chui s1 ra mn hnh. 7. i tt c cc k t c trong chui thnh ch thng (khng dng hm strlwr). 8. i tt c cc k t trong chui sang ch in hoa (khng dng hm struppr). 9. Vit chng trnh i nhng k t u tin ca mi t thnh ch in hoa. 10. Vit chng trnh i ch xen k 1 ch hoa v 1 ch thng. V d: nhp ABCDEfgh i thnh AbCdEfGh
Trang 32

Lp trnh cn bn tp

Tm tt l thuyt v bi

11. Vit chng trnh o ngc cc k t trong chui . V d: nhp ABCDE, xut ra mn hnh l:EDCBA 12. Vit chng trnh tm kim 1 k t xem c trong chui hay khng, nu c xut ra v tr ca t . 13. Vit 1 chng trnh m mt k t xut hin bao nhiu ln trong chui. 14. Vit chng trnh tm kim tn trong chui h tn. Nu c th xut ra l tn ny nhp ng, ngc li thng bo l nhp sai. 15. Vit chng o v tr ca t u v t cui. V d: nhp bo an co xuat ra co an bo 16. Vit hm ct chui h tn thnh chui h lt v chui tn. V d: chui h tn l:Nguyn Vn A ct ra 2 chui l chui h lt:Nguyn Vn,chui tn l:A 17. Nhp mt chui bt k, sau hi ngi dng cn tch bt u t u trong chui tr v sau. V d: Nhp chui S1:Khoa Cng Ngh Thng tin. Ngi nhp mun tch bt u t ch Cng th s xut ra chui Cng Ngh Thng Tin ra mn hnh. 18. Vit hm kim tra xem chui c i xng hay khng?. 19. Vit hm tra trong chui c k t s hay khng nu c tch ra thnh mt mng s ring. 20. Nhp mt chui bt k, yu cu nhp 1 k t mun xa. Thc hin xa tt c nhng k t trong chui. 21. Vit chng trnh tm kim xem k t no xut nhin nhiu nht trong chui. 22. Vit 1 chng trnh xo mt t no trong chui. V d: Chui ban u:CAO DANG CNTT, nhp:CNTT, kt qu xut ra:CAO DANG II.2. Bi tp luyn tp v nng cao 23. i cc t u cu sang ch hoa v nhng t khng phi u cu sang ch thng. V d: nGuYen vAN a i thnh: Nguyn Vn A 24. (*) Vit chng trnh o ngc th t cc t c trong chui V d: Nhp Truong CD CNTT TpHCM Xut ra mn hnh l: TpHCM CNTT CD Truong 25. Nhp 1 chui bt k, lit k xem mi k t xut hin my ln. 26. Vit hm kim tra xem trong 2 chui c bao nhiu k t ging nhau. 27. Vit chng trn mnh chy t tri qua phi mn hnh. 28. Vit 1 chng trnh chn 1 t bt c v tr no m ngi dng yu cu. 29. (*) Vit chng trnh nhp vo mt chui m xem chui c bao nhiu t. Cc t cch nhau bng khong trng, du chm cu: du chm (.), du phy (,), du chm phy (;), du hi (?) v du chm than (!).
Trang 33

Lp trnh cn bn tp

Tm tt l thuyt v bi

30. (**) Vit chng trnh hin th mt chui k t. Chng trnh cho php di chuyn du nhy sang tri, sang phi, ln dng hay xung dng bng phm mi tn, chn hay xo k t ti v tr du nhy.

PHN 6 MNG HAI CHIU


I. TM TT L THUYT I.1. Khi nim Mng hai chiu thc cht l mng mt chiu trong mi phn t ca mng l mt mng mt chiu, v c truy xut bi hai ch s dng v ct. T khi nim trn ta c th a ra mt khi nim v mng nhiu chiu nh sau: mng c t hai chiu tr ln gi l mng nhiu chiu. I.2. Khai bo mng T khi nim trn ta c c php khai bo mng hai chiu nh sau: Cch 1: Con tr hng < Kiu d liu > < Tn mng > [ < S dng ti a > ][ < S ct ti a> ]; V d: int A[10][10]; // Khai bo mng 2 chiu kiu int gm 10 dng, 10 ct float b[10][10]; // Khai bo mng 2 chiu kiu float gm 10 dng, 10 ct Cch 2 : Con tr < Kiu d liu > **<Tn mng>; V d : int **A ; // Khai bo mng ng 2 chiu kiu int float **B ; // Khai bo mng ng 2 chiu kiu float Tng t nh mng mt chiu, s dng ta phi cp pht vng nh cho n bng malloc v hu sau khi dng bng free V d : Khai bo v cp pht mng cc s nguyn A c kch thc 5x6 int **A;
Trang 34

Lp trnh cn bn tp

Tm tt l thuyt v bi

A = ( int **) malloc (5) ; for ( int i = 0 ; i < 5 ; i ++ ) A[i]=(int *) malloc (6) ; I.3. Truy xut phn t ca mng truy xut cc thnh phn ca mng hai chiu ta phi da vo ch s dng v ch s ct. V d: int A[3][4] = { {2,3,9,4} , {5,6,7,6} , {2,9,4,7} }; Vi cc khai bo nh trn ta c : A[0][0] = 2; A[0][1] = 3; A[1][1] = 6; A[1][3] = 6; Vi v d trn ta c hnh dng ca mt ma trn nh sau

Lu : Khi nhp liu cho mng hai chiu, nu l mng s nguyn th ta nhp liu theo cch thng thng. Nhng nu l mng s thc th ta phi thng qua bin trung gian. V d : float a[10][10]; // Mang so thuc a float tmp; // Bien trung gian tmp scanf (%f, &tmp); // Nhap lieu cho bien trung gian a[2][2] = tmp; // Gan du lieu vao phan tu a[2][2] I.4. Ma trn vung v cc khi nim lin quan a. Khi nim : L ma trn c s dng v s ct bng nhau. b. Tnh cht ca ma trn vung ng cho chnh : l ng cho c : II. BI TP II.1. Mt s k thut c bn Phng php nhp xut ma trn : void Nhap (int a[50][50], int &d, int &c ) { printf (\nNhap so dong: ); scanf ( %d, &d ); printf (\nNhap so cot: );
Trang 35

ch s dng = ch s ct

ng cho ph : l ng cho c: ch s ct + ch s dng = s dng ( hoc s ct )

Lp trnh cn bn tp

Tm tt l thuyt v bi

scanf (%d, &c ); for ( int i = 0; i < d; i ++ ) for (int j = 0; j < c; j ++) { printf ( a[%d][%d] = , i, j ); scanf (%d, &a[i][j]); } } void Xuat (int a[50][50], int d, int c) { printf (\nNoi dung ma tran:\n); for (int i = 0; i < d; i++) { for (int j = 0; j < c; j++) printf ( \t %d , a[i][j] ); printf (\n); } } K thut t c hiu : Vit hm kim tra trong ma trn s nguyn c tn ti s nguyn l ln hn 100 khng? int KiemTraLe (int a[50][50], int d, int c) { int flag = 0; //tra ve 1 neu co nguoc lai tra ve 0 for (int i = 0; i < d; i ++ ) for (int j = 0; j < c; j++) if ( a[i][j] % 2 != 0 && a[i][j] > 100 ) { flag = 1; break; } return flag; } K thut t lnh canh : Vit hm tm phn t nh nht trong ma trn. int Min (int a[50][50], int d, int c ) { int min = a[0][0]; for ( int i = 0 ; i < d ; i ++ ) for (int j = 0 ; j < c ; j ++) if ( a[i][j] < min ) min = a[i][j]; return min; } Phng php tnh tng : Vit hm tnh tng cc phn t trong ma trn.
Trang 36

Lp trnh cn bn tp

Tm tt l thuyt v bi

int Tong (int a[50][50], int d, int c) { int tong = 0; for ( int i = 0; i < d; i ++ ) for ( int j = 0; j < c; j ++) tong + = a[i][j]; return tong; } Phng php sp xp : Vit hm sp xp ma trn tng dn t trn xung di v t tri sang phi khng dng mng ph. void SapTang(int a[50][50], int d, int c) { for (int i = 0; i <= d*c-2; i ++) for (int j = 0; j <= d*c-1; j ++) if (a[i/c][i%c] < a[j/c][j%c]) { int tmp = a[i/c][i%c] ; a[i/c][i%c] = a[j/c][j%c] ; a[j/c][j%c] = tmp ; } } Phng php m : Vit hm m cc phn t chn trong ma trn. int DemChan (int a[50][50], int d, int c) { int dem = 0; for ( int i = 0 ; i < d ; i ++) for ( int j = 0 ; j < c ; j ++) if ( a[i][j] % 2 = = 0 ) dem ++; return dem; } II.2. Bi tp c bn a. Bi tp nhp xut 1. Vit hm nhp ma trn cc s nguyn dng (nhp sai bo li v khng cho nhp). 2. Vit hm nhp/ xut ma trn cc s thc. 3. Vit hm in ra nhng phn t c k s tn cng l 5. 4. Vit chng trnh in ra cc phn t nm trn ng cho chnh v ng cho ph. 5. Vit hm in ra cc phn t nm pha trn ng cho ph ca ma trn vung. 6. Vit hm in ra cc phn t nm pha di ng cho ph ca ma trn vung. 7. Vit hm in ra cc phn t nm pha trn ng cho chnh ca ma trn vung.
Trang 37

Lp trnh cn bn tp

Tm tt l thuyt v bi

8. Vit hm in ra cc phn t nm pha di ng cho chnh ca ma trn vung. 9. Vit chng trnh khi to gi tr cc phn t l ngu nhin cho ma trn cc s nguyn kch thc nxm . 10. Vit hm to ma trn a cc s nguyn gm 9 dng 14 ct. Trong phn t a[i][j]= i * j 11. Vit hm in tam gic Pascal vi chiu cao h. V d : h = 5 1 11 121 1331 14641 b. Bi tp tnh tng 12. Vit hm tnh tng cc phn t trn cng mt dng. 13. Vit hm tnh tng cc phn t trn cng mt ct. 14. Vit hm tnh tng cc phn t chn c trong ma trn. 15. Vit hm tnh tng cc phn t nm trn ng cho chnh ca ma trn vung. 16. Vit hm tnh tng cc phn t l s nguyn t c trong ma trn. 17. Vit hm tnh tng cc s hon thin trong ma trn cc s nguyn. 18. Vit hm tnh tng cc gi tr ln nht trn mi dng. 19. Vit hm tnh gi tr trung bnh ca cc phn t nh nht trn mi ct. c. Bi tp tm kim 20. Vit hm tm v tr phn t ln nht trong ma trn cc s nguyn. 21. Vit hm tm v tr phn t nh nht trong ma trn cc s nguyn. 22. Vit hm tm v tr phn t chn cui cng trong ma trn cc s nguyn. 23. Vit hm tm phn t m l ln nht trong ma trn. 24. Vit hm tm phn t chn dng v nh nht trong ma trn. 25. Vit hm tm s hon thin u tin trong ma trn cc s nguyn. 26. Vit hm tm s hon thin ln nht trong ma trn cc s nguyn. 27. Vit hm tm v tr phn t nguyn t cui cng trong ma trn cc s nguyn. 28. Vit hm tm phn t ln nht nm trn ng cho chnh ca ma trn vung. 29. Vit hm in cc s nguyn t nm trn ng cho ph ca ma trn vung. 30. Vit hm tm trong 2 ma trn cc s nguyn, nhng phn t ging nhau. 31. Vit hm tm v lit k nhng phn t cc i trong ma trn (mt phn t c coi l cc i khi n ln hn cc phn t xung quanh n).
Trang 38

Lp trnh cn bn tp

Tm tt l thuyt v bi

32. Vit hm tm dng c tng ln nht trong ma trn cc s thc. 33. Vit hm tm ct c tng nh nht trong ma trn cc s nguyn. d. Bi tp m 34. Vit hm m cc gi tr m, dng trong ma trn cc s thc. 35. Vit hm m cc gi tr chn, l trong ma trn cc s nguyn. 36. Vit hm m s ln xut hin ca phn t x trong ma trn cc s thc. 37. Vit hm m cc gi tr nh hn x trong ma trn cc s thc. 38. Vit hm m cc phn t nguyn t trong ma trn cc s nguyn. 39. Vit hm n cc phn t nguyn t trn ng cho chnh ca ma trn vung. 40. Vit hm m cc gi tr chn trn ng cho chnh ca ma trn vung. 41. Vit hm m cc gi tr l bi ca 3 v 5 trn ng cho chnh ca ma trn vung. 42. Vit hm m cc gi tr nguyn t trn 2 ng cho (chnh, ph) ca ma trn vung. 43. Vit hm m cc gi tr cc i trong ma trn cc s nguyn. 44. Vit hm m cc gi tr cc tiu trong ma trn cc s nguyn. 45. Vit hm m cc cc tr trong ma trn cc s nguyn (mt phn t c coi l cc tr khi n l gi tr cc i hay cc tiu). 46. Vit hm m cc gi tr l s hon thin trong ma trn cc s nguyn. e. Bi tp sp xp 47. Vit hm sp xp ma trn theo th t tng dn t trn xung di v t tri qua phi theo phng php dng mng ph. Hng dn: ma trn sang mng mt chiu, sp xp trn mng mt chiu theo th t tng dn, sau chuyn ngc mng mt chiu thnh ma trn kt qu. 48. Vit hm sp xp ma trn theo th t gim dn t trn xung di v t tri sang phi. 49. Vit hm sp xp cc dng trn ma trn theo th t tng dn. 50. Vit hm sp xp cc ct trn ma trn theo th t gim dn. 51. Vit hm sp xp ma trn theo ng ziczc ngang.

52. Vit hm sp xp ma trn theo ng ziczc cho

Trang 39

Lp trnh cn bn tp

Tm tt l thuyt v bi

53. Vit hm xp ma trn theo ng xon c t ngoi vo trong theo chiu kim ng h.

54. Cho ma trn vung, vit hm sp xp tng dn cc phn t nm trn cc ng cho song song vi ng cho chnh. f. Bi tp Thm Xo Thay th 55. Vit hm xo mt dng i trn ma trn. 56. Vit hm xo mt ct j trn ma trn. 57. Vit hm xo dng c tng ln nht trn ma trn. 58. Vit hm hon v dng c tng ln nht vi dng c tng nh nht. 59. Vit hm tm v thay th cc phn t chn trong ma trn bng c s nh nht ca n. 60. Vit hm thay th nhng phn t c gi tr x thnh phn t c gi tr y trong ma trn (x , y nhp t bn phm). II.3. Bi tp luyn tp v nng cao 61. Vit chng trnh tnh tng, tch ca hai ma trn cc s nguyn. 62. Vit hm kim tra xem ma trn vung cc s nguyn c i xng qua ng cho chnh hay khng. 63. Vit hm kim tra xem trong ma trn vung cp n c hng no trng nhau hay khng, nu c th ch r nhng hng no. (Trng gi tr v v tr). 64. Vit chng trnh nhp vo ma trn vung kch thc n x n . Hy vit hm thc hin nhng cng vic sau : In ra cc phn t trn 4 ng bin ca ma trn.
Trang 40

Lp trnh cn bn tp

Tm tt l thuyt v bi

Tnh tng cc phn t trn bin. 65. (*) Cho ma trn A ( nxm ) cc s nguyn hy pht sinh ma trn B sao cho B l ma trn ngc ca ma trn A. V d :

66. (**) Cho ma trn A (nxm ) hy pht sinh ma trn B (nxm ) sao cho phn t B (i, j) l trung bnh cng ca cc phn t trong hnh vung 3x3 tm ti (i,j) ca A. V d :

67. (**) Cho ma trn cc s nguyn dng A (nxm ) . Hy xy dng ma trn B (nxm). Sao cho phn t B ( i, j ) l s ln nht trong vung 3 x 3 tm ti (i, j) ca A. V d :

68. Nhp vo mng hai chiu gm n dng v m ct cc s nguyn. Hy tm phn t ln nht trn mi dng v ng thi nh nht trn mi ct, hoc ln nht trn mi ct v ng thi nh nht trn mi dng. C bao nhiu phn t nh th? V d:

69. (**) Cho ma trn cc s nguyn A (mxn ) (m,n 3) . Hy tm ma trn con (3x3) c tng ln nht. V d :

Trang 41

Lp trnh cn bn tp

Tm tt l thuyt v bi

70. Nhp ma trn vung cp n n (n < 10). In ra cc phn t ca ma trn ny theo hng ca ng cho chnh. V d : n = 4

PHN 7 KIU D LIU C CU TRC


I. TM TT L THUYT I.1. Khi nim : Cu trc (struct) thc cht l kiu d liu do ngi dng nh ngha bng cch gom nhm cc kiu d liu c bn c sn trong C thnh mt kiu d liu phc hp nhiu thnh phn. I .2. nh ngha kiu d liu C php : struct < tn cu trc > { Cc kiu d liu thnh phn ; }; Ngoi ra ta c th dng t kho typedef nh ngha mt tn mi cho kiu d liu c. C php typedef struct < tn cu trc > < tn mi >; V d1: Kiu d liu DATE gm cc thnh phn: Th (thu): chui c ti a 4 k t. Ngy (ngay): s nguyn 1 byte. Thng (thang): s nguyn 1 byte. Nm (nam): s nguyn 2 bytes.
Trang 42

Lp trnh cn bn tp

Tm tt l thuyt v bi

Ta nh ngha DATE nh sau: struct DATE { char thu[5]; char ngay, thang; int nam; }; typedef struct DATE d; Kiu d liu c cu trc c th lng vo nhau. V d 2: nh ngha kiu d liu ca hc sinh HOCSINH gm: M s hc sinh (MSHS): chui c ti a 5 k t. H tn (hoten): chui c ti a 30 k t. Ngy thng nm sinh (ngaysinh): kiu DATE. a ch (diachi): chui c ti a 50 k t. Gii tnh (phai): chui c ti a 3 k t. im trung bnh (diemtb): s thc. Ta nh ngha kiu HOCSINH nh sau: struct DATE { char thu[5]; char ngay, thang; int nam; }; struct HOCSINH { char MSHS[6]; char hoten[31]; DATE ngaysinh; char diachi[51]; char phai[4]; float diemtb; }; I.3. Khai bo : Khi ta nh ngha kiu d liu tc l ta c mt kiu d liu mi, mun s dng ta phi khai bo bin. C php khai bo kiu d liu cng ging nh cch khai bo ca cc kiu d liu chun. < tn cu trc > < tn bin > ; V d :
Trang 43

Lp trnh cn bn tp

Tm tt l thuyt v bi

DATE x ; // Khai bao bien x co kieu du lieu DATE *Bin con tr kiu cu trc: Ngoi cch khai bo nh trn ta c th khai bo theo kiu con tr nh sau < tn cu trc > *< tn bin > ; s dng ta cng phi cp pht vng nh ging nh kiu d liu chun. V d : DATE *y; // Khai bao con tro y kieu cau truc DATE y = ( DATE * ) malloc ( sizeof ( DATE )) ; I.4. Truy xut : truy xut mt thnh phn d liu no bn trong cu trc ta c 2 trng hp truy xut nh sau : Bin x l mt bin cu trc thng thng, ta dng ton t du chm . < Tn cu trc >.< Bin thnh phn >; V d : DATE x ; // khai bao bien x kieu DATE x.ngay = 5 ; // gan ngay bang 5 Bin x l mt bin con tr, ta dng ton t -> (Gm du tr v du ln hn >). < Tn cu trc > -> < Bin thnh phn >; V d : DATE *x ; // khai bao bien x kieu con tro DATE x -> ngay = 5 ; // gan ngay bang 5 V d: Gi s, c kiu HOCSINH nh trn HOCSINH hs; // khai bao bien hs kieu HOCSINH Mun in hc sinh A sinh vo thng my ta phi truy cp nh sau: printf(Thang sinh cua hoc sinh A la: %d,(hs.ngaysinh).thang); I.5. V d minh ho Vit chng trnh nhp vo to hai im trong mt phng v tnh tng hai to ny. #include <conio.h> #include <stdio.h> struct DIEM //khai bao mot kieu du lieu DIEM gom toa do x va y { int x; int y; };
Trang 44

Lp trnh cn bn tp

Tm tt l thuyt v bi

void Nhap (DIEM &d) { printf (\nNhap vao tao do diem\n); printf (Tung do : ); scanf (%d, & d. x); printf (Hoanh do : ); scanf (%d, & d.y); } void Xuat (DIEM d) { printf (\nToa do diem : (%d , %d),d.x,d.y); } DIEM Tong (DIEM d1,DIEM d2) { DIEM temp; temp.x = d1.x + d2.x ; temp.y = d1.y + d2.y ; return Temp; } void main () { DIEM A , B, AB; //khai bao 3 diem A, B, AB; clrscr (); Nhap ( A ); Xuat ( A ); Nhap ( B ); Xuat ( B ); printf (\n Tong cua hai diem vua nhap la : ); AB = Tong ( A, B); Xuat ( AB ); getch (); } I.6. Mng cu trc Cch khai bo tng t nh mng mt chiu hay ma trn (Kiu d liu by gi l kiu d liu c cu trc). Cch truy cp phn t trong mng cng nh truy cp trn mng mt chiu hay ma trn. Nhng do tng phn t c kiu cu trc nn phi ch nh r cn ly thnh phn no, tc l phi truy cp n thnh phn cui cng c kiu l d liu c bn.
Trang 45

Lp trnh cn bn tp

Tm tt l thuyt v bi

I.7. Nguyn tc vit chng trnh c mng cu trc Do kiu d liu c cu trc thng cha rt nhiu thnh phn nn khi vit chng trnh loi ny ta cn lu : Xy dng hm x l cho mt kiu cu trc. Mun x l cho mng cu trc, ta gi li hm x l cho mt kiu cu trc c xy dng bng cch dng vng lp. V d 1: Cho mt lp hc gm n hc sinh (n 50). Thng tin ca mt hc sinh c m t v d 2, mc I.2. Hy vit chng trnh nhp v xut danh sch hc sinh sau m xem c bao nhiu hc sinh c ln lp (iu kin c ln lp l im trung bnh 5.0). Cch lm: - Trc ht ta phi xy dng hm nhp v xut cho 1 hc sinh. - Xy dng hm nhp v xut ngy thng nm (Kiu d liu DATE). - Sau mi xy dng hm nhp v xut cho danh sch hc sinh. struct DATE { char thu[5]; char ngay, thang; int nam; }; struct HOCSINH { char MSHS[6], hoten[31]; DATE ngaysinh; char diachi[51], phai[4]; float diemtb; }; void NhapNamSinh(DATE &d) { printf(\nNhap vao ngay: ); printf(\nNhap vao thang: ); printf(\nNhap vao nam: ); }

scanf(%c, &d.ngay); scanf(%c, &d.thang); scanf(%d, &d.nam);

void XuatNamSinh(DATE d) { printf(%2c / %2c / %4d, d.ngay, d.thang, d.nam); } void Nhap1HS(HOCSINH &hs)
Trang 46

Lp trnh cn bn tp

Tm tt l thuyt v bi

{ float d; lushall(); //Xoa vung dem printf(\nNhap ma so hoc sinh: ); gets(hs.MSHS); printf(\nNhap ho ten hoc sinh: ); gets(hs.hoten); printf(\nNhap ngay thang nam sinh: ); flushall(); //Xoa vung dem NhapNamSinh(hs.ngaysinh); flushall(); //Xoa vung dem printf(\nNhap vao dia chi: ); gets(hs.diachi); printf(\nPhai: ); gets(hs.phai); printf(\nNhap vao diem trung binh: ); flushall(); //Xo vng m scanf(%f, &d);//Nhp vo bin tm d sau gn vo hs.diemtb hs.diemtb=d; } void NhapDSHS(HOCSINH lh[], int &n) { printf(\nNhap vao so luong hoc sinh: ); scanf(%d, &n); for(int i=0; i<n; i++) { printf(\nNhap vao thong tin cua hoc sinh thu %d:\n, i+1); Nhap1HS(lh[i]); //Goi ham nhap thong tin 1 hoc sinh } } void Xuat1HS(HOCSINH hs) { printf(\nMa so hoc sinh: ); printf(\nHo ten hoc sinh:); printf(\nNgay thang nam sinh: ); XuatNamSinh(hs.ngaysinh); printf(\nDia chi: ); printf(\nPhai:) printf(\nDiem trung binh: %2.2f, hs.diemtb); }

puts(hs.MSHS); puts( hs.hoten); puts( hs.diachi); puts( hs.phai);

void XuatDSHS(HOCSINH lh[], int n) { for(int i=0; i<n; i++) { printf(\n\nThong tin hoc sinh thu %d:, i+1); Xuat1HS(lh[i]); //Goi ham xuat thong tin 1 hoc sinh }
Trang 47

Lp trnh cn bn tp

Tm tt l thuyt v bi

} int DemHSLenLop(HOCSINH lh[], int n) { int d=0; for(int i=0; i<n; i++) if(lh[i].diemtb>=5.0) d++; return d; } void main() { HOCSINH lh[50]; //Khai bo mng lh gm c ti a 50 hc sinh int n, sohsdau; NhapDSHS(lh, n); XuatDSHS(lh, n); sohsdau = DemHSLenLop(lh, n); printf(\nSo luong hoc sinh duoc len lop la: %d, sohsdau); getch(); } Kt qu v d khi chy chng trnh: Nhap vao thong tin cua hoc sinh thu 1: Nhap ma so hoc sinh: 02313 Nhap ho ten hoc sinh: Nguyen Van A Nhap ngay thang nam sinh: Nhap vao ngay: 12 Nhap vao thang: 03 Nhap vao nam: 1980 Nhap vao dia chi: 60 Phan Dang Luu Q.Phu Nhuan Phai: Nam Nhap vao diem trung binh: 6.5 Nhap vao thong tin cua hoc sinh thu 2: Nhap ma so hoc sinh: 03852 Nhap ho ten hoc sinh: Ly Thi B Nhap ngay thang nam sinh: Nhap vao ngay: 05 Nhap vao thang: 12
Trang 48

Lp trnh cn bn tp

Tm tt l thuyt v bi

Nhap vao nam: 1981 Nhap vao dia chi: 24 Ly Tu Trong Q.1 Phai: Nu Nhap vao diem trung binh: 3.5 Thong tin hoc sinh thu 1: Ma so hoc sinh: 02313 Ho ten hoc sinh: Nguyen Van A Ngay thang nam sinh: 12 / 03 / 1980 Dia chi: 60 Phan Dang Luu Q.Phu Nhuan Phai: Nam Diem trung binh: 6.50 Thong tin hoc sinh thu 2: Ma so hoc sinh: 03852 Ho ten hoc sinh: Ly Thi B Ngay thang nam sinh: 05 / 12 / 1981 Dia chi: 24 Ly Tu Trong Q.1 Phai: Nu Diem trung binh: 3.50 So luong hoc sinh duoc len lop la: 1 V d 2: Cho mt mng cc phn s (PHANSO) gm n phn t (n 50). Hy vit chng trnh nhp v xut danh sch cc phn s sau tm phn s c gi tr ln nht, tng v tch cc phn s v nghch o gi tr cc phn s trong mng. Cch lm: - Trc ht ta phi xy dng hm nhp v xut cho 1 phn s. - Xy dng hm tnh tng, hiu, tch, thng, rt gn, so snh v nghch o cho 2 phn s. - Sau mi xy dng hm nhp, xut, tnh tng, tch cho mng cc phn s. struct PHANSO { int tu, mau; }; void NhapPS(PHANSO &ps) { do { printf("\nNhap tu so: ");

scanf("%d", &ps.tu);
Trang 49

Lp trnh cn bn tp

Tm tt l thuyt v bi

printf("\nNhap mau so: "); scanf("%d", &ps.mau); if(!KiemTra(ps)) printf("\nMau so khong duoc bang 0, nhap lai phan so\n"); else break; } while(1); ps=RutGon(ps); } void XuatPS(PHANSO ps) { printf("%5d", ps.tu); if(ps.tu&&ps.mau!=1) printf("/%d", ps.mau); } void NhapMangPS(PHANSO dsps[], int &n) { printf("\nNhap so luong phan so: "); scanf("%d", &n); for(int i=0; i<n; i++) { printf("\nNhap vao phan so thu %d: ", i+1); NhapPS(dsps[i]); } } void XuatMangPS(PHANSO dsps[], int n) { for(int i=0; i<n; i++) XuatPS(dsps[i]); } int KiemTra(PHANSO ps) { if(ps.mau==0) return 0; return 1; } int USCLN(int a, int b) { a=abs(a); b=abs(b); while(a!=b) { if(a>b)
Trang 50

Lp trnh cn bn tp

Tm tt l thuyt v bi

a=a-b; else b=b-a; } return a; } PHANSO RutGon(PHANSO ps) { int us; if(ps.tu==0) return ps; us=USCLN(ps.tu, ps.mau); ps.tu=ps.tu/us; ps.mau=ps.mau/us; return ps; } PHANSO NghichDao(PHANSO ps) { PHANSO kq; kq.tu=ps.mau; kq.mau=ps.tu; return kq; } PHANSO Nhan(PHANSO ps1, PHANSO ps2) { PHANSO kq; kq.tu=ps1.tu*ps2.tu; kq.mau=ps1.mau*ps2.mau; kq=RutGon(kq); return kq; } PHANSO Chia(PHANSO ps1, PHANSO ps2) { PHANSO kq; kq=Nhan(ps1, NghichDao(ps2)); return kq; } PHANSO Tru(PHANSO ps1, PHANSO ps2) { PHANSO kq; kq.tu=ps1.tu*ps2.mau-ps1.mau*ps2.tu;
Trang 51

Lp trnh cn bn tp

Tm tt l thuyt v bi

kq.mau=ps1.mau*ps2.mau; kq=RutGon(kq); return kq; } PHANSO Cong(PHANSO ps1, PHANSO ps2) { PHANSO kq; kq.tu=ps1.tu*ps2.mau+ps1.mau*ps2.tu; kq.mau=ps1.mau*ps2.mau; kq=RutGon(kq); return kq; } int SoSanh(PHANSO ps1, PHANSO ps2) { ps1=RutGon(ps1); ps2=RutGon(ps2); if(ps1.tu==ps2.tu&&ps1.mau==ps2.mau) return 0; if(ps1.tu*ps2.mau>ps2.tu*ps1.mau) return 1; return -1; } PHANSO TimMax(PHANSO dsps[], int n) { PHANSO max; max=dsps[0]; for(int i=1; i<n; i++) if(SoSanh(dsps[i], max)==1) max=dsps[i]; return max; } PHANSO TongCacPS(PHANSO dsps[], int n) { PHANSO s=dsps[0]; for(int i=1; i<n; i++) s=Cong(s, dsps[i]); return s; } PHANSO TichCacPS(PHANSO dsps[], int n) { PHANSO p=dsps[0];
Trang 52

Lp trnh cn bn tp

Tm tt l thuyt v bi

for(int i=1; i<n; i++) p=Nhan(p, dsps[i]); return p; } void NghichDaoCacPS(PHANSO dsps[], int n) { for(int i=0; i<n; i++) dsps[i]=NghichDao(dsps[i]); } void main() { int n; PHANSO a[100], max, s, p; clrscr(); NhapMangPS(a, n); printf("\nMang cac phan so vua nhap: "); XuatMangPS(a, n); max=TimMax(a, n); printf("\nPhan so co gia tri lon nhat: "); XuatPS(max); s=TongCacPS(a, n); printf("\nTong gia tri cac phan so co trong mang: "); XuatPS(s); p=TichCacPS(a, n); printf("\nTich gia tri cac phan so co trong mang: "); XuatPS(p); NghichDaoCacPS(a, n); printf("\nMang phan so sau khi nghich dao cac phan tu: "); XuatMangPS(a, n); getch(); } Kt qu v d khi chy chng trnh: Nhap so luong phan so: 5 Nhap vao phan so thu 1: Nhap tu so: 1 Nhap mau so: 3 Nhap vao phan so thu 2: Nhap tu so: 7 Nhap mau so: 4
Trang 53

Lp trnh cn bn tp

Tm tt l thuyt v bi

Nhap vao phan so thu 3: Nhap tu so: 9 Nhap mau so: 7 Nhap vao phan so thu 4: Nhap tu so: 5 Nhap mau so: 6 Nhap vao phan so thu 5: Nhap tu so: 4 Nhap mau so: 7 Mang cac phan so vua nhap: 1/3 7/4 9/7 5/6 4/7 Phan so co gia tri lon nhat: 7/4 Tong gia tri cac phan so co trong mang: 401/84 Tich gia tri cac phan so co trong mang: 5/14 Mang phan so sau khi nghich dao cac phan tu: 3 4/7 7/9 6/5 7/4 II. BI TP II.1. Bi tp c bn 1. Vit chng trnh s dng con tr cu trc hin th gi, pht, giy ra mn hnh, v tnh khong cch gia 2 mc thi gian. 2. Vit chng trnh s dng con tr cu trc th hin ngy, thng, nm ra mn hnh, v tnh khong cch gia 2 ngy. 3. Vit chng trnh khai bo kiu d liu th hin mt s phc. S dng kiu ny vit hm tnh tng, hiu, tch ca hai s phc. 4. Vit chng trnh khai bo kiu d liu biu din mt phn s. Hy vit hm thc hin nhng cng vic sau: Tnh tng, hiu, tch, thng hai phn s. Rt gn phn s. Qui ng hai phn s. So snh hai phn s. 5. Vit chng trnh khai bo kiu d liu biu din mt hn s. Hy vit hm thc hin nhng cng vic sau : i hn s sang phn s Tnh tng, tch hai hn s 6. Vit chng trnh khai bo kiu d liu biu din mt im trong h ta 0xy . Hy vit hm thc hin cc cng vic sau:
Trang 54

Lp trnh cn bn tp

Tm tt l thuyt v bi

Tm nhng im i xng ca n qua tung , honh , to tm. Hy tnh tng, hiu, tch ca hai im trong mt phng to 0xy. Tnh khong cch gia hai im. 7. Cho mt hnh tr c cc thng tin sau: BanKinh (bn knh hnh tr kiu s thc), ChieuCao (chiu cao hnh tr kiu s thc). Hy thc hin cc cng vic sau. Nhp d liu cho hnh tr trn. Tnh din tch xung quanh, din tch ton phn, th tch hnh tr. II.2. Bi Tp Luyn Tp 8. Vit chng trnh to mt mng cc s phc. Hy vit hm tnh tng, tch cc s phc c trong mng. 9. Vit chng trnh to mt mng cc phn s. Hy vit hm thc hin cc cng vic sau : Tnh tng tt c cc phn s (kt qu di dng phn s ti gin) Tm phn s ln nht, phn s nh nht. Sp xp mng tng dn. 10. Vit chng trnh khai bo kiu d liu STACK (c ch LIFO). Vit hm lm nhng cng vic sau : Kim tra STACK rng Kim tra STACK y Thm phn t vo STACK Ly phn t ra khi STACK 11. T chc d liu qun l sinh vin bng cu trc mu tin trong mt mng N phn t, mi phn t c cu trc nh sau: - M sinh vin. - Tn. - Nm sinh. - im ton, l, ho, im trung bnh. Vit chng trnh thc hin nhng cng vic sau: Nhp danh sch cc sinh vin cho mt lp hc. Xut danh sch sinh vin ra mn hnh. Tm sinh vin c im trung bnh cao nht. Sp xp danh sch lp theo th t tng dn ca im trung bnh. Sp xp danh sch lp theo th t gim dn ca im ton. Tm kim v in ra cc sinh vin c im trung bnh > 5 v khng c mn no di 3. Tm sinh vin c tui ln nht.
Trang 55

Lp trnh cn bn tp

Tm tt l thuyt v bi

Nhp vo tn ca sinh vin. Tm v in ra cc thng tin lin quan n sinh vin (nu c). 12. T chc d liu qun l danh mc cc b phim VIDEO, cc thng tin lin quan n b phim ny nh sau: - Tn phim (ta phim). - Th loi (3 loi : hnh s, tnh cm, hi). - Tn o din. - Tn in vin nam chnh. - Tn din vin n chnh. - Nm sn xut. - Hng sn xut Vit chng trnh thc hin nhng cng vic sau : Nhp vo b phim mi cng vi cc thng tin lin quan n b phim ny. Nhp mt th loi: In ra danh sch cc b phim thuc th loi ny. Nhp mt tn nam din vin. In ra cc b phim c din vin ny ng. Nhp tn o din. In ra danh sch cc b phim do o din ny dn dng. 13. Mt th vin cn qun l thng tin v cc u sch. Mi u sch bao gm cc thng tin sau : MaSSach (m s sch), TenSach (tn sch), TacGia (tc gi), SL (s lng cc cun sch ca u sch). Vit chng trnh thc hin cc chc nng sau: Nhp vo mt danh sch cc u sch (ti a l 100 u sch) Nhp vo tn ca quyn sch. In ra thng tin y v cc sch c tn , nu khng c th tn ca quyn sch th bo l :Khng Tm Thy. Tnh tng s sch c trong th vin. 14. Vit chng trnh to mt mng danh sch cc my tnh ca mt ca hng, thng tin ca mt my tnh bao gm : - Loi my - Ni sn xut - Thi gian bo hnh Vit hm nhp mt dy cc loi my tnh c thng tin nh trn. Hy vit hm thng k xem c bao nhiu my c thi gian bo hnh l 1 nm. In ra danh sch cc my tnh c xut x t M. 15. lp rp mt my vi tnh hon chnh cn phi c ti thiu 10 linh kin loi A v c th lp b sung thm vo khong ti a 8 linh kin loi B. Ti mtca hng vi tnh cn qun l bn hng cc loi linh kin ti ca hng. Thng tin v mt loi linh kin gm c: Tn linh kin, quy cch , loi, n gi loi 1 ( cht lng tt s nguyn), n gi loi 2 ( cht lng thng s nguyn ). Vit chng trnh thc hin nhng cng vic sau :
Trang 56

Lp trnh cn bn tp

Tm tt l thuyt v bi

Nhp vo thng tin v cc linh kin c ca hng. Xut danh sch linh kin nhp theo th t tng dn ca loi linh kin v tn linh kin. Cho bit c 10 linh kin loi A cn thit lp rp my hay cha? 16. Mt ca hng cn qun l cc mt hng, thng tin mt mt hng bao gm: - M hng. - Tn mt hng. - S lng. - n gi. - S lng tn. - Thi gian bo hnh (tnh theo n v thng). Hy nhp vo mt danh sch cc mt hng. Tm mt hng c s lng tn nhiu nht. Tm mt hng c s lng tn t nht. Tm mt hng c gi tin cao nht. In ra nhng mt hng c thi gian bo hnh ln hn 12 thng. Sp xp cc mt hng theo th t tng dn ca s lng tn. 17. Vit chng trnh qun l h s nhn vin trong mt cng ty, chng trnh thc hin nhng cng vic sau : - H v tn. - Phi. - Ngy sinh. - a ch. - Lng c bn. - Bo him x hi. - Thng. - Pht. - Lng thc lnh = lng c bn + thng BH x hi pht. Nhp vo h s ca cc nhn vin trong cng ty. Xut danh sch cc nhn vin theo lng thc lnh gim dn bng 2 cch sau : - Cp pht vng nh tnh. - Cp pht vng nh ng. 18. (*) Vit chng trnh qun l lp hc ca mt trng. Cc thng tin ca mt lp hc nh sau :
Trang 57

Lp trnh cn bn tp

Tm tt l thuyt v bi

- Tn lp. - S s. - Danh sch cc sinh vin trong lp. Nhp vo danh sach cc lp vi thng tin yu cu nh trn. In danh sch cc lp c trn 5 sinh vin c im trung bnh loi gii. Tm lp c nhiu sinh vin nht. Tm lp c t sinh vin nht. Tm sinh vin c im trung bnh cao nht. Tm lp c s lng sinh vin t im trung bnh loi gii nhiu nht. 19. Vit chng trnh qun l v tu, thng tin mt v tu nh sau : - Ngy gi khi hnh, ngy gi n. - Ga i, ga n. - Loi tu, loi ch ngi ( ngi, nm, cng, mm). - S toa, s gh. Vit hm nhp vo danh sch cc v tu. In danh sch cc v tu c ga n l Hu. In danh sch cc v tu c ga n l H Ni v i ngy 8/6/2005. m xem c bao nhiu khch i tu loi ch ngi l nm cng. 20. Vit chng trnh tnh tin in hng thng ca cc h gia nh, thng tin cc khch hng nh sau : - K thu, t ngyn ngy. - Tn khch hng, m khch hng. - a ch. - in nng tiu th (Kwh). Nhp vo danh sch cc khch hng. Xut danh sch ho n theo th t tng dn ca in nng tiu th. Tnh tin in ca cc khch hng theo quy nh sau. - 100 kw u tin l 550 / kw - 50 kw tip theo l 900 / kw - 50 kw tip theo l 1210 / kw - Thu 10 % trn tng s tin phi tr Tnh tng s tin thu c ca cc khch hng.

Trang 58

Lp trnh cn bn tp

Tm tt l thuyt v bi

PHN 8 TP TIN
I. TM TT L THUYT I.1. Khi nim : Trong cc chng trnh trc th cc d liu a vo chng trnh ch c tn ti trong RAM, khi thot chng trnh th tt c d liu u b mt. khc phc tnh trng ny BC cung cp cho ta cc hm lu tr v truy xut tp tin, l kiu FILE . V y ta ch cp n 2 loi tp tin : Tp tin vn bn: l tp tin dng ghi cc k t ln a theo cc dng. Tp tin nh phn: l tp tin dng ghi cc cu trc dng nh phn (c m ho). I.2. Thao tc vi tp tin Qu trnh thao tc trn tp tin thng qua 4 bc: Bc 1: Khai bo con tr tr n tp tin. Bc 2: M tp tin. Bc 3: Cc x l trn tp tin. Bc 4: ng tp tin. a. Khai bo FILE *< tn bin >; V d : FILE *f; // Khai bao bien con tro file f b. M tp tin fopen (< ng dn tn tp tin> , < kiu truy nhp >); V d : FILE *f; // Khai bao bien con tro f f = fopen ( C:\\VD1.txt , rt ) ; Cc kiu truy nhp tp tin thng dng: t b r w a l kiu truy nhp tp tin i vi dng tp tin vn bn (text). l kiu truy nhp tp tin i vi dng tp tin nh phn (binary). m ra c ( ready only). m ra ghi (create / write). m ra thm vo (append).
Trang 59

Lp trnh cn bn tp

Tm tt l thuyt v bi

r+

m ra c v ghi (modify).

c. Cc hm c ghi ni dung tp tin Tp tin vn bn :


C TP TIN
1) fscanf(<FILE *>,<nh dng>,< tham bin>): c d liu t tp tin theo nh dng

fscanf( f, %d, &x); // c d liu x c kiu nguyn t con tr file f 2) fgets(<vng nh>, <kch thc ti a>, <FILE *>) : c mt chui t tp tin vi kch thc ti a cho php, hoc gp k t xung dng. char s[80]; fgets(s, 80, f); 3) getc(< FILE * >): c mt k t t tp tin ang m. char c; c=getc(f); GHI TP TIN 1) fprintf(<FILE *>, <nh dng>[, <cc tham bin>]) : Ghi d liu theo mt nh dng no vo tp tin. fprintf(f,%d,x); 2) fputs(<chui k t>, <FILE *>) : Ghi mt chui k t vo tp tin ang m. fputs(Giao trinh BT, f); Tp tin nh phn C TP TIN fread(<&ptr>, <size>, <len>, <FILE *>) ptr: vng nh lu d liu c. size: kch thc mi nh (tnh bng byte). len: di d liu cn c. FILE: c t tp tin nh phn no. int a[30], b, n; fread(a,sizeof(int), n , f); Fread(&b,sizeof(int), 1 , f); GHI TP TIN fwrite(<&prt>, <size>, <len>, <FILE *> ) (Tham s tng t nh hm fread) fwrite(a,sizeof(int), n , f); d. ng tp tin Sau khi khng cn lm vic vi tp tin, m bo an ton cho d liu th nht thit ta phi ng tp tin li.
Trang 60

Lp trnh cn bn tp

Tm tt l thuyt v bi

fclose ( < bin con tr tp tin > ) ; V d : fclose (f) ; e. Cc thao tc khc trn tp tin * Xo tp tin :

hoc fcloseall () ;

remove ( < ng dn tp tin> ); * i tn tp tin : rename ( < tn tp tin c >, < tn tp tin mi > ); * Di chuyn con tr tp tin : fseek ( < FILE * >, < di >, < mc > ); Cc mc : SEEK_SET di dn u tp tin (gi tr 0). SEEK_END di n cui tp tin (gi tr 2). SEEK_CUR di v tr hin hnh (gi tr 1). V d : feek ( f , +5 , SEEK_CUR ); // di v tr hin hnh v cui 5 bytes feek ( f, -4 , SEEK_CUR ); // di v tr hin hnh v trc 4 bytes * Cho bit v tr con tr file: ftell ( < FILE * > ); V d : int size = ftell ( f ); //size: khong cch t u tp tin n v tr hin hnh (tnh bng byte) I.3. Cc v d minh ho a. Tp tin vn bn V d 1: Vit chng trnh to tp tin vn bn SO.OUT gm n s nguyn, cc s ca dy c to ngu nhin c gi tr tuyt i khng vt qu M ( n, M c t tp tin SO.INP). Kt qu chng trnh l 1 tp tin vn bn c dng th nht ghi s n; n dng tip theo ghi cc s to c, mi s trn mt dng.

# include < conio.h >


Trang 61

Lp trnh cn bn tp

Tm tt l thuyt v bi

# include < stdio.h > # define in SO.INP # define out SO.OUT int n, M ; void Nhap () { FILE *fi; fi = fopen ( in , rt ); fscanf ( fi, %d %d , &n, &M ); fclose ( fi ); } void Xuat () { FILE *fo; fo = fopen ( out , wt ); fprintf ( fo , %d\n, n ); for ( ; n > 0 ; n -- ) // vng lp khng c gi tr gn ban u fprintf ( fo , %d\n , random ( ( 2 * M + 1 ) - M ) ); fclose ( fo ); } void main () { clrscr ( ); Nhap ( ); Xuat ( ); getch(); } V d 2: Vit chng trnh pht sinh ngu nhin ma trn a kch thc 5x6,lu ma trn ny vo file test.inp. c li file test.inp a d liu vo ma trn b v xut ra mn hnh xem kt qu lu ng khng? Cu trc ca file test.inp nh sau: - Dng u lu 2 s nguyn: m, n th hin s dng v s ct ca ma trn. - m dng tip theo, mi dng gm n phn t l gi tr cc phn t trn 1 dng ca ma trn. #include<stdio.h> #include<conio.h> #include<stdlib.h> #define MAX 100 #define dl "test.inp" void LuuFile(int a[MAX][MAX], int m, int n)
Trang 62

Lp trnh cn bn tp

Tm tt l thuyt v bi

{ FILE *f; f=fopen(dl, "wt"); if(f==NULL) { printf("\nKhong tao duoc file."); getch(); exit(0); } fprintf(f, "%d %d\n", m, n); for(int i=0; i<m; i++) { for(int j=0; j<n; j++) fprintf(f, "%d\t", a[i][j]); fprintf(f, "\n"); } fclose(f); } void DocFile(int a[MAX][MAX], int &m, int &n) { FILE *f; f=fopen(dl, "rt"); if(f==NULL) { printf("\nKhong doc duoc file."); getch(); exit(0); } fscanf(f, "%d%d", &m, &n); for(int i=0; i<m; i++) { for(int j=0; j<n; j++) fscanf(f, "%d", &a[i][j]); } fclose(f); } void main() { int a[MAX][MAX], m=5, n=6, i, j; int b[MAX][MAX], x, y; for(i=0; i<m; i++) for(j=0; j<n; j++) a[i][j]=random(1000); LuuFile(a, m, n);
Trang 63

Lp trnh cn bn tp

Tm tt l thuyt v bi

DocFile(b, x, y); for(i=0; i<x; i++) { for(j=0; j<y; j++) printf("%d\t", b[i][j]); printf("\n"); } } Kt qu v d sau khi chy chng trnh, file test.inp c dng sau: 56 480 661 395 736 998 987 31 414 211 801 774 416 166 191 454 830 508 72 121 382 35 365 567 726 159 309 1 275 870 378 b. Tp tin nh phn Vit hm c/ ghi mt danh sch sinh vin ca mt lp vo tp tin SV.DAT SINHVIEN ds[100]; int siso; void nhap ( ) { FILE *fi; fi = fopen ( SV.DAT , rb ); fseek ( fi , 0 , SEEK_END ); siso = ( ftell ( fi ) + 1 ) / sizeof ( SINHVIEN ); fseek ( fi , 0 , SEEK_SET ); fread ( ds , sizeof ( SINHVIEN ) , siso , fi ); fclose ( fi ); } void xuat ( ) { FILE *fo; fo = fopen ( SV.DAT, wb ); fwrite ( ds , sizeof ( SINHVIEN ) , siso , fo ); fclose ( fo ); } II. BI TP II.1. Bi tp c bn
Trang 64

Lp trnh cn bn tp

Tm tt l thuyt v bi

1. Vit chng trnh to tp tin vn bn cha 1 dy s nguyn bt k. 2. Vit chng trnh to tp tin nh phn cha 10000 s nguyn bt k ghi vo file SONGUYEN.INP. Mi dng 10 s, sau vit chng trnh c file SONGUYEN.INP, sp xp theo th t tng dn v lu kt qu vo file SONGUYEN.OUT. 3. Vit chng trnh to mt file cha 10000 s nguyn ngu nhin i mt khc nhau trong phm vi t 1 n 32767 v t tn l SONGUYEN.INP. 4. Vit chng trnh to mt file cha cc s nguyn c tn SONGUYEN.INP. Sau c file SONGUYEN.INP v ghi cc s chn vo file SOCHAN.OUT v nhng s l vo file SOLE.OUT. 5. Vit chng trnh ghi vo tp tin SOCHAN.DAT cc s nguyn chn t 0 n 100. 6. Vit chng trnh c tp tin SOCHAN.DAT v xut ra mn hnh, mi dng 30 s. 7. Vit chng trnh gi lp lnh COPY CON to tp tin vn bn. Khi kt thc tp tin nhn phm F6 lu. 8. Vit chng trnh gi lp lnh TYPE in ni dung ca tp tin vn bn ra mn hnh. 9. Vit chng trnh kim tra tp tin no c trong th mc c ch nh hay khng? 10. Vit chng trnh gi lp lnh DEL xo tp tin. Yu cu nhp ng dn v tn tp tin, kim tra s tn ti ca tp tin, nu c th xo tp tin c ch nh. 11. Vit chng trnh gi lp lnh RENAME i tn mt tp tin. 12. Vit chng trnh to file vn bn c tn l MATRIX.INP c cu trc nh sau: Dng u ghi hai s m, n. Trong m dng tip theo mi dng ghi n s v cc s cc nhau mt khong cch. Hy kim tra xem trong file c bao nhiu s nguyn t. Kt qu cn ghi vo file MATRIX.OUT c ni dung l mt s nguyn l s lng cc s nguyn t trong file MATRIX.INP. 13. Cho s nguyn n, hy in tam gic PASCAL gm n dng D lu vo: tp tin vn bn PAS.INP gm 1 dng cha gi tr n. Kt qu: a ra tp tin vn bn PAS.OUT th hin mt tam gic PASCAL n dng. 14. Cho mng cc s nguyn , hy sp xp mng theo th t tng dn. D liu vo : tp tin vn bn ARRAY.INP gm 2 dng - Dng 1 cha s nguyn n ( n < = 100 ). - Dng 2 cha n s nguyn. Kt qu : a ra tp tin vn bn ARRAY.OUT gm hai dng - Dng 1 cha n phn t ca mng cc s nguyn. - Dng 2 cha n s nguyn c xp tng dn. 15. Cho mng cc s nguyn, tm phn t ln nht ca mng.
Trang 65

Lp trnh cn bn tp

Tm tt l thuyt v bi

D liu vo: tp tin vn bn ARRAY.INP gm hai dng: - Dng 1 cha s nguyn n ( n < = 100 ). - Dng 2 cha n s nguyn. Kt qu: a ra tp tin vn bn ARRAY.OUT gm 1 dng ghi 2 gi tr x, y trong x l gi tr ln nht, y l v tr ca x trong mng. II.2. Bi tp luyn tp v nng cao 16. Cho mng cc s nguyn, tnh tng cc phn t ca mng. D liu vo : tp tin vn bn ARRAY.INP gm hai dng - Dng 1 cha s nguyn n ( n < = 10 ) - Dng 2 cha n s nguyn Kt qu: a ra tp tin vn bn ARRAY.OUT gm 1 dng ghi tng cc phn t trong mng 17. Cho mng cc s nguyn, hy lit k cc phn t l s nguyn t D liu vo : tp tin vn bn NT.INP gm hai dng - Dng 1 cha s nguyn n ( n < = 100) - Dng 2 cha n s nguyn Kt qu : a ra tp tin vn bn NT.OUT gm hai dng: - Dng 1 cha s lng cc phn t nguyn t trong mng. - Dng 2 lit k cc s nguyn t . 18. (*) To file vn bn c tn l INPUT.TXT c cu trc nh sau: - Dng u tin ghi N (N l s nguyn dng nhp t bn phm). - Trong cc dng tip theo ghi N s nguyn ngu nhin trong phm vi t 0 n 100, mi dng 10 s (cc s cch nhau t nht mt khong trng). Hy c d liu ca file INPUT.TXT v lu vo mng mt chiu A. Thc hin cc cng vic sau : Tm gi tr ln nht ca mng A. m s lng s chn, s lng s l ca mng A. Hy sp xp cc phn t theo th t tng dn. Hy ghi cc kt qu vo file vn bn c tn OUTPUT.TXT theo mu sau:

Trang 66

Lp trnh cn bn tp

Tm tt l thuyt v bi

19. (*) Vit chng trnh nhp v lu h s ca sinh vin vo mt file c tn l DSSV.TXT. Sau c file DSSV.TXT v ct vo mng, hy sp xp cc h s sinh vin theo th t gim dn theo im trung bnh mn hc ri in ra mn hnh h s cc sinh vin theo th t ra mn hnh c thng tin nh sau : M s sinh vin. H v tn sinh vin. im trung bnh kim tra. im thi ht mn. im trung bnh mn hc (tnh bng (im TBKT+im thi)/2). 20. (*) To mt file text c tn l INPUT.TXT c cu trc nh sau : - Dng u tin ghi hai s M v N (M,N l hai s nguyn dng nhp t bn phm). - Trong M dng tip theo mi dng ghi N s nguyn ngu nhin trong phm vi t 0 n 100 (cc s ny cch nhau t nht mt khong trng). Hy c d liu t file trn v lu vo mng hai chiu. Ri thc hin cc cng vic sau: Tm gi tr ln nht ca ma trn. m s lng s chn , l, nguyn t c trong ma trn. Hy tnh tng cc phn t trn mi dng ca ma trn. Hy ghi kt qu ny vo filetext c tn l OUTPUT.TXT

Trang 67

Lp trnh cn bn tp

Tm tt l thuyt v bi

21. (**) Xt dy s a1, a2, , aN. Mt on con ca dy l dy cc phn t lin tip nhau c xc nh bi ch s ca s bt u (L) v ch s ca s cui cng (R).Tng cc s trn on c gi l tng on. Yu cu : Cho dy ( aN ), hy tm on con c tng on ln nht (T) D liu c cho trong tp tin vn bn SUMMAX.INP - Dng th nht ch s nguyn N ( 0 < N <= 30000 ) - N dng tip theo, mi dng cha mt s l cc s ca dy cho theo ng th t. Gi tr tuyt i ca mi s khng vt qu 30000 Kt qu tm c ghi vo tp tin vn bn SUMMAX.OUT gm 1 dng ghi 3 s T, L, R. V d :

22. (*) Cho dy ( aN ), hy tm on con tng dn c tng ln nht D liu : c cho trong tp tin AMAX.INP - Dng 1 cha s nguyn N ( 0 < N <= 30000 ). - N dng tip theo, mi dng cha mt s l cc s ca dy y cho theo ng th t. Gi tr tuyt i ca mi s khng vc qu 30000. Kt qu tm c ghi vp tin vn bn AMAX.OUT gm hai dng: - Dng 1 ghi tng ca dy con. - Dng 2 ghi mng con tng dn c tng ln nht. 23. Vit chng trnh nhp l lch mt nhn vin vo danh sch cc nhn vin. Khi khng nhp na bm phm Esc v ghi vo tp tin NHANVIEN.DAT sau : c t tp tin NHANVIEN.DAT va to v in danh sch cc nhn vin ln mn hnh. Tm v in l lch mt nhn vin bng cc nhp v h tn hoc m s nhn vin. 24. (**) lp rp mt my vi tnh hon chnh cn phi c ti thiu 10 linh kin loi A v c th lp b sung thm vo khong ti a 8 linh kin loi B. Ti mt ca hng vi tnh cn qun l bn hng cc loi linh kin ti ca hng. Thng tin v mt loi linh kin gm c: Tn linh kin, quy cch , loi, n gi loi 1 ( cht lng tt s nguyn), n gi loi 2 ( cht lng thng s nguyn ). Vit chng trnh thc hin nhng cng vic sau :

Trang 68

Lp trnh cn bn tp

Tm tt l thuyt v bi

Nhp vo thng tin ca cc loi linh kin c ca hng. Xut danh sch cc linh kin nhp theo th t tng dn ca loi linh kin v tn linh kin. Cho bit c 10 linh kin loi A cn thit lp rp my tnh hay cha? Vi gi nh l ca hng c 10 linh kin loi A lp rp my. Nhp vo mt s tin lp rp mt my tnh. C th lp c mt my tnh hon chnh vi cc linh kin ton b theo n gi loi 1 hay n gi loi 2 hay khng? Nu s tin trong khong gia th hy tm 1 phng n gm nhng linh kin theo n gi 1 v linh kin theo n gi 2 lp? Tt c d liu phi lu tp tin.

PHN 9 QUI
I. TM TT L THUYT I.1. Khi nim : Mt hm c gi c tnh qui nu trong thn ca hm c lnh gi li chnh n mt cch tng minh hay tim n. I.2. Phn loi qui qui tuyn tnh. qui nh phn. qui phi tuyn. qui h tng. a. qui tuyn tnh : Trong thn hm c duy nht mt li gi hm gi li chnh n mt cch tng minh. <Kiu d liu hm> TenHam (<danh sch tham s>) { if (iu kin dng) { //Tr v gi tr hay kt thc cng vic } //Thc hin mt s cng vic (nu c) . . . TenHam (<danh sch tham s>); //Thc hin mt s cng vic (nu c) } V d 1: Tnh S(n) = 1+2+3++n Trc khi ci t hm qui ta xc nh:
Trang 69

Lp trnh cn bn tp

Tm tt l thuyt v bi

- iu kin dng: S(0) = 0. - Qui tc (cng thc) tnh: S(n) = S(n-1) + n. Ta ci t hm qui nh sau: long TongS (int n) { if(n==0) return 0; return ( TongS(n-1) + n ); } V d 2: Tnh P(n) = n! Trc khi ci t hm qui ta xc nh: - iu kin dng: P(0) = 0! = 1. - Qui tc (cng thc) tnh: P(n) = P(n-1) * n. Ta ci t hm qui nh sau: long GiaiThua (int n) { if(n==0) return 1; return ( GiaiThua(n-1) * n ); } b. qui nh phn : Trong thn ca hm c hai li gi hm gi li chnh n mt cch tng minh. <Kiu d liu hm> TenHam (<danh sch tham s>) { if (iu kin dng) { //Tr v gi tr hay kt thc cng vic } //Thc hin mt s cng vic (nu c) . . .TenHam (<danh sch tham s>); //Gii quyt vn nh hn //Thc hin mt s cng vic (nu c) . . . TenHam (<danh sch tham s>); //Gii quyt vn cn li //Thc hin mt s cng vic (nu c) } V d 1: Tnh s hng th n ca dy Fibonaci c nh ngha nh sau: f1 = f0 =1 ; fn = fn-1 + fn-2 ; (n>1) Trc khi ci t hm qui ta xc nh: - iu kin dng: f(0) = f(1) = 1.
Trang 70

Lp trnh cn bn tp

Tm tt l thuyt v bi

Ta ci t hm qui nh sau: long Fibonaci (int n) { if(n==0 || n==1) return 1; return Fibonaci(n-1) + Fibonaci(n-2); } V d 2: Cho dy s nguyn a gm n phn t c th t tng dn. Tm phn t c gi tr x c xut hin trong mng khng? Trc khi ci t hm qui ta xc nh: - iu kin dng: Tm thy x hoc xt ht cc phn t. - Gii thut: Do dy s c th t tng nn ta c th p dng cch tm kim theo phng php nh phn. tng ca phng php ny l ti mi bc ta tin hnh so snh x vi phn t nm v tr gia ca dy thu hp phm vi tm. - Gi: l: bin tri ca dy (ban u l=0). r: bin phi ca dy (ban u r = n-1). m: v tr gia (m = (l+r)/2).

Thu hp da vo gi tr ca phn t gia, c hai trng hp: i) Nu x ln hn phn t gia th x ch xut hin bn phi v tr ny (t m+1 r) ii)Ngc li nu x nh hn phn t gia th x ch xut hin bn tri v tr ny (t l m-1) Qu trnh ny thc hin cho n khi gp phn t c gi tr x, hoc xt ht cc phn t. Ta ci t hm qui nh sau: int TimNhiPhan(int a[], int l, int r, int x) { int m = (l+r)/2; if(l>r) return -1;// Khng c phn t x if(a[m]>x) return TimNhiPhan(a, l, m-1, x); if(a[m]<x) return TimNhiPhan(a, m+1, r, x); return m;//Tr v v tr tm thy }
Trang 71

Lp trnh cn bn tp

Tm tt l thuyt v bi

V d 3: Bi ton thp H Ni: Bc 1: Di chuyn n -1 a nh hn t cc A sang cc B. Bc 2: Di chuyn a cn li t cc A sang cc C. Bc 3: Di chuyn n -1 a nh hn t cc B sang cc C. Ta ci t hm qui nh sau: void ThapHaNoi (int n, char A, char B, char C) { if (n = = 1) printf(Di chuyen dia tren cung tu %d den %d\n, A, C); else { ThapHaNoi(n-1, A, C, B); ThapHaNoi(1, A, B, C); ThapHaNoi(n-1, B, A, C); } } c. qui phi tuyn : Trong thn ca hm c li gi hm gi li chnh n c t bn trong vng lp. <Kiu d liu hm> TenHam (<danh sch tham s>) { for (int i = 1; i<=n; i++) { //Thc hin mt s cng vic (nu c) if (iu kin dng) { //Tr v gi tr hay kt thc cng vic } else { //Thc hin mt s cng vic (nu c) TenHam (<danh sch tham s>); } } } V d: Tnh s hng th n ca dy {Xn} c nh ngha nh sau:

Trc khi ci t hm qui ta xc nh: iu kin dng : X(0) = 1. Ta ci t hm qui nh sau: int TinhXn (int n)
Trang 72

Lp trnh cn bn tp

Tm tt l thuyt v bi

{ if(n==0) return 1; int s = 0; for (int i=1; i<=n; i++) s = s + i * i * TinhXn(n-i); return s; } d. qui h tng: Trong thn ca hm ny c li gi hm n hm kia v trong thn ca hm kia c li gi hm ti hm ny.

<Kiu d liu hm> TenHam1 (<danh sch tham s>) { //Thc hin mt s cng vic (nu c) TenHam2 (<danh sch tham s>); //Thc hin mt s cng vic (nu c) } <Kiu d liu hm> TenHam2 (<danh sch tham s>) { //Thc hin mt s cng vic (nu c) TenHam1 (<danh sch tham s>); //Thc hin mt s cng vic (nu c) } V d: Tnh s hng th n ca hai dy {Xn}, {Yn} c nh ngha nh sau:

Trc khi ci t hm qui ta xc nh: iu kin dng : X(0) = Y(0) = 1. Ta ci t hm qui nh sau: long TinhXn (int n) { if(n==0) return 1; return TinhXn(n-1) + TinhYn(n-1);
Trang 73

Lp trnh cn bn tp

Tm tt l thuyt v bi

} long TinhYn (int n) { if(n==0) return 1; return n*n*TinhXn(n-1) + TinhYn(n-1); } I.3. Tm hiu cch hot ng ca hm qui Phc v cho cng vic kim chng kt qu thc thi ca chng trnh bng tay. V d 1: Ly li v d tnh P(n) = n! bng phng php qui nh m t cit trn vi n=5

Lnh gi khi u trong hm main(), truyn n hm GiaiThua(). , gi tr ca tham s n l 5, do ni gi GiaiThua(4), truyn 4 n hm GiaiThua(). gi tr ca tham s n l 4, do n gi GiaiThua(3), truyn 3 n hm GiaiThua(). Tin trnh ny tip tc ( quy) n khi gi GiaiThua(1) c thc hin t bn trong lnh gi GiaiThua(2). , gi tr ca tham s n l 1, do n tr v gi tr 1, m khng thc hin thm bt k lnh gi no. Sau ln ngc v lnh gi GiaiThua(2) tr 2*1=2 tr v lnh gi GiaiThua(3). Sau lnh gi GiaiThua(3) tr 3*2=6 tr v lnh gi GiaiThua(4). Sau lnh gi GiaiThua(4) tr 4*6=24 tr v lnh gi GiaiThua(5). Sau cng, lnh gi GiaiThua(5) tr v gi tr 120 cho hm main(). V d 2: Ly li v d tnh s hng th n ca dy Fibonaci nh m t ci t trn vi n = 5, qu trnh thc hin tng t nh trong v d trc, ta c s sau:

Trang 74

Lp trnh cn bn tp

Tm tt l thuyt v bi

I.4. V d Vit chng trnh nhp vo mng mt chiu s nguyn a, xut ra mn hnh v tnh tng cc phn t c gi tr chn bng phng php qui. #define MAX 100 void Nhap(int a[], int n) { if(n==0) return; Nhap(a, n-1); printf("\nNhap phan tu thu %d: ", n); scanf("%d", &a[n-1]); } void Xuat(int a[], int n) { if(n==0) return; Xuat(a, n-1); printf("%d\t", a[n-1]); } long TongChan(int a[], int n) { if(n==0) return 0; int s = TongChan(a, n-1); if(a[n-1]%2==0) s+=a[n-1]; return s; } void main() { int a[MAX], n; int s; printf("\nNhap so phan tu cua mang: "); scanf("%d", &n); Nhap(a, n); Xuat(a, n); s=TongChan(a, n); printf("\nTong cac so chan trong mang la: %d", s); getch(); } II. BI TP
Trang 75

Lp trnh cn bn tp

Tm tt l thuyt v bi

Vit hm qui thc hin cc yu cu sau: II.1. Bi tp c bn 1. Ci t li nhng bi tp chng mng mt chiu. 2. Tm ch s c gi tr ln nht ca s nguyn dng n. 3. Hy xy dng mt dy gm N s c gi tr t 1 n K cho trc, sau cho khng c hai dy con lin tip ng k nhau. V d: N = 6 K=3 Kt qu: 121312 4. Tm c s chung ln nht ca hai s nguyn dng a v b. 5. Tm ch s u tin ca s nguyn dng n. 6. Tm dy nh phn di nht sao cho trn dy ny khng c hai b k bt k trng nhau. B k l dy con c k s lin tip nhau trn dy tm c. V d : k = 3 Kt qu: 000 101 110 0 7. Tnh cc tng sau :

II.2. Bi tp luyn tp v nng cao 8. Cho s nguyn dng n. In ra biu din nh phn ca n. 9. (*) Ci t v minh ho bi ton thp H Ni. 10. (**) Ci t bi ton m i tun. 11. (**) Ci t bi ton tm hu. 12.(*)Tnh cc tng sau :

Trang 76

Lp trnh cn bn tp

Tm tt l thuyt v bi

Trang 77

You might also like