Download as doc, pdf, or txt
Download as doc, pdf, or txt
You are on page 1of 44

Lp trinh C

Chng I:

CC THNH PHN C BN CA NGN NG LP TRNH C


I/ Tp hp cc k t dng trong C: Ch ci: A .. Z, a.. z Ch s 0 .. 9 Cc php ton: + - * / = > < () Du gch ni _ Du cch hay khoang trng Cc k t khc: ! $ & {}[];#... Ch : Khi vit chng trnh, ta khng c s dng bt k ki t no khc ngoi cc k t trn. V d nh khi lp chng trnh gii phng trnh bc hai ax2 +bx+c=0 , ta cn tnh bit thc Delta = b2 - 4ac, trong ngn ng C khng cho php dng k t , v vy ta phi dng k hiu khc thay th. II/ Tn, cch t tn: Dng t cho cc i tng khc nhau ca chng trnh. Tn bin, tn mng, tn hm, tn tp, .. * Quy nh cch t tn: Gm cc ch ci,ch s, du gch di. Bt u bng ch ci Khng trng vi t kho !!! C s phn bit gia ch hoa v ch thng. x X

V d:
Tn hp l: LOP10T1 Lop10t1 a_1 Tn khng hp l: Bai tap 1_baitap name#3
III/ Cch vit chng trnh:

(v c du space) (v bt u bng s) (v c du #)

Chng trnh l dy cc cu lnh. V vy vit chng trnh ta phi bit c php ca cc cu lnh. Cu lnh gm Tn lnh(Cc tham s nu c); Kt thc cu lnh bng du chm phy ; Cc cu lnh trong chng trnh nn vit trn tng hng v nn nhm thng hng vi cc cu lnh ngang cp. chng trnh sng sa r rng va tot ln c tnh cu trc.
1

Lp trinh C

* Quy tt xung dng (ngt dng) 1. Ngt mt dng chui k t trn hai dng 2. Khng c b i mt tn trn hai dng 3. Ngoi 1 v 2 th c th xung dng bt k c=2* 3.14 * r;
Nn vit thm cc dng ch thch ngay t u Dng ch thch: Khi vit chng trinh i luc ta cn co li ghi chu v 1 oan chng trinh nao o d nh va d iu chinh sau nay. Ni dung ghi chu c t trong cp du /* .............................. */

Vi C++ li gii thch trn mt dng t sau // IV/ Cu trc ca mt chng trnh: # include <...> Gi cc tp tin tin x l main () Bt buc phi c. Hm chnh { ___________________; ____________________; thn chng trnh _________________; return (0); khng bt buc } Kiu_d_liu Tn hm ( cc tham s); { ___________________; ____________________; thn hm _________________; return (); /* mang gi tr tr v. } V d: # include <stdio.h> m t hm vo ra chun main() { Printf( chao ban!); Printf( moi ban lam quen voi turbo C ); getch(); } Ch : Khi lp trnh nghi ng 1 hm no c khai bo tp tin no ta nhn CTRL F1 * Cu trc: - Mt chng trnh C gm mt dy cc hm vit lin tip nhau, bao gi cng c hm main(), ngoi ra cn c nhng hm khc. - Th t cc hm trong C l bt k: Hm main() c th ng trc, sau, hoc xen k vi cc hm khc. V/ Cc cng vic trong lp trnh v cc bc c bn khi xy dng mt chng trnh:
1. Cc cng vic trong lp trnh:

* M tp tin mi: ALT F go N luc nay tp tin cha co tn (NONAME.CPP)


2

Lp trinh C

* M tp tin a co trn a: F3 xut hin hp hi thoai ta go tn trong hp Name Nu tn tp tin co trn a th may m tp tin o. Nu tn tp tin khng co trn a may thc hin m tp tin mi vi tn ta go vao. * Lu 1 tp tin soan thao ln a: F2 Nu tp tin cha co tn th may yu cu t tn Nu tp tin a co tn th may t lu va khng thng bao g ca. * Thao tac v khi: a) nh ngha: Khi la 1 phn cua vn ban, nm gia 2 du (u khi va cui khi) Ctrl K B : u khi Ctrl K K : cui khi (di chuyn con tro n u khi, gi phm Shift va di chuyn con tro n cui khi) b) Thao tac khi: Ctrl K C: copy khi Ctrl K V: di chuyn khi Ctrl K Y: xoa khi Ctrl K W: ghi khi ra 1 tp tin khac (may yu cu t tn tp tin cha khi) Ctrl K R: oc tp tin co trn a vao tp tin ang soan thao. Ctrl K H: thi anh du khi.
2. Cc bc c bn khi xy dng mt chng trnh:

b1: M tp tin mi (ALT F / G N) b2: Son tho chng trnh. b3: Lu tp tin (F2). Nu tp tin cha c tn my yu cu t tn cho tp tin. Phn m rng ca tp tin mc nh l .CCP (C++). Vi C phn m rng .C b4: Dch chng trnh: (F9) Khi dch chng trnh nu gp li my thng bo vo ta phi sa li tt c cc li. Sau khi sa xong ta lu li. b5: Chy chng trnh CTRL F9. Khi chy chng trnh my thc hin tun t cc cu lnh theo th t t trn xung. Nu gp lnh nhp d liu my dng li ch ngi s dng nhp cc gi tr vo ri mi thc hin cc lnh tip theo. b6: Kim tra kt qu. VI/ Mt s tp tin tin x l (header) c bn. ctype.h qun l k t math.h cc hm ton hc stdio.h Cc hm vo ra. string.h Qun l b nh v xu k t VII/ Kiu d liu chun trong C: 1. Khi nim: Mt kiu d liu c nh ngha vi hai im chnh l: Mt tp hp cc gi tr m mt bin thuc kiu c th nhn c.
3

Lp trinh C

Trn xc nh mt s php ton. D liu c cha trong b nh my tnh vi s lng nh nht nh tnh theo n v byte. 2. Kiu nguyn: Kiu s nguyn la kiu d liu dung lu cac gia tri nguyn hay con goi la kiu m c. Kiu s nguyn trong C c chia lam nhiu kiu d liu con,mi kiu co 1 min gia tri khac nhau. Kiu Phm vi biu din Kch thc int 2 byte -32768 32767 long int 4 byte -2147483648 2147483648 unsigned int 2 byte 0 65536 unsigned long int 4 byte 0 4294967295 3. Kiu thc: gm 2 phn: phn nguyn v phn thp phn c ngn cch bng du chm. Kiu float double Phm vi biu din 1.5E-45 3.4E +38 5E -324 1.7E+308 Ch s c ngha 7 8 15 16 Kch thc 4 byte 8 byte

4. Kiu k t: trong my biu din bi 1 byte Mt k t c biu din bi 1 byte, c 256 gi tr khc nhau c nh s t 0 255 Bng m c dng l bng m ASCII. Kiu Phm vi biu din Kch thc char 1 byte 0 255 Ch : Trong C xem k t nh l mt s nguyn m thi. C th tr hai k t cho nhau c. V d: Ch A xem l 65 ,ch B xem la 66; A - 'B -1

VIII/ Cc i lng dng trong lp trnh:


Hng Bin Hm Biu thc 1. Hng: L i lng c gi tr khng thay i a) Hng thc_ du phy ng: Hng s thc bao gm cac s thuc kiu float va double c th hin theo 2 cach: C1: Dng du chm ngn cch phn nguyn v phn thp phn. V d: 7.9 12.3 -234.0 C2: (dng m, k php khoa hc) S c tch thnh 2 phn: phn nh tr v bc Phn nh tr c th l nguyn hay thc. Phn bc lun lun l s nguyn. V d: 1E2 = 1x102 = 100.0 0.00001 = 1E-5 b) Hng int: l s nguyn trong khong t -32768 32767 V d: -50; 548
4

Lp trinh C

c) Hng long: l s nguyn vt ngoi khong -32768 32767 V d: 50080 d) Hng int h 8: Hng nay c vit theo cach 0X1X2X3.. Trong o Xi la 1 s nguyn nm trong khoan t 0-7. Hng nguyn h 8 lun lun nhn gia tri dng. Vi du: (0345)8= (229)10 e) Hng nguyn h 16: H 16 co 16 ki s c quy inh nh sau: 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F Hng nguyn h 16 c biu din nh sau: 0X1X2X3... Trong o Xi la 1 trong 16 ki s trn Vi du: (0XA9)16 =(169)10 f) Hng k t: C1: biu din mt k t ta t k t vo gia hai du nhy n. V d: A C2: dng lun s th t ca n trong bng m ASCII V d: 65 hiu l ch A printf(%d,65); 65 printf(%d,A); 65 printf(%c,65); A printf(%c,A); A C3: \t1 t2 t3 t1 t2 t3 l s h 8 biu din m k t printf(%d,\101); 65 printf(%c,\101); A * Biu din mt s k t c bit: \t tab \b backspace \r v u dng \n xung dng \ \ \\ \ g) Hng xu k t: (hng chui k t) Xu k t l dy k t bt k t trong cp du nhy kp. Vi du: Turbo C /* chui rng */ Chui ki t c lu trong may di dang 1 mang co cac phn t la cac ki t ring bit. Trinh bin dich se t ng thm ki t null \0 vao cui mi chui * Khai bo hng: C php: #define tn hng gi tr to hng khng c kiu
5

Lp trinh C

const kiud liu tn hng = gi tr; To hng c kiu. Khai bo hng trc hm main(), sau #include 2. Bin: L i lng c gia tr c th thay i khi thc hin chng trinh. a) Khai bo bin: Vic khai bao bin giup cho trinh bin dich co th bit c kich thc cua bin o, vi tri cua bin o trong b nh va ghi nhn s co mt cua bin o trong chng trinh. Sau khi khai bao bin, may se gianh sn cac nh cho bin o cho du co s dung hay khng C php: Kiu d liu danh sch bin; V d: int a,b; float x,y; char c1, c2 ; double d1, d2; char ht[25], qq[20]; khai bo mng unsigned u1, u2, u3; b) Phn loi bin: (t ng) C 2 tiu chun phn loi: - Thi gian tn ti - Phm vi s dng 1. Bin cc b: l bin khai bo bn trong mt hm. main() { float a[10], x, s; { int i ; } x,i } * Phm vi s dng: nhng bin khai bo bn trong hm no th phm vi s dng cng ch trong hm m thi. M rng r: bin khai bo bn trong khi lnh no th ch c s dng trong khi thi. * T ng bi v: thi im ta dch CTRL F9 th nhng bin ny cha c cp pht b nh, chng s c cp pht b nh khi chng trnh lm vic. Khi chng trnh bt u vo mt khi th cc bin khai bo trong khi mi c cp pht b nh, khi chng trnh i khi khi th bin c gii phng. (t sinh v t mt) u im: - Tit kim b nh - Cho php s dng bin trng tn nhau nhng khc khi nhau vn c 2. Bin ngoi: l cc bin, mng c khai bo bn ngoi hm. Bin ngoi c cp pht b nh thi im dch chng trnh, chng s chim vng b nh trong sut thi gian chng trnh thc hin. Phm vi s dng: cho ton b chng trnh. Ch : thi im dch chng trnh c cp pht b nh v c gn lun gi tr ban u = 0 khng b hn lon nh bin trong.
6

Lp trinh C

3. Bin, tnh: (static) c hai loi - Bin tnh ngoi: khai bo bn ngoi hm no - Bin tnh trong : khai bo bn trong hm no . - Tt c bin tnh c cp pht b nh trong sut thi gian chng trnh thc hin. - Phm vi s dng: Bin tnh trong: ch bn trong hm Bin tnh ngoi: ton chng trnh S khc nhau gia bin trong v ngoi: + D bin trong hay ngoi ta c th va khai bo va khi to cho n gi tr ban u. + i vi mng: Vi mng ngoi ta c th va khai bo va khi to cho n gi tr ban u. Vi mng trong th khng c. 3. Hm: a) Khi nim: Hm c xem nh mt cng thc nh sn nhm thc hin cng vic no . b) Phn loi hm: 2 loi Hm chun Hm t to c) Mt s hm chun: double acos (double x); acos(x) double asin (double x); double atan (double x); double tan (double_x); double atan2 (double_y, double_x); /* arc tan ca y/x */ double cos (double_x); double sin (double_x); double exp (double_x);ex double fabs (double_x);|x| double pow (double_x, double_y); /* xy */ double sqrt (double_x);cn bc 2 ca x sqrt(x) 4. Biu thc: gm cc ton t v ton hng * Ton t l cc php ton: a) Cc php ton s hc: + - * / % php chia ly phn d C hai u nguyn th cho kt qu nguyn, mt trong 2 l thc th cho kt qu thc 27/6 4 27.0/6 4.5 b) Cc php ton quan h: (so snh) > >= < <= = = bng != khc c) Php ton logic: dng kt hp nhiu biu thc so snh Php ph nh: ! !(7<9) c gi tr l 1 Php v: && Php hoc: || Ton hc: -4 x 9
7

Lp trinh C

Ngn ng C:

(x<=9 )&& (x>=-4)

d) Kiu chuyn gi tr: * Din ra mt cch t ng Vi d: int i = 11.0/3 chuyn t thc sang nguyn v gn vo i (i=3) * Dng php gp kiu: i = (int) 11.0/3; trong C i = int (11.0/3); trong C++ Mu: (type) biu thc; trong C type (biu thc); trong C++ vd: i = (int) 1.6*10 10 i = (int) (1.6*10) 16 i = int (1.6*10) 16 e) Php tng gim: bien = bien+1 + +bin gi tr bin tng ln 1 n v bin + + bien=bien-1 - -bin gi tr bin gim 1 n v bin - S khac nhau gia ++ bin va bin++ la: trong phep bin++ thi bin tng sau khi gia tri cua no a c s dung con trong phep ++bin thi bin c tng trc khi s dung. S khac nhau gia - - bin va bin - - cung nh vy. vd: int x, y; x = 4; y = + + x; y = 5, x=5 int x, y; x = 4; y = x+ +; y = 4, x=5 * Ton hng trong biu thc c th l: Hng, bin, hm hay biu thc.

BAI TP CHNG I 1. Vit chng trinh nhp vao 4 s tinh trung binh cng cua 4 s o 2. Vit chng trinh nhp vao 1 s cua h 10, i s o ra h 8 va h 16 3. Vit chng trinh nhp vao 2 s kiu int thc hin cac phep tinh s hoc vi cac yu cu sau:
8

Lp trinh C

Gan gia tri kiu int cho 1 bin kiu float Thng kiu int cho 2 toan hang kiu int Thng kiu float cua 2 toan hang kiu int Chng II:

CC LNH CA NGN NG LP TRNH C


I/ Cu lnh gn v biu thc iu kin: 1) Cu lnh gn: Lnh gan dung gan gia tri cua 1 biu thc cho 1 bin Cu phap: bin = biu thc; Vi du: x=3; CV= 2*pi*r; Chu y: Nguyn tc khi dung lnh gan la kiu cua bin va kiu cua biu thc phai ging nhau Khi 1 biu thc c gan cho mt bin thi gia tri cua no se thay th gia tri cu ma bin a lu gi trc o 2) Biu thc iu kin:

bt1 ? bt2 : bt3


bt1: l 1 iu kin c m t bi php quan h logic Khi iu kin (bt1) c gi tr ng th kt qu ca biu thc l gi tr ca bt2, ngc li l gi tr ca bt3. V d1 : s = ( a>b? a : b);a=5 b=7( a>b la sai vy s=7) Vi du 2: Lp chng trnh nhp 2 s thc t bn phm sau in ra mn hnh gi tr ln v gi tr nh. #include <stdio.h> main() { float a, b; printf(\n Nhap vao 2 so: ); scanf(%f%f,&a,&b); printf(\n So lon nhat la: %f , (a > b ? a : b)); printf(\n So nho nhat la: %f , (a < b ? a : b)); getch(); } Bai tp: Lp chng trnh nhp 4 s thc t bn phm sau in ra mn hnh gi tr ln nht v gi tr nh nht. II/ Cu lnh a d liu ra mn hnh ( ham printf): Ham printf ( nm trong th vin stdio.h) dung xut gia tri cua cac biu thc ln man hinh. Cu phap: printf(dy k t iu khin, dsch cc biu thc); * Dy k t iu khin dung quy inh kiu d liu, cach biu din, rng, s ch s thp phn...,Gm 3 loi: 1. k t \n iu khin vic xung dng. 2. Cc c t
9

Lp trinh C

%m.nf%f dng cho cc gi tr thc %mi %i %md %d dng cho cc gi tr nguyn Ch : vai tr ca i,d l nh nhau; m, n l cc s nguyn (m l rng, n l s ch s thp phn ca s thc) %f in ra gi tr thc vi 6 ch s thp phn. 3. Cc k t hin th: printf(Dien tch l: %8.2f Chu vi la %8.2f, s, c); * Danh sch biu thc la cac biu thc ma ta cn xut gia tri cua no ln man hinh,trong o : - Gm 1 hay nhiu biu thc c ngn cch nhau bng du phy. - S biu thc phi bng s c t trong dy k t iu khin. III/ a d liu ra my in: Printf(stdprn,dy k t iu khin, dsch cc biu thc); IV/ Vo d liu t bn phm ( Ham scanf): La ham cho phep oc d liu t ban phim va gan cho cac bin trong chng trinh khi chng trinh thc thi. Ham scanf nm trong th vin stdio.h Cu phap: scanf(cc c t, danh sch a ch cc bin); * c t: %d %i gi tr s nguyn %f gi tr s thc %c gi tr k t Ch : Cc c t phi vit lin tip, gia chng khng b sung g c. * Dsch a ch cc bin: - Gm 1 hay nhiu a ch bin, c ngn cch nhau bng du phy. - a ch ca bin: &tnbin - S bin v s c t bng nhau. - Th t cua cac c ta phai phu hp vi th t cua cac bin. - Chui c inh dang phai t trong cp du nhay kep ( ) Khi gp lnh scanf th my tm dng i np d liu. Cch np d liu: Gia hai gi tr ta phi a thm vo t nht mt du cch hay nhn enter. V d: sau y m t cch s dng hm scanf( ) nhp gi tr cho cc bin: #include<stdio.h> #include<conio.h> void main() { int n; long l; float f; double d; char c;
10

Lp trinh C

clrscr(); /* Xo mn hnh */ printf("Nhap gia tri cho bien int: "); scanf("%d", &n); printf("Nhap gia tri cho bien long int: "); scanf("%ld", &l); printf("Nhap gia tri cho bien float: "); scanf("%f", &f); printf("Nhap gia tri cho bien double: "); scanf("%lf", &d); printf("Nhap gia tri cho bien char: "); scanf("%c", &c); printf("\nHien thi lai:\nSo int:%d\nSo long int:%ld\nSo float:%f\ \nSo double:%f\nKi tu:%c",n, l, f, d,c); /* dng lnh di hn mt dng, dng \ */ getch(); } V/ Lnh r nhnh : 1) Lnh if: a) Dang khuyt: Cu phap: if (iu kin) iu Cu lnh kin cu lnh;
S

ngha: thc hin cu lnh th my kim tra iu kin trc, Nu iu kin ng th thc hin cu lnh lin sau iu kin, Nu iu kin sai th b qua cu lnh lin sau iu kin. b) Dang u: Cu phap: if (iu kin) cu lnh I; iu else Cu lnh I kin cu lnh II;
S
Cu lnh II

ngha: u tin iu kin c kim tra. Nu iu kin ng th thc hin cu lnh I. Nu iu kin sai th thc hin cu lnh II. Chu y: - Cu lnh la 1 cu lnh, nu co nhiu hn 1 cu lnh thi phai dung cp du ngoc nhon {.} nhom lai.
11

Lp trinh C

- Ta co th dung cac cu lnh if else lng nhau. Trong trng hp if else lng nhau thi else se kt hp vi if gn nht ma cha co else. V d 1: Nhp mt s cho bit s l s chn hay l a) Dng if dng khuyt #include <stdio.h> #include <conio.h> main() { int x; printf(/n Nhap mot so: ); scanf(%d,&x); if (x%2= = 0) printf(\n %d la so chan,x); if (x%2!= 0) printf(\n %d la so le,x); getch(); } b) Dng if dng u #include <stdio.h> #include <conio.h> main() { int x; printf(/n Nhap mot so: ); scanf(%d,&x); if (x%2= = 0) printf(\n %d la so chan,x); else printf(\n %d la so le,x); getch(); } Vi du 2: Vit chng trinh giai phng trinh bc nht AX+B=0 #include <stdio.h> void main() { float a, b; printf("\nGiai phuong trinh bac nhat AX + B = 0"); printf("\nCho biet he so A B : "); scanf("%f%f", &a, &b); if (a==0) if (b!=0) printf("Phuong trinh vo nghiem"); else printf("Phuong trinh co vo so nghiem"); else printf("nghiem cua phuong trinh tren = %f", -b/a); getch();
12

Lp trinh C

} V d 3: Vit chng trnh gii phng trnh bc hai: AX2 + BX + C =0 ( gi s a khc 0) #include<stdio.h> #include<conio.h> #include<math.h> void main() { float a,b,c,x1,x2,delta; printf("Nhap cac he so a,b,c:"); scanf("%f%f%f",&a,&b,&c); delta=b*b-4*a*c; if (delta<0) printf("Pt vo nghiem"); else if(delta= =0) printf("Pt co nghiem kep x=%.2f",-b/(2*a)); else { x1=(-b+sqrt(delta))/(2*a); x2=(-b-sqrt(delta))/(2*a); printf("Pt co 2 nghiem phan biet x1=%.2f, x2=%.2f",x1,x2); } getch(); } Bai tp: 1) Vit chng trnh nhp im Ton L Ho sau tnh im trung bnh v a ra kt qu xp loi sau: tb >=8 Gii 7 tb < 8 Kh 5 tb < 7 Tbnh tb<5 yu a) Dng IF dng b) Dng IF dng khuyt 2) Vit chng trnh tm s ln nht gia 3 s a,b,c. 2) Lnh SWITCH: Lnh switch cho php la chn mt trong nhiu trng hp C php: switch (btn) { case n1: cc cu lnh 1; [break;] case n2: cc cu lnh 2; [break;] ..................
13

Lp trinh C

case nn: cc cu lnh n;[break;] [defaut: cc cu lnh n+1;] } Ch : - btn l biu thc s nguyn. - ni l cc s nguyn ngha: - Kim tra gi tr ca biu btn trc. - Nu gi tr ca btn bng gi tr n1 th thc hin cc cu lnh 1 v kt thc khi gp lnh break. - Nu gi tr ca btn khc gi tr n1 th so snh vi gi tr n2, nu bng n2 th thc hin cc cu lnh 2 - C nh th so snh ti gi tr n. - Nu khng bng th thc hin cu lnh n+1 sau nhn defaut nu c dng. V d : Vit chng trnh nhp vo mt s nguyn dng l thng trong nm v in ra s ngy ca thng . - Thng c 31 ngy: 1, 3, 5, 7, 8, 10, 12 - Thng c 30 ngy: 4, 6, 9, 10 - Thng c 28 hoc 29 ngy : 2 - Nu nhp vo s <1 hoc >12 th in ra cu thng bo khng c thng ny #include <stdio.h> #include<conio.h> main () { int thang; clrscr(); printf("\n Nhap vao thang trong nam "); scanf("%d",&thang); switch(thang) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: printf("\n Thang %d co 31 ngay ",thang); break; case 4: case 6: case 9: case 11: printf("\n Thang %d co 30 ngay ",thang); break; case 2: printf ("\ Thang 2 co 28 hoac 29 ngay");
14

Lp trinh C

} getch();

break; default : printf("\n Khong co thang %d", thang); break;

} VI/ Lnh lp: Lp vi s ln lp bit trc (FOR) Lp vi s ln lp cha bit trc: Lnh kim tra iu kin trc khi lp (WHILE) Lnh kim tra iu kin sau khi lp (DO ....WHILE) 1) Lnh for: C php : for (khi u; iu kin tip tc; bc bin i) 1 cu lnh; Lu :
Bt u

Khi u

k tip tc

Kt thc

Cu lnh

Bc bin i

ngha : Cu lnh for c thc hin theo th t : B1 : Tnh gi tr khi u B2 : Kim tra iu kin Nu iu kin sai th thot khi lnh for Nu iu kin ng th thc hin cu lnh. B3 : Tnh gi tr ca bc bin i v quay li B2 Ch : Trong 3 phn sau for c th c nhng phn khng c g c nhng du chm phy (;) lun lun phi c.
15

Lp trinh C

vd 1: s = 0; i = 1; for ( ; i<=n; i=i+1) s = s+ i; vd 2: s = 0; i = 1; for ( ; i<=n; ) { s = s+ i; i = i+1; } vd 3: s = 0; i = 1; for ( ; ; ) { s = s+ i; i = i+1; if (i > n) break; } Vi du 4: Vit chng trnh in dy s nguyn t 1 n 10. #include <stdio.h> #include<conio.h> main () { int i; clrscr(); printf("\n Day so tu 1 den 10 :"); for (i=1; i<=10; i++) printf("%d ",i); getch(); } Vi du5: Chng trnh tnh bng nhn v in ra mn hnh nh sau:
1 1 2 3 4 5 2 3 4 5 6 7 8 9 10

1 2 3 4 5

2 4 6 8 10

3 6 9 12 15

4 8 12 16 20

5 10 15 20 25

6 12 18 24 30
16

7 14 21 28 35

8 16 24 32 40

9 18 27 36 45

10 20 30 40 50

Lp trinh C
6 7 8 9 10

6 7 8 9 10

12 14 16 18 20

18 21 24 27 30

24 28 32 36 40

30 35 40 45 50

36 42 48 54 60

42 49 56 63 70

48 56 64 72 80

54 63 72 81 90

60 70 80 90 100

#include<stdio.h>

#include<conio.h> main() { int i,j; clrscr(); for (i=1;i<=10;i++) { for (j=1;j<=10;j++) printf("%5d",i*j); printf("\n"); } getch(); } Bai tp: 1) Vit chng trnh tnh giai tha ca mt s n. 2) Vit chng trnh tnh tng cc dy s sau (nhp vo t bn phm) a. S = 1 - 2 + 3 4 + ....+ n b. S = 1+ 1/2 + ... +1/n c. S= 1 + 1/2! + 1/3! + ... + 1/n! 3) Vit chng trnh gii bi ton c: va g va ch b li cho trn 36 con, 100 chn chn Cho bit c bao nhiu g, bao nhiu ch. 4) Vit chng trnh gii bi ton c: 100 tru, trm c tru ng n nm tru nm n ba tru gi ba con 1 b Cho bit c bao nhiu tru ng, tru nm, tru gi. 5) Vit chng trnh in dy s gm n s trong dy s fibonaci. Dy Fibonaci: 1 1 2 3 5 8 13 21 ... 2) Lnh while: C php: while (iu kin) 1 cu lnh;

17

Lp trinh C

Lu :
iu kin

Thot

cu lnh

ngha: Khi gp cu lnh ny my kim tra nu iu kin ng th thc hin cu lnh ri quay ln kim tra li iu kin. Nu iu kin cn ng th thc hin li cu lnh. C lp i lp li cho n khi iu kin sai th ngng thc hin vng lp. V d1: Vit chng trnh nhp vo mt s nguyn n. Tnh tng cc s nguyn t 1 n n #include <stdio.h> #include<conio.h> main () { int n,i,tong; clrscr(); printf("\n Nhap vao so nguyen duong n:"); scanf("%d",&n); tong=0; i=1; while (i<=n) { tong+=i; i++; } printf("\n Tong tu 1 den %d =%d ",n,tong); getch(); } Vi du 2:Vit chng trinh in day s fibonaci #include <stdio.h> void main() { int n, i, fib1 = 1, fib2 = 1, fib = 2; printf("\nNhap gia tri N : "); scanf("%d", &n);
18

Lp trinh C

printf("%d %d ", fib1, fib2); while (fib1+fib2 < n) { fib = fib1 + fib2; printf("%d ", fib); fib2 = fib1; fib1 = fib; } getch(); } Bi tp: 1) Cng hai phn s. 2) Nhp mt s cho bit s c thuc dy fibonaci hay khng? 3) Lnh do while: C php: do cc cu lnh; while (iu kin); Lu :
Cc cu lnh

iu kin

S Thot

Cng dng: Cc cu lnh c thc hin trc sau kim tra iu kin Nu iu kin sai th thot khi lnh do... while Nu iu kin ng th thc hin cc cu lnh ri quay li kim tra iu kin tip V d: Vit chng trnh in ra dy s nguyn t 1 n 10 #include <stdio.h> #include<conio.h> main () { int i; clrscr(); printf("\n Day so tu 1 den 10 :"); i=1; do
19

Lp trinh C

} Bai tp: Vit chng trnh nhp mt cc s nguyn vo t bn phm cho n khi gp s 0. Tnh tng cc s dng va nhp. a kt qu ra mn hnh.

printf("%d ",i++); while (i<=10); getch();

VII/ Mt s lnh iu khin con tr v bt phm:


1. Di chuyn con tr: gotoxy (x, y); di chuyn con tr n to (x,y) trn mn hnh. 1 x 80 ct; 1 y 25 hng 2. Xo mn hnh: clrscr(); 3. getch(); dng bt phm. 4. delay(m); my dng tm thi m mili giy (dng to hnh nh ng). sleep(n) dng n giy. 5. Hm kim tra c bt phm hay khng kbhit() ng cho gi tr khc 0; khng bt phm cho gi tr = 0. 6. Hm to s ngu nhin: random(n) cho mt s ngu nhin c gi tr t 0 n n-

1.

20

Lp trinh C

Chng III: HM V CU TRC CHNG TRNH


I/ Khi nim chng trnh con: Ngn ng lp trnh C ch c duy nht mt loi chng trnh con l hm. Hm chia cc bi ton ln thnh cc bi ton nh hn, gip thc hin cc cng vic lp i lp li no nhanh chng m khng phi vit li chng trnh, ngoi ra cn d kim tra, g ri v lm sng sa chng trnh. Th t cc hm trong chng trnh l bt k, song chng trnh bao gi cng c thc hin t hm main() II/ Khai bo hm: 1) Kiu hm: void : hm khng tr v gi tr no (Khng dng c trong biu thc) int, float, char, ... kiu gi tr ca hm

2) Khai bo trc: Kiu hm tnhm(kiu cc i s); V d: Tm s ln nht ca hai s nguyn. int ln2so(int x, int y); int ln2so(int, int); Khai bo trc nm trn hm main() 3) Xy dng hm: Dng tiu Thn ca hm - Dng tiu : + Gn ging nh khai bo trc nhng khng c du chm phy (;) pha sau + Bt buc phi ch ra tn cc i v cc i ny s c s dng trong thn ca hm. - Thn hm: + Lun lun to thnh mt khi m u bng du{ v kt thc bng du} + tr v ni gi trong thn hm c th s dng cu lnh return (gp lnh return th thot khi hm). c 2 dng return return; (khng c biu thc) khng mang gi tr tr v, dng cho hm void return (biu thc); hay return biu thc; c mang gi tr tr v. vd: int ln2so(int x, int y) { return (x>y?x:y); } hay int ln2so( x, y) int x, y; { return (x>y?x:y); }
21

Lp trinh C

III/ S dng hm: Thng qua li gi Cu trc li gi tn hm(danh sch cc tham s tht s tng ng vi cc i ca hm); Ch : - S tham s tht s v i s phi bng nhau. - Th t cc tham s tht s tng ng th t cc i. - Gi tr ca tham s tht s phi c xc nh. Ghi ch: i ca hm cng c xem l bin cc b nn phm vi s dng ca chng ch trong hm nn khng nh hng g ti nhng i hoc mng cng tn ca nhng hm khc. IV/ Bin ton cc v bin a phng: 1. Bin ton cc: L nhng bin c s dng mi ni trong chng trnh. Bin ton cc c khai bo bn ngoi hm k c hm main(). Cc bin ton cc tn ti trong sut thi gian chng trnh hot ng. Cc bin tnh ny c khi to bng 0 khi khi u chng trnh tr trng hp ta t khi to gi tr cho chng. Bin ton cc c dng trong tt c thn cc hm v hm no cng c th thay i c gi tri ca n. V vy vi nhng bi ton ln do bin ton cc c th thay i t do gi tr ca n nn kh kim sot cc bin trong chng trnh. iu ny cn trnh trong khi lp trnh. 2. Bin a phng: L bin ch c gi tr khi trong thi gian hm hot ng. Bin a a phng c khai bo trong hm. Bin a phng ch hn ch trong hm n khai bo. N khng co mi lin h no vi bin ton cc c cng tn v cng kiu. C hai dang bin a phng: Bin a phng t ng Bin a phng tnh + Bin a phng t ng: Bin c cp pht t ng khi hm c gi v mt i khi hm kt thc. Khng lu gi kt qu cho cc ln sau. Cc tham s cho hm cng l bin a phng + Bin a phng tnh: Khai bo bin thm t kho static vo trc. vd: static int i; Bin ny c cp pht mt v tr c nh, tnh ti lun lun c dng cho hm. Gi tr ca bin ny c th tn ti ngay sau khi hm kt thc. Bin ny c khi to c gi tr bng 0 khi dng ln u. V/ Nguyn tc lm vic ca hm: Khi gp mt li gi hm trnh t lm vic s xy ra nh sau: 1. My s cp pht b nh cho cc i v cc bin cc b ca hm. 2. Gi tr ca cc tham s thc s s truyn cho cc i tng ng, trng hp ny i l bn sao ca cc tham s. Sau trong thn hm s lm vic trn cc bn sao cn bn chnh l tham s thc s khng ng n. V vy nu c thay i gia tr cc tham s trong hm th gi tr ca cc tham s thc vn khng thay i.
22

Lp trinh C 3. Thc hin cc cu lnh trong thn ca hm. Vic thot khi hm din ra khi gp mt

cu lnh return hoc sau khi thc hin cu lnh cui cng trong thn hm. Trc khi tr v (thot khi hm) my s gii phng tt c vng nh cho cc i cng nh bin cc b c ngha chng khng tn ti na, nn khng dng c bn ngoi hm. Nu tr v bng cu lnh return (biu thc); th gi tr ny c th c s dng trong cc biu thc vi t cch l gi tr ca hm. Ch : Bt k li gi hm no cng c th ng vi t cch c lp, m khng cn t trong biu thc no, k c nhng hm c gi tr tr v. V d1: Xy dng hm hon v gi tr ca 2 bin nguyn. Trong hm main() yu cu hon v 2 s. #include <stdio.h> #include <conio.h> void hoanvi(int x, int y); main() { int a, b; printf(\n Nhap 2 so :); scanf(%d%d,&a,&b); printf(Hai so khi chua hoan vi:); printf(a = %d va b = %d,a, b); hoanvi(a,b); printf(Hai so khi da hoan vi:); printf(a = %d va b = %d,a, b); getch(); } void hoanvi(int x, int y); { int tg; tg = x; x = y; y = tg; } Vi du 2: vit chng trinh co 1 ham kim tra n nhp t ban phim co phai la s nguyn t hay khng? #include<stdio.h> #include<conio.h> #include<math.h> #define true 1 #define false 0 int kiemtra(int n) { int i,k; k=1; do { k++; }
23

Lp trinh C

while(n%k!=0); } main() { int n,t; clrscr(); printf("nhap n="); scanf("%d",&n); t=kiemtra(n); if (t==true) printf("%d la so nguyen to",n); else printf("%d khong fai la so nguyen to",n); getch(); } VI/ qui: Hm c th c li gi ca chnh n. Tnh cht ny c gi l tnh qui. Khi hm gi quy n chnh n, th mi ln gi my s to ra mt tp cc bin cc b mi c lp vi tp bin cc b c gi ra trong cc ln gi trc V d: Tnh giai tha ca mt s n 1 nu n = 0 Trng hp kt thc qui n! = n x (n-1)! nu n>0 double gthua(int n) { if (n=0) return 1.0; else return n*gthua(n-1); } V d: Hm tnh s th n trong dy Fibonaci 1 nu (n =1) hoc (n=2) Trng hp kt thc qui Fibo(n) = Fibo(n-1)+Fibo(n-2) long Fibo(int n) { if (n=1||n=2) return 1; else return (Fibo(n-1)+Fibo(n-2)); } qui chnh l vng lp. Cc bi ton qui nu dng c vng lp th ta nn dng vng lp thay cho qui. Nhc im ca qui: mi ln gi qui my thc hin 4 bc trong nguyn tc thc hin mt hm.
24

Lp trinh C

V d: hm c 10 i v bin cc b, gi s c 50 ln gi qui c 50x10 ln cp pht b nh trn b nh.


1)

2)
3)

4) 5)

BI TP CHUNG Xy dng hm tnh din tch hnh trn. Vit 1 ham kim tra s n co phai la s chinh phng hay khng? Xy dng cc Hm tnh tng cc ch s ca s nguyn dng. Hm m s nguyn dng c bao nhiu ch s Hm kim tra mt s c phi s nguyn t hay khng. Trong hm main() nhp n in cc s nguyn t t 1 n n. Hm tm c s chung ca hai s nguyn dng. Trong hm main() thc hin cng vic cng hai phn s kt qu cui cng l mt phn s c rt gn. ------------------------

25

Lp trinh C

Chng IV:

CON TR
I/ Cc khi nim lin quan n bin: Bin con tr khng cha d liu m ch cha a ch ca d liu hay cha a ch ca nh cha d liu a ch ca bin : Khi gp mt khai bo, bin s c cp pht mt vng nh l mt s byte lin tip nhau. S th t byte u ca vng nh l a ch Kch thc ca bin con tr khng ph thuc vo kiu d liu, lun c kch thc c nh l 2 byte II/ Khai bo bin con tr: C php: < Kiu> * <Tn con tr> Thm du * vo trc tn bin khi khai bo. V d: int a, b , *p1, * p2; float x, y, *fx, *fy; p1, p2 l 2 bin con tr nguyn, dng cha a ch ca bin nguyn. fx, fy l 2 bin con tr thc, dng cha a ch ca bin thc. V d: p1 = &a; p2 = p1 fx = &b php gn hp l. (cng kiu nguyn) p1, p2 u tr ti bin a. khng c

III/ S dng bin thng qua a ch: Ton t dng nh v con tr n a ch ca 1 bin ang lm vic. C php: <Tn bin con tr> = <Tn bin> V d: Gn a ch ca bin a cho con tr pa, gn a ch ca bin b cho con tr pb. pa=&a; pb=&b.
26

Lp trinh C

truy cp n ni dung ca nh m con tr ch ti, ta s dng c php: *<Tn bin con tr> Vi cch truy cp ny th *<Tn bin con tr> c th coi l mt bin c kiu c m t trong phn khai bo bin con tr. Lu : Khi gn a ch ca mt bin cho mt bin con tr, mi s thay i trn ni dung nh con tr ch ti s lm gi tr ca bin thay i theo (thc cht ni dung nh v bin ch l mt). V d: Xy dng hm hon v gi tr ca 2 bin nguyn. Trong hm main() yu cu hon v 2 s. #include <stdio.h> #include <conio.h> void hoanvi(int *x, int *y); main() { int a, b; printf(\n Nhap 2 so :); scanf(%d%d,&a,&b); printf(Hai so khi chua hoan vi:); printf(a = %d va b = %d,a, b); hoanvi(&a,&b); printf(Hai so khi da hoan vi:); printf(a = %d va b = %d,a, b); getch(); } void hoanvi(int *x, int *y); { int tg; tg = *x; *x = *y; *y = tg; } IV/ Dng con tr cp pht b nh ng: Bin ng: l cc bin c to ra lc chy chng trnh, tu theo nhu cu. Do vy m s bin ny khng c xc nh t trc. Cc bin ng khng c tn. Vic to ra bin ng hay xo n i c thc hin nh c cc hm nh malloc() , calloc() free() c sn trong th vin stdlib.h. Cc bin con tr c nh ngha nh bin tnh v c dng cha a ch ca cc bin ng. V d: Gi s ta c khai bo: int a, *pa, *pb;
27

Lp trinh C

pa = (int*)malloc(sizeof(int)); /* Cp pht vng nh c kch thc bng vi kch thc ca mt s nguyn */ pb= (int*)calloc(10, sizeof(int)); /* Cp pht vng nh c th cha c 10 s nguyn*/ -----------------

Chng V:

D LIU KIU MNG


Mng l mt tp hp cc phn t c nh c cng mt kiu, gi l kiu phn t. Kiu phn t c th l c cc kiu bt k: k t, s, chui k t; cng c khi ta s dng kiu mng lm kiu phn t cho mt mng (trong trng hp ny ta gi l mng ca mng hay mng nhiu chiu). Ta c th chia mng lm 2 loi: mng 1 chiu v mng nhiu chiu. I/ Mng 1 chiu: 1. Khai bo: Kiu d liu phn t Tnmng[s phn t ca mng]; -

khai bo mng ta vn dng kiu nh khai bo bin Trong mt khai bo c th va khai bo mng, va khai bo bin Ch s mng lun lun nh t 0 Mun lm vic vi tng phn t mng ta gi qua tn mng v ch s ca n theo c php: Tnmng[ch s]

V d 1: 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 int A[5] // Khai bo mng A gm ti a 5 phn t nguyn.

V d 2: Khai bo v gn gi tr cho mng #include <conio.h> #include <stdio.h> void main ( ) { clrscr ( );
28

Lp trinh C

int a[4] = {5,9,3,8}; for (int i = 0; i < 4 ; i++) printf ( a [ %d ] = %d \n, i , a[i] ); getch ( );
}

V d 3: 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]); } void main ( ) { int a[10], i; nhap_mang(a,n); xuat_mang(a,n); getch ( ); } V d 4: 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; } V d 5: Vit hm sp xp mng theo th t tng dn. void HoanVi (int &a, int &b) {
29

Lp trinh C

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]); } II/ Con tr v mi lin h vi mng : int a[10], *pa; a: l tn mng c ngha biu th gi tr u ca mng, chnh l a ch u ca phn t a[0]. pa = a; hp l pa = a[0] khng hp l 1. Ly a ch cc phn t mng: &a[i] 2. Truy cp ti phn t mng thng qua con tr: gi s pa = a; th pa[i] a ch ca phn t th i. V d: Lp hm tm gi tr nh nht v ln nht ca mt dy s thc: void lon_nho(float a[], int n, float *lon, *nho) { int i; lon=nho=a[1]; for (i=2; i<=n; i = i+1) { if (*lon< a[i]) *lon = a[i]; if (*nho> a[i]) *nho = a[i]; } } III/ Mng nhiu chiu: Mng d liu c th c nhiu chiu Khai bo mng hai chiu: Kiu d liu phn t Tnmng[s phn t ][s phn t]; Lm vic vi tng phn t ca mng hai chiu: Tnmng[ch s1][ch s2] Khi gn gi tr cho Mng 2 chiu: C1: int a[10][3] = {
30

Lp trinh C

{2, 4, 6}, {1, 4, 8}, {5, 7, 9} }; khi gn 3 dng C2: int a[] [3] = { { }, { } }; s dng c xc nh bng s dng khi to. Khai bo mng n chiu: Kiu d liu phn t Tnmng[s phn t 1][s phn t2]...[s phn t n]; Lm vic vi tng phn t ca mng n chiu: Tnmng[ch s1][ch s2]...[ch s n] V d: Vit chng trnh nhp, xut, v tm phn t nh nht ca mng 2 chiu. #include<stdio.h> #include<conio.h> main() { int i,j,m,n,min, a[m][n]; printf(" Nhap kich co cua mang: "); scanf("%d %d",&m,&n); printf(" \nnhap mang: "); for(i=0;i<m;i++) for(j=0;j<n;j++) scanf("%d",&a[i][j]); printf(" \n in man hinh: \n"); for(i=0;i<m;i++) { for(j=0;j<n;j++) printf(" %d ",a[i][j]); printf("\n"); } min = a[0][0]; for(i=0;i<m;i++) for(j=0;j<n;j++) if(a[i][j]<min) min = a[i][j]; printf(" \n so nho nhat la: %d ",min) getch(); }

Bi tp
1) 2) 3)
4)

Vit hm tnh tng cc phn t chn trong mng Vit hm xo phn t c gi tr ln nht trong mng Vit hm chn phn t c gi tr X vo v tr u tin ca mng Vit chng trnh tch 1 mng cc s nguyn thnh 2 mng a v b, sao cho mng a
31

Lp trinh C

5)

cha ton s l v mng b cha ton s chn Vit chng trnh nhp, xut, v tm v tr ca phn t ln nht ca mng 2 chiu. ------------

Chng VI:

D LIU KIU XU K T
I. Khi nim:
Xu 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

II. Khai bo xu k t:
char tnbin[n]; char *tnbin; V d: char chuoi[25];

ngha khai bo 1 mng kiu k t trn 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 ) Xu k t c cu trc mng, V vy xu k t cng chnh l hng a ch biu th phn t th nht ca mng. Mng kiu char thng dng cha mt dy k t nhp vo t bn phm vi lnh

III. Cc thao tc trn xu:


1. Nhp xu S : 2. Xut xu S : Xut xu S ra mn hnh. V d: void main() { char chuoi[80]; printf("Nhap vao chuoi:"); gets(chuoi); printf("Chuoi vua nhap la:);
32

gets(S); puts(S);

Nhp cc k t t phm cho n khi nhn phm Enter .

Lp trinh C

puts(string); getch(); } 3. Cc hm th vin (string.h) a) strlen(s) : Tr v di ca xu s. V d : char *s = "cuoc doi la mot chuong trinh co qua nhieu loi"; printf("Do dai s: %d", strlen(s)); Kt qu: V d : Do dai s: 45 b) strcpy(s1,s2 ) : Sao chp ni dung chui s2 vo chui s1. char dest[10]; char *src = "hay giu tam sang"; strcpy(dest, src); puts(dest); Hay giu tam sang

Kt qu:

c) 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 = "duc tai"; strncpy(dest, src, 3); puts( dest); Kt qu: duc d) strcat( s1, s2) : Ni chui s2 vi chui s1. V d : char *s1 = Khoa ; char *s2 = "CNTT"; strcat(s1, s2); puts( s1); Kt qu: Khoa CNTT e) 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 f) 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.
33

Lp trinh C

V d :

char *s1 = abcd; char *s2 = "abCD"; if(strcmp(s1, s2)==0) printf("Giong nhau"); else printf(Khac nhau); Kt qu: Khac nhau

g) strncmp(s1,s2, n) : Tng t nh strcmp, nhng ch so snh n k t u tin ca 2 chui h) stricmp(s1, s2) : Tng t nh strcmp, nhng khng phn bit ch hoa hay thng. k) strnicmp(s1, s2, n): Tng t nh stricmp, nhng ch so snh n k t u ca 2 chui l) 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: m) strtok(s1, s2) : 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); }
34

Ky tu m tai: 8

Lp trinh C

Kt qu: V d

S11: abc

S12: d

Lu : Cch truy xut cc k t tng t nh mng mt chiu. Nhp vo mt chui k t, xut ra mn hnh chui b o ngc th t cc k t. V d: Nhp vo: KhoaiennganhCNTT. Xut ra mn hnh: TTNChnagnneiaohK #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); printf("\nKet qua sau khi dao nguoc chuoi: ") puts( s2); getch(); }

IV. Mt s hm chun x l xu k t:
toupper(k t) chuyn mt k t thnh ch hoa (ctype.h) tolower(k t) chuyn mt k t thnh ch thng atoi(str) atol(str) atof(str) (ctype.h)

chuyn i xu ch s thnh mt s int (stdlib.h) chuyn i xu ch s thnh mt s long (stdlib.h) chuyn i xu ch s thnh mt s float (stdlib.h)

Bai tp
1) Nhp mt chui (xu) i chui thnh ch hoa. 2) Nhp mt chui (xu) i chui thnh ch thng 3) Nhp mt chui, i chui thnh ch hoa u t 4) Nhp mt chui v 1 t cho bit t xut hin trong chui bao nhiu ln.

35

Lp trinh C

Chng VII:

D LIU T NH NGHA D LIU KIU CU TRC


I. D liu t nh ngha:
1. Kiu lit k: Trong trng hp ta mun t nh ngha ly kiu d liu bng cch lit k ra tt c tn cc gi tr m ta mun c. iu ny c th thc hin c vi kiu lit k c t kha enum. enum tnkiu {danh sch lit k}; nh ngha kiu d liu. enum kiu bin; khai bo bin vi kiu d liu nh ngha. V d: enum cauvong{do, cam, vang, luc, lam, cham, tim}; enum cauvong chon; if (chon==tim) printf(trong day cau vong chon mau tim); V bn cht dy tn m ta lit k ra tng ng vi dy s t nhin bt u t 0. Ngha l nu mu c s th t l 0, cam l 1, .. Lnh in printf(%s %d,do,lam); 0 4 Nhc im ca kiu lit k l khng c trc tip v ghi ra gi tr trc tip cc gi tr ca n. 2. nh ngha kiu typedef: typedef kiud liu tnkiu; nh ngha kiu d liu V d: typedef int songuyen; songuyen x;

II. D liu kiu cu trc:


1. Khi nim v nh ngha: C php: struct tnkiu { //khai bo cc thnh phn ca cu trc; }; Cch khai bo cc thnh phn ca cu trc cng tun theo nh cch khai bo thng thng. Thnh phn cu trc c th: bin, mng, cc cu trc mng khai bo trn. v d: typedef struct ngay { int ng, th, n; }; typedef struct svien {
36

Lp trinh C

char ten[25],lop[5]; float dtb; }; typedef struct canbo { char ten[25], donvi[3]; float luong; ngay ngsinh; } 2. Khai bo kiu cu trc: a) Khai bo trc tip struct svien { char ten[25],lop[5]; float dtb; }sv; khai bo 1 bin sv kiu cu trc svien Ta phi phn bit tn ca kiu cu trc v tn ca bin cu trc. svin sv b) Khai bo qua nh ngha trc typedef struct svien { char ten[25],lop[5]; float dtb; }; svien sv; khaibo bin sv kiu d liu svien (kiu d liu svien c nh nghi) 3. Lm vic vi thnh phn ca cu trc: lm vic vi tng phn t ca cu trc ta gi qua tn cu trc v tn thnh phn theo c php sau: Tncu trc.tnthnhphn sv.ten sv.lop sv.dtb V d: Vit chng trnh nhp v in ra mn hnh 1 sinh vin gm cc thnh phn tn, lp, tb. 4. Khai bo mng cc cu trc: Cch khai bo cng tun theo nh khai bo mng thng thng. Thng khai bo mng cu trc vi 1 danh sch nh: danh sch sinh vin, danh sch bn hng, ... V d: Vit chng trnh :nhp v in mt danh sch n hc sinh vi cc thnh phn tn, tb, lp. Sau sp xp tb theo th t tng dn v in danh sch sp xp ra mn hnh. 5. Chuyn tham s cu trc cho hm: V d: Vit chng trnh :nhp v in mt danh sch n hc sinh vi cc thnh phn tn, tb, lp. Sau sp xp tb theo th t tng dn v in danh sch sp xp ra mn hnh. Cc cng vic nhp danh sch, in danh sch, sp xp danh sch c thc hin cc hm.

6. Con tr cu trc:
37

Lp trinh C

C cng cho s dng con tr tr ti struct cng nh cc con tr tr ti cc kiu d liu khc. V d: Cho mt lp hc gm n hc sinh (n 50). 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). 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: ); scanf(%c, &d.ngay); printf(\nNhap vao thang: ); scanf(%c, &d.thang); printf(\nNhap vao nam: ); scanf(%d, &d.nam); } void XuatNamSinh(DATE d) { printf(%2c / %2c / %4d, d.ngay, d.thang, d.nam); } void Nhap1HS(HOCSINH &hs) { float d; 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: );
38

Lp trinh C

gets(hs.diachi); printf(\nPhai: ); gets(hs.phai); printf(\nNhap vao diem trung binh: ); flushall(); 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: ); puts(hs.MSHS); printf(\nHo ten hoc sinh:); puts( hs.hoten); printf(\nNgay thang nam sinh: ); XuatNamSinh(hs.ngaysinh); printf(\nDia chi: ); puts( hs.diachi); printf(\nPhai:) puts( hs.phai); printf(\nDiem trung binh: %2.2f, hs.diemtb); } 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 } } int DemHSLenLop(HOCSINH lh[], int n) { int d=0; for(int i=0; i<n; i++) if(lh[i].diemtb>=5.0)
39

Lp trinh C

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(); } BI TP: 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. Nhp vo tn ca sinh vin. Tm v in ra cc thng tin lin quan n sinh vin (nu c). --------------------------

40

Lp trinh C

Chng VIII:

D LIU KIU FILE


I. 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). II. 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 r+ 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). 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


41

Lp trinh C

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. fclose ( < bin con tr tp tin > ) ; V d : fclose (f) ; hoc fcloseall () ;

-------------------

42

Lp trinh C

Bai tp:
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.

43

Lp trinh C

MUC LUC
VIII/ Cc i lng dng trong lp trnh:.......................................................................................4

44

You might also like