Professional Documents
Culture Documents
L p trnh C
Ti li u ny chng ti bin so n nh m m c ch h tr cc b n h c vin trong qu trnh ti p thu bi gi ng mn h c "L p trnh C". Th c ra c th g i chnh xc hn l L p trnh C trong mi tr ng C++, v mi tr ng chng ta s d ng l C++, v cc l nh cng khng hon ton l c a C m c s d ng c php c a C++ khi c n thi t; th m ch chng 13 ni v tnh ng gi, th a k v a hnh l c a C++ (chng ti vi t chng ny ch y u cc b n tham kh o v t tm hi u). Chng ti mu n nh n m nh r ng ti li u ny ch h tr cc b n, ch khng thay th bi gi ng v cc v n c trnh by m t cch tm t t, cn nhi u i u cha c gi i thch y , n u ch c m khng nghe gi ng th r t kh hi u. V d khi trnh by c php cc l nh th d u [ ] hm l nh ng g n m gi a hai d u ny l khng b t bu c, cn nh ng g n m gi a 2 d u < > l i l b t bu c ph i c. Tuy nhin d u [] l i c dng bao cc ch s trong m t m ng. V d a[i][j] l ph n t hng i, c t j c a m t m ng a 2 chi u Trong qu trnh gi ng d y chng ti s d a vo s ti p thu c a cc b n a ra cch gi i thch v cc v d minh h a ph h p. Chng ti lun s n sng l ng nghe cc ki n ng gp c a cc b n v ti li u cng nh bi gi ng, s h p tc gi a gio vin v h c vin ngy cng hi u qu hn.
1.1. Ngn ng l p trnh v thu t ton .......................................................................................... 1 1.1.1. Ngn ng l p trnh ......................................................................................................... 1 1.1.2. Thu t ton (Algorithm) .................................................................................................. 2 1.1.3. S ra i v pht tri n c a ngn ng C .......................................................................... 2 1.2. Cc ph n t c b n trong ngn ng C ................................................................................. 3 1.2.1. B k t (character set) .................................................................................................. 3 1.2.2. Cc t kha (key words, reserved words) ....................................................................... 3 1.2.3. Tn v cch t tn (identifier)....................................................................................... 3 1.2.4. L i gi i thch (comment) ............................................................................................... 3 1.2.5. M t vi chng trnh C n gi n ................................................................................... 3 1.3. C u trc chng trnh trong C ............................................................................................ 4 1.3.1. Cc thnh ph n c a m t chng trnh C........................................................................ 4 1.3.2. So n th o v ch y m t chng trnh C .......................................................................... 4
Chng 2. H ng, bi n v m ng ...................................................................................................................... 8
2.1. Cc ki u d li u c s ......................................................................................................... 8 2.2. H ng ................................................................................................................................... 9 2.3. Ki u enum ..................................................................................................................... 10 2.4. Bi n ............................................................................................................................... 11 2.5. M ng v chu i .............................................................................................................. 12 2.6. nh ngha ki u b ng typedef ........................................................................................ 13 2.7. Kh i l nh ....................................................................................................................... 13 2.8. Vi nt v hm v chng trnh ..................................................................................... 13 2.9. Bi n, m ng t ng ....................................................................................................... 13 2.10. Bi n, m ng ngoi ......................................................................................................... 14 2.11. Ton t sizeof .............................................................................................................. 15 2.12. Bi n tnh, m ng tnh .................................................................................................... 15
Chng 3. Bi u th c ...................................................................................................................................... 16
3.1. 3.2. 3.3. 3.4. 3.5. 3.6. 3.7. 3.8. 3.9. 4.1. 4.2. 4.3. 4.4. 4.5. 4.6. 4.7. 4.8. 4.9.
Khi ni m bi u th c(expression).................................................................................... 16 Php ton s h c ............................................................................................................ 16 Cc php thao tc bit...................................................................................................... 16 Cc php ton quan h v logic ...................................................................................... 16 Php chuy n i ki u gi tr ........................................................................................... 16 Php ton tng gi m ...................................................................................................... 16 Cu l nh gn v bi u th c .............................................................................................. 16 Bi u th c i u ki n ........................................................................................................ 16 Th t u tin cc php ton .......................................................................................... 17 Hm printf ..................................................................................................................... 18 Hm scanf ..................................................................................................................... 19 a ra my in- hm fprintf ............................................................................................ 20 Dng vo stdin v cc hm nh p d li u ........................................................................ 21 Nh p /xu t s li u cho chu i v k t ............................................................................ 22 M t s hm x l chu i ................................................................................................. 22 S khc bi t gi a m ng v chu i ................................................................................... 23 Cc hm vo ra v d ch chuy n v tr trn mn hnh ....................................................... 24 Cc lu ng nh p xu t cin,cout ........................................................................................ 24
Chng 4. Vo ra .......................................................................................................................................... 18
11.1. Khi ni m v h a .................................................................................................... 55 11.2. phn gi i mn hnh h a ..................................................................................... 56 11.3. V hnh trong mn hnh h a .................................................................................... 57 11.4. t mu n n, mu v , mu t ....................................................................................... 57 11.5. V m t s ng v hnh c b n .................................................................................. 58 11.6. C a s (viewport) ........................................................................................................ 60 11.7. X l vn b n trn mn hnh h a............................................................................. 63 11.8. T o hnh nh chuy n ng ............................................................................................ 65
Chng 12. m thanh, m nh c .................................................................................................................. 67 Chng 13. Tnh ng gi, th a k v a hnh........................................................................................... 69
13.1. M u ........................................................................................................................ 69
Cu h i v bi t p n t p chu n b cho thi h t mn ................................................................................... 73 Ph l c. Cc chng trnh m u ................................................................................................................... 85
V d : Thu t ton Euclid: Tm c s chung l n nh t c a hai s t nhin m,n. Input: m,n nguyn dng Output: g l c s chung l n nh t c a m v n Phng php: 1. r= m mod n 2. N u r=0 th g:=n Ng c l i (r>0) m:=n; n:=r v quay l i b c 1. 1.1.3. S ra i v pht tri n c a ngn ng C Nm 1970 Ken Thompson sng t o ra ngn ng B dng trong mi tr ng h i u hnh UNIX trn
L p trnh C v C++ - Chng 1. T ng quan v C v C++
1.2.1. B k t (character set) 1.2.2. Cc t kha (key words, reserved words) Cc t kha thng d ng trong C auto break base char continue default do double else extern float for goto if int long register return short sizeof static struct switch typedef union unsigned void public while volatile
1.2.3. Tn v cch t tn (identifier) i v i C, m i tn c n ph i khai bo tr c khi s d ng. Tn ta dy cc k t li n nhau, b t u b ng k t ho c d u g ch d i, ti p theo l cc k t , cc s ho c d u g ch d i. Ch : Tn khng ch a d u cch. C phn bi t ch hoa v ch th ng. 1.2.4. L i gi i thch (comment) L i gi i thch t m t vi tr n cu i dng: // L i gi i thch trn m t ho c nhi u dng: /* */ 1.2.5. M t vi chng trnh C n gi n Chng trnh C n gi n nh t ch y khng bo l i: Khng lm g c void main() { } Hi n cu cho //002CHAO1.cpp Hien cau chao tren man hinh #include <stdio.h> void main() {printf("\nTurbo C xin chao ban"); } Xa mn hnh r i hi n cu cho
#include <stdio.h> #include <conio.h> void main() L p trnh C v C++ - Chng 1. T ng quan v C v C++
M t s hm c b n v cc t p bao hm tng ng: T p bao hm stdio.h conio.h math.h stdlib.h ctype.h string.h
iostream.h iomanip.h
1.3.2. So n th o v ch y m t chng trnh C a. So n th o chng trnh M i cu l nh c a C c th vi t trn m t dng hay nhi u dng nhng ph i k t thc b ng d u ; Tuy nhin khi nh p m t chu i k t m mu n chuy n sang dng khc ta ph i thm d u \ tr c khi xu ng dng.
L p trnh C v C++ - Chng 1. T ng quan v C v C++
Unknown preprocessor directive Ch th ti n x l khng ng. Trong tr ng h p ny b n ph i xem l i cc l nh #include xem b n c vi t sai khng.
Declaration terminated incorrectly Khai bo k t thc khng ng. V d b n nh d u ; sau hm main nh sau: void main(); ch ng h n. Nn lu l sau tn hm khng c nh d u ; nh trn y. Sau tn hm ph i l d u { v k t thc hm l d u }.
Declaration syntax error Khai bo sai. V d b n vi t int a,b printf("Chao"); th my bo l i dng th 2. S d nh v y l v khi c qua dng th nh t khng c d u ; my cho r ng l nh cha k t thc v cn chuy n ti p sang dng th 2. Tuy nhin sang dng th 2 th my l i th y l nh khng ph h p nn bo l i dng ny. Cch vi t trn y tng ng v i cch vi t:
L p trnh C v C++ - Chng 1. T ng quan v C v C++
Undefined symbol B n s d ng m t bi n no m cha khai bo. V d b n cha khai bo bi n n nhng l i s d ng trong l nh: printf("%d",n); ch ng h n th my bo l Undefined symbol 'n'
Function ... should have a prototype V d trong l nh trn b n vi t sai l prinf("%d",n); th my bo l nguyn m u. Function 'prinf' should have a prototype. Ngha c a cu ny l: hm prinf c n ph i c
Hai lo i l i trn y c thng bo ngay khi d ch chng trnh thnh file *.obj
L p trnh C v C++ - Chng 1. T ng quan v C v C++
C v C++
2.1. Cc ki u d li u c s
C c m t s ki u d li u c s nh sau: Ki u char (signed char) unsigned char int long unsigned int unsigned long float double long double
1. Ki u char
Mi n xc nh -128 127 0 255 -32 000 32 000 -2 t 2 t 0 65 000 04t 3.4e-38 3.4e+38 1.7e-308 1.7e+308 3.4e-4932 3.4e+4932
Kch th c(byte) 1 1 2 4 2 4 4 8 10
M t gi tr ki u char chi m m t byte v c bi u di n m t k t tng ng trong b ng ASCII. Khc v i Pascal, trong C gi tr c a bi n char c th c hi u l s . Th d n u ta khai bo char ch; th c hai cch gn ch=65 hay ch='A' cng cho m t k t qu . Khi hi n th ch n u ta dng khun d ng "%d" th c gi tr 65, cn dng khun d ng "%c" th c k t A. B ng sau y cho s khc bi t gi a char v unsigned char.
M ASCII 0 Gi tr bi n ki u char 0 Gi tr bi n ki u unsigned char 0 1 1 1 ... ... ... 127 127 127 128 -128 128 129 -127 129 ... ... ... 254 255 -2 -1 254 255
N u ta khai bo m t bi n ch c ki u k t b ng l nh char ch; v sau gn ch=200 th th c ch t ch ch nh n gi tr -56, do php th ch= = 200 s cho k t qu sai. Ni chung, c th th y r ng n u ta dng l nh gn ch=n , trong 0n255, sau dng l nh printf(%d,ch) in gi tr c a k t ch th n u n u n 127 ta s th y gi tr n trn mn hnh, cn n u 128 n 255 th ta s th y gi tr -(255-m+1) . Phn lo i k t : Cc k t c th phn lm 3 nhm: 0-31,32-126, 127-254; trong cc k t t t i u khi n, khng th nhn th y trn mn hnh. Ch :Trong chng trnh m t k t ph i c bao trong d u nhy n. Th d s cho ta ch=49, cn ch=1 l i cho ta ch bi u di n k t coa m ASCII l 1.
2. Ki u nguyn
0 n 32 l cc k
V y c th xem ki u k t cng l m t d ng c bi t c a ki u nguyn. Khi ta dng khun d ng "%c" hi n m t s nguyn n > 255 th k t n%256 s c hi n. Th d n u n = 304 th k t ng v i m ASCII l 48 c in, t c l k t '0'.
2.2. H ng
H ng l cc i l ng (c th c tn ho c khng) m gi tr c a n khng th thay i trong qu trnh ch y chng trnh.
1. H ng k t
H ng int trong h 8 (Octal) c b t u b ng s 0, cn h ng int trong h 16 (Hexadecimal) b t u b ng s 0 v k t x (in th ng ho c in hoa). Th d 011 = 9 0x11 = 17 Ch . Khi hi n m t s nguyn d i d ng bt phn b ng l nh printf() ta dng khun d ng % v ch 0, cn v i d ng th p l c phn th dng % v k t x (in th ng ho c in hoa). V d printf("%o",9) ho c printf("%x",17) cho k t qu trn mn hnh l 11 printf("%o",011) ho c printf("%x",0x11) cho k t qu trn mn hnh l 11
3. float v double (s th c v s th c c chnh xc g p i)
5. Cc h ng k t c bi t
L m t dy k t b t k t trong 2 d u "", th d "Ha noi". Ch : 'a' l h ng k t g m m t byte, cn "a" l h ng xu k t g m 2 byte, 1 byte ch a k t byte cu i cng ch a k t '\0' l k t bo k t thc xu.
a,
Ch : Khi ta dng hm strlen(st) xc nh di c a chu i k t th k t '\0' khng c tnh vo di ny. Th d 3 bi n st1,st2,st3 sau y u c di l 3 char st1[]="123";
L p trnh C v C++ - Chng 2.H ng, bi n v m ng
7. Tn h ng v cch gn gi tr cho h ng #define max 100 #define str "Ha Noi" const float a=10.123; const char str2[]="Hai Phong"; const char *str3="Tay Ho"; Khng nn dng const char str2[5]= "Hai Phong" ch ng h n, v c th di c a h ng v t qu di nh ngha. Ch : H ng c th l cc bi n chi m d ng b nh th d int m =10; nhng cng c th l nh ng gi tr t m th i, khng c phn ph i b nh th d M_PI, M_E, printf("\n%s","Ha Noi"); 2.3. Ki u enum Gi s ta ph i ti n hnh m t s cng vi c l p l i theo cc ngy trong tu n. Trong chng trnh ta vi t for(int i=2;i<=8;i++) [l nh] Tuy nhin theo cch ny th cc con s 2, 3, ... khng cho ta ngha g i nh l cc ngy trong tu n. C cho ta ta nh ngha bi n ki u li t k ph c v cho m c ch ny. Ta c th lm nh sau enum ngay_tt {hai, ba, tu, nam, sau, bay, chunhat}; ngay_tt i; for(i=hai;i<=chunhat;i++) {cc l nh} Gi s cc l nh l printf("%d ",i); th ta c k t qu l 0 1 2 3 4 5 6
10
11
4. Bi n a ch a ch c a m t bi n l s nguyn nhng ta khng th thao tc chng nh cc s nguyn thng th ng. Th d ta khng th gn int m; float x; m=&x; a ch c a m t bi n ngoi l n ch v tr c a bi n trong b nh cn mang thng tin l a ch c a bi n lo i g. Ta bi t r ng a ch c a 2 bi n nguyn lin ti p th cch nhau 2 byte, 2 s th c lin ti p cch nhau 4 byte,... c th lu tr v th c hi n cc php ton trn cc gi tr a ch , C nh ngha m t ki u bi n nguyn c bi t m gi tr c a chng l a ch c a cc bi n v g i bi n ny l con tr . Khi nh ngha con tr ta ph i ch r l con tr c a bi n lo i g. Th d khai bo m t con tr ki u nguyn ta vi t int *p; V khi ta c th gn p = &x; trong x l bi n nguyn no . 4. L y gi tr c a m t bi n thng qua a ch Gi s ta p l m t con tr . Khi *p s l gi tr c ch a trong vng b nh m p tr t i. Nh v y v i bi n x b t k th ta c *&x chnh l gi tr x. 2.5. M ng v chu i Trong ph n trn ta hi u bi n l m t vng b nh c t tn v c th lu tr m t ki u gi tr no . bi u di n nhi u gi tr ta ph i dng nhi u bi n. Tuy nhin nhi u khi s bi n l i ph thu c m t tham s no . Th d s thnh ph n c a m t vect ph thu c vo m t s n, cn s cc ph n t c a m t ma tr n l i ph thu c s hng v s c t. Trong nh ng tr ng h p ny ng i ta dng m t ki u d li u c c u trc l m ng bi u di n s li u. M ng l m t t p h p nhi u ph n t c cng m t ki u gi tr v c chung m t tn. V m t no c th coi m ng cng l bi n, nhng l bi n c c u trc ph c t p hn. nh ngha m ng Khai bo int a[10] s dnh 10 v tr lin ti p trong b nh , m i v tr g m 2 byte c th lu tr c m t s nguyn v cc v tr ny tng ng l a[0], a[1], ..., a[9] Khai bo int a[8][10] s dnh 80 v tr lin ti p trong b nh , m i v tr g m 2 byte c th lu tr c m t s nguyn v cc v tr ny tng ng l a[0][0], a[0][1], ..., a[0][9], a[1][0], a[1][1], ..., a[1][9], . . ., a[7][0], a[7][1], ..., a[7][9]. Ch : Khi ta khai bo m t m ng c kch c nh tr c, th d
L p trnh C v C++ - Chng 2.H ng, bi n v m ng
12
13
Cn n u ta thm l nh
printf("%d",i);
14
K t qu ch y chng trnh l 10 0 N u chng trnh vi t trn nhi u t p v cc t p c d ch c l p, th ph m vi s d ng c a bi n, m ng ngoi c th m r ng t t p ny sang t p khc b ng t kha extern (xem chng 11) 3. Kh i u cho bi n v m ng ngoi Bi n ngoi (ton c c) khi khai bo th c t ng gn b ng 0 ho c r ng. Quy t c khai bo v kh i u cng gi ng nh bi n t ng. Tuy nhin v i bi n t ng th sau khi khai bo bi n c th nh n m t gi tr vu v no . 2.11. Ton t sizeof sizeof(Ki u d li u) sizeof( i t ng d li u) ng d ng: int x[] = {1,2,3,4}; int n = sizeof(x)/sizeof(int);// Xc nh c c a m ng. 2.12. Bi n tnh, m ng tnh ngha c a bi n tnh c th th y r qua v d sau:
void vv() {static int i=1; printf("%d ",i++); } void main() {clrscr(); for(int j=1;j<=3;j++) vv(); getch(); }
K t qu ch y chng trnh l: 1 2 3
15
Cu l nh printf("\n%8.2f",a<b?a:b); s in ra c c ti u c a hai bi n th c a v b.
17
19
8 8 16 16
Ch : K t chuy n d ng c a s nguyn khng m h 8 l ch o, s nguyn khng m h 16 l ox; nhng bi u di n s nguyn khng m h 8 b t u b ng s 0, cn s h 16 th b t u b ng s 0 v ch x. Cc dng nghing v m chnh l s khc bi t gi a hm scanf v printf. Ta c th nh p cc tr ng vo lin ti p nhau, sao cho m i tr ng cch nhau t nh t m t kho ng tr ng. Trong kho tng tr ng c hi u l d u cch, d u tab ho c d u xu ng dng. Nh v y gi a cc tr ng vo c th ch a m t s kho ng tr ng tu . Nh v y ta khng th nh p m t chu i k t c ch a kho ng tr ng. V d v hm scanf: int n;float a;double b;char st[5] scanf("%d%f%lf%s",&n,&a,&b,st); Nh v y c th th y s khc bi t c a chu i i u khi n trong hm printf v hm scanf l: chu i i u khi n trong hm printf c th co 3 thnh ph n: cc k t i u khi n, cc k t c t v cc k t hi n trn mn hnh; cn trong l nh scanf th ch c cc k t c t . 4.3. a ra my in- hm fprintf int fprintf(stdprn,const char *dk, [danh sch cc i]); T t c nh ng i u ni l nh printf u ng. Ch c m t i m khc bi t: trong l nh printf thi t b ra l mn hnh cn v i l nh fprintf th thi t b ra l my in.
L p trnh C v C++ - Chng 4.Vo ra
20
Tr c khi gi i thch hi n t ng trn y chng ti gi i thi u thm m t vi khi ni m lin quan n cc thao tc vo ra. Turbo C nh ngha m t s dng xu t nh p chu n, th c ch t l cc vng m chuyn cho cc thao tc vo ra. Cc dng ny c t tn v c th thao tc trong chng trnh.
Predefined streams automatically opened when the program is started. Name Meaning stdin Standard input device stdout Standard output device stderr Standard error output device stdaux Standard auxiliary device stdprn Standard printer
Khi g p m t l nh nh p s li u v ta b t u g t bn phm th cc k t c g i vo stdin. Chng trnh s ch cho n khi ta g phm bo hi u k t thc l nh nh p s li u th chng trnh b t u c cc k t t stdin gn cho cc tr ng nh p. N u s li u trong stdin cha th chng trnh l i d ng ta nh p ti p. Cn n u s li u c nhi u hn th chng trnh ch l y v a gn cho cc tr ng vo, ph n cn l i v n cn l i trong stdin. Khi g p l nh nh p s li u ti p theo th tr c h t chng trnh xem trong stdin c s li u khng, n u c s li u th chng trnh l y ngay cc s li u gn cho tr ng vo m i v l nh nh p s li u b b qua. Ta c c m gic l l nh khng c th c hi n nhng th c ra c th c hi n nhng c th khng nh ta mu n. Tr l i o n chng trnh trn y. Khi nh p s li u cho ca ta g a v nh n th c k t a v k t (\n, LF c m l 10) u c a vo stdin. L nh scanf c k t a t stdin nhng khng lo i k t \n ra kh i stdin. Do v y khi t i l nh scanf ti p theo th chng trnh l y ngay gi tr \n gn cho cb m khng c n ch ng i s d ng nh p s li u m i. Khi hi n ra mn hnh th k t \n khng nhn th y do ta ch th y ch a a m thi. N u by gi ta s a l i l nh printf thnh
printf("\n%d %d",ca,cb);
21
V ta khng cn g p i u b t th ng trn y n a. Sau l nh scanf th nh t my s ch ta nh p s li u cho l nh th 2. K t qu hi n ra trn mn hnh l nh ng k t ta nh p vo. C m t cch khc kh k t '\n' l trong l nh scanf th nh t thm c t %*c
scanf("%c%*c",&ca);
Khi k t
Tuy nhin nh ta s th y, khng ph i l nh nh p s li u no cng ho t ng nh l nh scanf. Cng c l nh lo i b d u \n sau khi c s li u tr c . Th d trong o n chng trnh sau y n u sau khi g a th my v n ch ta nh p ti p d li u cho l nh scanf ti p theo.
char a,b; a=b='z'; cin>>a;//L nh C++, c n t i <iostream.h> cin>>b; //L nh C++ printf("\n%c %c",a,b);
Cc hm scanf, cin ch nh p c chu i khng c d u cch. Hm gets nh p c chu i ch a d u cch: Nh n dy k t t stdin cho n khi g p k t '\n'. K t '\n' b lo i kh i stdin nhng khng c t vo cu i chu i. Chu i c b sung k t k t thc '\0'. Cc hm printf, cout v puts c th hi n c cc chu i c ch a d u cch 4.6. M t s hm x l chu i strcmp(st1,st2)>0 ngha l st1>st2, phn bi t ch hoa ch th ng strcmpi(st1,st2)>0 ngha l st1>st2, khng phn bi t ch hoa ch th ng strcat(st1,st2) ghp st2 vo st1
L p trnh C v C++ - Chng 4.Vo ra
22
Ta c k t qu c d ng: 0x8f90fff0 0x8f90fff0 1 0x8f9fffee 123 1 Nh v y tn m ng hay tn chu i bi u th a ch c a ph n t u tin. V v y *a hay *b u cho gi tr c a ph n t u tin. Theo cch hi u ny th ng l ra &a v a ph i nh nhau, &b v b cng nh nhau. Nhng i u ny ch ng v i m ng. i v i chu i th cout<<b l i cho ton b chu i. y l i m khc bi t gi a chu i v m ng. N u v i m ng ta ch c th nh p s li u v cho hi n t ng ph n t c a m ng th n u ta cng i h i nh v y v i chu i th s lm cho cng vi c l p trnh r t r c r i. Chu i c th xem nh m ng, nhng ng th i ph i c truy xu t nh m t ph n t . Khng th thao tc v i tn ng i, tn a danh m coi nh h p thnh c a nhi u ph n t , m i ph n t l m t k t c. Chnh v v y cc nh sng t o ngn ng C ch n m t trong 2 k hi u &b v b m t k hi u dng thao tc ton b chu i. V v y khi dng l nh scanf("%s",b); ta c th nh p ton b chu i cn l nh printf("%s",b); s in ton b chu i. N u b l m ng th cc l nh trn y khng th c hi n c v my s bo l i. Ta c th kh i u cc gi tr cho chu i k t nh v d sau
char a[]="123"; L p trnh C v C++ - Chng 4.Vo ra
23
Ho c khai bo v dng php gn: char *a; a="123"; Tuy nhin n u ta vi t: char a[4]; a = "123"; Th my bo l i. Nguyn nhn l v a l m ng c nh s n kch c , khng th thay i c, a khng ph i l bi n con tr nn khng th ng pha bn tri trong php gn.
rn trn mn hnh.
4.9. Cc lu ng nh p xu t cin,cout C++ cung c p cc dng (stream c ch a trong iostream.h) cin v cout nh p xu t s li u. Sau y l vi v d : float a;int m; cin>>a; cin>>m; cout<<endl<<setw(8)<<setprecision(4)<<a; cout<<'\n'<<oct<<m; cout<<'\n'<<hex<<m;
24
5.6. Ton t while while(<bi u th c A>) <l nh B>; [l nh C]; <bi u th c A> l bi u th c logic, th ng l m t bi u th c nh n gi tr s . N u gi tr c a n khc 0 th nh n gi tr ng, n u gi tr c a n =0 th nh n gi tr sai. Cch ho t ng: 1. N u <bi u th c A> sai th <l nh B> khng c th c hi n, chuy n sang b c 3. 2. N u <bi u th c A> ng th th c hi n <l nh B> sau quay l i b c 1. (Thng th ng <l nh B> lm thay i gi tr <bi u th c A>). 3. K t thc l nh while, chuy n sang th c hi n <l nh C> v cc l nh sau . V d 1: Tnh t ng S = 1+2+3+...+100 int i,s; s=0;i=1; while(i<=100) s+=i++;
5.7. do ... while do <l nh A> while<bi u th c B> D <bi u th c B> sai hay ng th <l nh A> t nh t c th c hi n m t l n. Do ng i ta g i l nh ny l l nh ti n tr m h u t u. 5.8. L nh break v l nh continue V d 1: Tnh t ng S =1+2+3+4+5 s=0;
K thu t l p trnh C - Chng 5.Cc ton t i u khi n
26
27
Ch . l nh (1) c th thay b ng
b=new int* [2];
l nh (2) c th thay b ng
b[i]=new int [3];
6.2. Cc hm void void ti ng Anh c ngha l tr ng r ng, khuy t. Hm ki u void l m t hm c ki u cho ra l void. i u ny c ngha l n khng cho ra gi tr , gi ng nh procedure trong Pascal. Trong hm c th c ho c khng c l nh return; nhng l nh ny n u c th ch c d ng n gi n l return; khi chng trnh g p l nh ny th chng trnh thot kh i hm. N u khng c l nh return th chng trnh ch y n h t thn hm r i m i thot kh i hm. V d : By gi ta xt m t v d l in ra ngy trong tu n t th 2 n th 7 b ng ti ng Anh khi cho ngy b ng s , th d 2 l th 2, 3 l th 3, . . . v vi t hm b ng 2 cch: c ki u cho ra v ki u cho ra l void. Cch 1: char* weekday(int n)
L p trnh C v C++ - Chng 6.Hm v c u trc chng trnh
29
Cch 2: void weekday(int n) {switch(n) {case 2: printf("\n%s","Monday");break; case 3: printf("\n%s","Tuesday"); break; case 4: printf("\n%s","Wednesday"); break; case 5: printf("\n%s","Thursday"); break; case 6: printf("\n%s","Friday"); break; case 7: printf("\n%s","Saturday"); break; } return; } 6.3. L i g i hm Khi khai bo hm cc tham s c g i l tham s hnh th c. Khi s d ng hm cc tham s c thay b ng cc tham s c ki u tng ng. Khi g i hm ta khng c n ch r cc tham s c ki u g v ki u c a chng c khai bo tr c khi g i. Ch c tn c a cc tham s c thay vo cc v tr tng ng c a cc tham s hnh th c. Th d xc nh max trong 2 s a,b ta g i t=max(a,b); 6.4. S d ng hm assert() ki m tra i u ki n tr c H u h t cc hm khng th c thi t t trn t t c cc gi tr c a cc tham s . Th d hm double power(double x,int n) m chng ta s xt t i sau y ch c ngha v i x>0. i v i cc hm c tr v gi tr khc v i ki u void th i khi r t kh tm m t ki u ra tng ng v i cc tr ng h p khng thch h p. Trong cc tr ng h p ny ta c th dng hm assert() c nh ngha trong assert.h ki m tra tr c cc i u ki n. Khi i u ki n khng th a mn th chng trnh d ng th c hi n hm v km l i thng bo. V d : double power(double x,int n) {assert(x>0); double y=1.0;int m=abs(n);//N u l double th dng fabs() for(int i=0;i<m;i++) y*=x; if(n<0) y=1/y; return y; }
30
6.6. Truy n tham s cho hm 1. Truy n b ng tham tr (value parameter) (Ch r ng tn m ng l con tr do hm c tham s l m ng lun c t ng truy n theo a ch . Th m ch n u ta vi t void vv(double &a[2][3]) ch ng h n th my s bo l i. Tuy nhin n u ta nh ngha tr c typedef double kmatran[2][3]; th l i c th vi t void vv(kmtran &a);) Ta xt o n chng trnh sau: void f1(int x) {x*=3; printf("\n%d",x); } void main() {int a=1; printf("\n%d",a); f1(a); printf("\n%d",a); } K t qu trn mn hnh l: 1 3 1 M c d u trong thn hm ta thay i gi tr c a bi n x nhng khi ra kh i th chng trnh x l i l y gi tr c. Nguyn nhn l v hm c nh ngha theo ki u truy n tham tr , nn khi m t tham s c g i th khng ph i b n thn tham s m b n sao c a n c thay vo hm. Khi ra kh i hm bi n x l i c hi u l bi n tr c khi g i hm. Truy n b ng tham tr h ng (const value parameter):
L p trnh C v C++ - Chng 6.Hm v c u trc chng trnh
31
32
33
34
35
M ng 2 chi u:
void f(int x[][2],int); //====================== void main() {clrscr(); int n=2; int x[2][2]={1,2,3,4}; f(x,n); getch(); } //======================= void f(int x[][2],int n) {for(int i=0;i<n;i++) {printf("\n"); for(int j=0;j<n;j++) printf("%d ",x[i][j]); } return; }
36
L nh
L p trnh C v C++ - Chng 7. Con tr , c p pht ng v hm
38
K t qu l 1 2 3 Nh v y n u px = x th px+1 == &x[1], px+2 = = &x[2], ... Ch : C th vi t float y[] = {1.2, 3.2, 4.3, 6.5}; Nhng khng th vi t: float *py = {1.2, 3.2, 4.3, 6.5};//Dng l nh ny sai Nhng v i chu i th l i c: char st1[]="123"; char st2[7]="123"; char *st="123"; 2. Hm v i i l m ng m t chi u
L p trnh C v C++ - Chng 7.Con tr , c p pht ng v hm
39
40
7.4. Kh nng quy c a hm Trong ph n nh ngha c a m t hm (t c l trong thn hm) c th c l i g i n chnh n. Kh nng ny c g i l kh nng quy c a hm. V d ta c th nh ngha hm tnh giai th a c a m t s t nhin nh sau: long gt(long n) {return((n==0||n==1)?1:n*gt(n-1)); }
41
4. Khai bo tr c ti p cc bi n c ki u c u trc Ta c th khai bo cc bi n c ki u c u trc v1,v2 m t cch tr c ti p nh sau: struct {Khai bo thnh ph n c a n } v1,v2; Ch : V i cch v a nh ngha v a khai bo nh 3. ta c c ki u c u trc <tn ki u c u trc> v cc bi n c ki u <tn ki u c u trc> l v1,v2. Cn b ng cch 4. th ta ch c c cc bi n v1,v2. N u
L p trnh C v C++ - Chng 8. C u trc
Khng th vi t typedef struct {Khai bo thnh ph n c a n } v1,v2; 8.2. Truy nh p n thnh ph n c u trc o n chng trnh sau m t cch truy nh p n thnh ph n c u trc:
void main() {clrscr(); struct ngay {int day,month,year;}; struct ns {char *ten;ngay ngsinh;int tuoi,luong;}; ns v; v.ten="Nguyen Kien Cuong"; v.ngsinh.day=10;v.ngsinh.month=7;v.ngsinh.year=99; v.tuoi=50;v.luong=500; printf("\n%s", v.ten); ns* pv; pv=&v; printf("\n%s", pv->ten); //Hoac printf("\n%s",(*pv).ten); getch(); }
8.3. Php gn c u trc Khc v i m ng, ta c th gn 2 c u trc cng ki u v i nhau. Th d n u v1 v v2 l 2 bi n c u trc c cng ki u, khi ta c th gn v1=v2; Cc v d v c u trc: S gi i thi u trong bi gi ng. 8.4. C u trc trong C++ Thnh ph n c a c u trc c th l cc hm v c g i l cc phng th c. Cc thnh ph n c a c u trc ng m nh l public(class ng m nh l private cn union lun lun l public, khng th thay i) 1. D li u thnh ph n ki u private,public Ch c cc hm thnh ph n c a l p ho c c a l p b n c th truy nh p c n cc thnh ph n ny. 2. V d v class
//STACKKE.CPP ... #define true 1 K thu t l p trnh C - Chng 8.C u trc
43
8.5. Thnh ph n ki u fields struct date {int a:8; int b:6;int c:8;int d:2;} x; Khi sizeof(date)= 3 byte 8.6. Union Cc thnh ph n c a union c c p pht m t vng nh chung.
44
46
47
Ch :
char *fgets(char *s, int n, FILE *stream); int fputs(const char *s, FILE *stream); Remarks: fgets reads characters from stream into the string s. It stops when it reads either n - 1 characters or a newline character, whichever comes first. fgets retains the newline character at the end of s and appends a null byte to s to mark the end of the string. fputs copies the null-terminated string s to the given output stream. It does not append a newline character, and the terminating null character is not copied.
V d v fgets() v fputs()
struct nhansu {char ten[20]; int tuoi; }; void main() {clrscr(); FILE * f=fopen("tmp.txt","wt"); int n=3,i,j; char mten[20];int mtuoi;int mluong; fprintf(f,"%d\n",n); for(i=0;i<n;i++) {cout<<endl<<"Nhap nguoi "<<i<<" : "; cout<<endl<<"Ten: ";gets(mten); cout<<"Tuoi: ";cin>>mtuoi; fputs(mten,f); fprintf(f,"\n"); fprintf(f,"%d\n",mtuoi); } fclose(f); f=fopen("tmp.txt","rt"); char s[255]; nhansu tmp[4]; fscanf(f,"%d",&n); for(i=0;i<n;i++) K thu t l p trnh C - Chng 9. Thao tc trn t p
48
49
mode C80.
3. Cch xc nh v tr trn mn hnh H tr c t a trn mn hnh nh n i m gc trn bn tri lm g c. i m ny c t a (1,1). N u g i maxco l s c t c a mn hnh (40 ho c 80) th (maxco,1) l gc trn bn ph i, (1,25) l gc d i bn tri, (maxco,25) l gc d i bn ph i. Cc hm wherex() v hm wherey() cho v tr hi n th i c a con tr . Cc hm ny c ph m vi tc d ng ton mn hnh cho d c m t c a s no ang c kch ho t.
10.2. t mu n n v mu ch
Mu n n: void textbackground(int color); Mu ch : void textcolor(int color); B ng m cc mu n n v mu ch : Cc tn h ng BLACK (en) BLUE (xanh gia tr i) GREEN (xanh l cy) CYAN (xanh l) RED ( ) MAGENTA (tm) Gi tr s 0 1 2 3 4 5 Mu ch hay n n? C hai C hai C hai C hai C hai C hai
Sau l nh textbackground() th n n c a mn hnh v n khng i mu. V l nh ny ch b t u c hi u l c i v i cc l nh ng sau n m khng c kh nng xa nh ng g c trn mn hnh c. Mu n l nh ny c hi u l c ta ph i xa t t c nh ng g c trn mn hnh. L nh
hai: clrscr();
xa t t c nh ng g c trn mn hnh c, v do ton b mn hnh c mu xanh da tr i. L nh th 3 t l i mu n n thnh mu xanh l, sau ta nh ngha m t c a s . Ta lu r ng sau khi nh ngha c a s th mn hnh c coi nh thu nh v c a s i v i cc l nh clrscr, gotoxy, cprintf, cscanf, cgets, cputs. V y v tr gc bn tri c a c a s by gi l (1,1). 10.3. S khc bi t gi a cc hm nh p xu t d li u Nh chng ti nh c t i trn, sau khi nh ngha c a s th cc l nh clrscr, gotoxy, cprintf, cscanf ch c ph m vi ho t ng trong c a s . Th d khi dng cprintf hi n th s li u th n u s li u vu t qu chi u di c a s th s t ng xu ng dng hi n ti p dng d i. Hm cscanf c th hi n mu nhng c nh c i m l khi ta nh p s li u th n u b sai khng th s a c nh l nh scanf. Cc l nh khc nh puts, gets, printf, scanf c ph m vi ho t ng trong c mn hnh. L nh gotoxy ch n c cc v tr trong c a s . N u mu n a con tr n v 1,24 c a mn hnh ch ng h n, ta dng l nh window(1,24,1,24); 10.4. M t s hm thao tc mn hnh khc void clreol(void); void delline(void); int wherex(void); int wherey(void); void gettextinfo(struct text_info *r);
K thu t l p trnh C - Chng 10.Qu n l mn hnh vn b n
51
52
53
54
56
57
Ta c th thay i gi i mu b ng l nh setpalette(int <mu c>, int <mu m i>) Cc m u t (pattern) th ng dng Tn h ng EMPTY_FILL SOLID_FILL LINE_FILL LTSLASH_FILL SLASH_FILL BKSLASH_FILL LTBKSLASH_FILL HATCH_FILL XHATCH_FILL INTERLEAVE_FILL WIDE_DOT_FILL CLOSE_DOT_FILL USER_FILL Gi tr s 0 1 2 3 4 5 6 7 8 9 10 11 12 M t Mu n n Mu c --/// /// m \\\ m \\\ g ch bng nh t g ch bng ch nh t ng t qu ng d u ch m tha D u ch m dy
11.5. V m t s ng v hnh c b n 1.Chuy n con tr void moveto(int x,int y);// Chuy n con tr n v tr (x,y) 2. ng th ng void line(int x1,int y1, int x2, int y2); void lineto(int x,int y); //o n th ng t v tr hi n t i c a con ch y n i m (x,y). 3. ng trn v ellipse void circle(int x,int y, int r);//Tm (x,y) bn knh r void arc(int x, int y, int gocdau, int goccuoi, int r);//V m t cung trn void pieslice(int x, int y, int gocdau, int goccuoi, int r);
K thu t l p trnh C - Chng 11. h a
58
59
11.6. C a s (viewport) viewport l m t vng ch nh t trn mn hnh t a nh window trong textmode (m t s i m khc bi t chng ti ni trn). thi t l p viewport ta dng hm void setviewport(int x1,int y1, int x2, int y2, int clip); //clip = rt ng n , co l i Sau khi l nh c th c hi n ta v n khng th y c g thay i trn mn hnh. Tuy v y c m t s thay i m ta c th t n d ng trong l p trnh: T a i m gc trn bn tri c a viewport by gi l (0,0). Cn cc hm getmaxx(), getmaxy() khng ph i l honh v tung c c i trong viewport, m getmaxx()+1 v n l s i m nh trn m t dng c a ton mn hnh, cn getmaxy()+1 v n l s i m nh theo chi u ng c a ton mn hnh. Th d v i mn hnh EGA th getmaxx() = 639, getmaxy()=479. Ta c th t n d ng tham s clip v th hm s . N u clip=1 khng cho php v ra ngoi viewport, clip=0 cho php v . Ta c th t n d ng tnh ch t ny v tr c t a c c ph n m c a tr c tung v tr c honh. V d sau y cho ta bi t cch dng viewport v th cc hm s .
#include <graphics.h> #include <conio.h> #include <stdio.h> #include <ctype.h> #include <stdlib.h> #include <math.h> #include <dos.h> //=============================================== //a=-0.5;b=2; double g(double x) {return sin(x)-x*x*cos(x); } //=============================================== //a=1;b=2; double h(double x) {return x*x*x-x-1; } //=============================================== double xmu3(double x) {return x*x*x;} //========================================================================= double sinmu3(double x) {return sin(x)*sin(x)*sin(x);} //========================================================================= /*[a,b] la khoang can ve do thi, n la so khoang chia, (gocx,gocy) la toa do K thu t l p trnh C - Chng 11. h a
60
61
62
3. Quan h gi a vn b n v i v tr hi n t i c a con tr void settextjustify(int horiz, int vert); V tr vn b n so v i con tr hi n t i theo chi u ngang V i tham s horiz LEFT_TEXT CENTER_TEXT RIGHT_TEXT Gi tr s 0 1 2 Gi i thch Bn ph i Ch nh tm Bn tri
V tr vn b n so v i con tr hi n t i theo chi u ng V i tham s vert BOTTOM_TEXT CENTER_TEXT TOP_TEXT Gi tr s 0 1 2 Gi i thch Pha trn Ch nh tm Pha d i
63
64
11.8. T o hnh nh chuy n ng Th d sau y m t cch t o hnh nh chuy n ng. Chng trnh t o m t b u tr i y sao nh p nhy v m t a bay ang bay m t cch ng u nhin trn b u tr i. Hnh nh k t thc khi nh n phm b t k.
//SAUCER.CPP #include <graphics.h> #include <stdlib.h> #include <stdio.h> #include <conio.h> #include <dos.h> //============================================ void *p; int xx[1001],yy[1001],nsize,i; //=============================== int uscln(int u,int v) {int t; u=u%v; while(u>0) {int tmp=u;u=v;v=tmp; u=u%v; } return(v); } //============================================ void ve_diabay() {//Ve tau vu tru setcolor(RED); ellipse(100,50,0,360,20,8); ellipse(100,46,190,357,20,6); line(107,44,110,38); circle(110,38,2); line(93,44,90,38); circle(90,38,2); setfillstyle(SOLID_FILL,BLUE); floodfill(101,54,RED); setfillstyle(SOLID_FILL,MAGENTA); floodfill(94,45,RED); //Luu anh tau vu tru vao bo nho nsize=imagesize(79,36,121,59); p= malloc(nsize); getimage(79,36,121,59,p); return; } //============================================ void nhap_nhay_bt() {static i=1;//Lenh nay thuc hien mot lan khi dich int j; //Cho nhap nhay bang cach doi mau 50 ngoi sao for(j=1;j<=50;++j) {putpixel(xx[i],yy[i],random(getmaxcolor())); ++i; if(i>1000) i=1; } } K thu t l p trnh C - Chng 11. h a
65
66
68
13.1. M u Trong cc chng tr c y cc tnh ch t c a l p trnh h ng i t ng cha hi n r nt. Trong chng ny chng ti s gi i thi u nh ng nt c th ring c a l p trnh h ng i t ng. Sau y l b ng m t s thu t nh hay dng trong l p trnh h ng i t ng: i t ng (Object) C u trc d li u k t h p cc chng trnh con c ki u r rng t qu n l.
L p (class,struct,union) M u cho cc i t ng. nh ngha l p l cc phng ti n qua cc i t ng c thi t k . Thnh ph n(member) Th hi n (instance) Phng th c(method) Bi n(data member) hay hm(function member) n m trong i t ng M t th hi n c a m t l p. Thu t ng ch m t hm thu c v l p
ng gi(Encapsulation) S lin k t cc c u trc d li u v phng th c vo m t l p Th a k (inheritance) Gi s c m t l p "cha" hay l p c s . C++ cho ta kh nng xy d ng m t l p "con" hay l p th a k m l p "con" c th dng cc thnh ph n c a l p "cha".
a hnh(polymorphysm) Kh nng c a m t s l p dng chung tn cc phng th c. Cc phng th c, khi c t tn gi ng nhau, hnh ng tng thch v i l p ring trong n c thi t k . Hm kh i t o (constructor)Phng th c u c th c hi n khi m t th hi n (i t ng)c a l p c t o ra. Hm lo i b (deconstructor)Phng th c c th c hi n tr c khi m t i t ng b lo i b . Hm o (virtual) L ki u phung th c c th lin k t ng v i cc i t ng khi ch y chng trnh.
Early (designed time) binding. S lin k t tnh cc methods v i m t i t ng c xc nh ngay khi vi t chng trnh. Late (run-time) binding. S lin k t ng gi a cc methods v i m t i t ng lc ch y chng trnh. ngha c a cc tnh ch t c trng c a l p trnh h ng i t ng c th th y r trong cc chng trnh m u sau: Chng trnh 1:
#include <graphics.h> #include <stdlib.h> L p trnh C v C++ - Chng13. Tnh ng gi, th a k v a hnh
Chng trnh 2:
#include <stdio.h> #include <graphics.h> #include <conio.h> #include <stdlib.h> #include <dos.h> enum Bool {false,true}; const int num_figures=3; const int scr_width=640; const int scr_height=480; const int scr_colours=16;//Typical for PC; class Shape {protected: int x,y;Bool Visible; public: Shape(int ix=0,int iy=0) {x=ix;y=iy;}; virtual ~Shape() {}; virtual void Show(void) {}; K thu t l p trnh C - Chng 13. Tnh ng gi, th a k v a hnh
70
71
72
Lo i bi m c A 5 i m
1 1 1 + +...+ 2 3 n
A02. Nh p s t nhin n r i tnh cc t ng sau: S=t ng cc s t nhin khng l n hn n, S1=t ng cc s t nhin l khng l n hn n, S2=t ng cc s t nhin ch n khng l n hn n. A03. Nh p s t nhin n r i tnh t ng cc s t nhin khng l n hn n v chia h t cho 7. A04. Nh p s t nhin n r i tnh t ng cc s t nhin khng l n hn n v khng chia h t cho 7. A05. Nh p s t nhin n v dy s th c a[0], a[1], ..., a[n-1] r i ki m tra xem dy ny c t o thnh c p s c ng khng. A06. Nh p s t nhin n v dy s th c a[0], a[1], ..., a[n-1] r i ki m tra xem dy ny c t o thnh c p s nhn khng. A07. Ba s dng a,b,c l di cc c nh c a m t tam gic n u t ng c a 2 s b t k l n hn s cn l i. Nh p 3 s a,b,c v ki m tra xem chng c th l di c a cc c nh c a m t tam gic hay khng. A08. Nh p m t s t nhin n r i m cc s t nhin khng l n hn n v chia cho 3 d 1 (t c l cc s ng d v i 1 mod 3).
L p trnh C v C++ - Cu h i v bi t p
B01. Nh p s t nhin n r i li t k cc c s c a n. C bao nhiu c s ? B02. Nh p 2 s t nhin m,n r i ki m tra xem chng c nguyn t cng nhau khng. (Hai s nguyn t cng nhau l 2 s c USCLN l 1) B03. 3 s dng a,b,c l 3 c nh c a m t tam gic vung trong c l c nh huy n n u c2 = a2 + b2 (1). Nh p m t s t nhin n (th d n=50). Sau li t k t t c cc s t nhin a,b,c sao cho abcn v a,b, c th a mn (1). C bao nhiu b 3 s a, b, c nh v y? B04. 3 s dng a,b,c l 3 c nh c a m t tam gic vung trong c l c nh huy n n u c2 = a2 + b2 (2). Nh p m t s t nhin n (th d n=100). Sau li t k t t c cc s t nhin a,b,c sao cho a,b, c l cc s t nhin lin ti p v th a mn (2). C bao nhiu b 3 s a, b, c nh v y? B05. Tm t t c cc s c 3 ch s abc sao cho t ng l p phng c a cc ch s th b ng chnh s , ngha l: abc = a3 + b3 + c3 (3) C bao nhiu s nh v y? (Cc s th a mn (3) c g i l cc s Amstrong c 3 ch s ). B06. Nh p vo 2 s t nhin m v n, sao cho m<n. Hy li t k cc s chnh phng trong kho ng [m,n]. C bao nhiu s chnh phng? (S t nhin p c g i l chnh phng n u p = k2 v i s t nhin k no ) B07. Nh p vo 2 s t nhin m v n, sao cho m<n. Hy li t k cc s khng chnh phng trong kho ng [m,n]. C bao nhiu s khng chnh phng? (S t nhin p c g i l chnh phng n u p = k2 v i s t nhin k no ) B08. Nh p m t s nguyn dng n, sau vi t ra mn hnh s d i d ng nh phn. B09. c m t s th c <1 , sau vi t ra mn hnh s d i d ng nh phn. B10. Nh p s n v dy cc s th c a[0], a[1],..., a[n-1] r i s p x p dy trn theo th t tng d n. B11. Nh p 6 s nguyn a, b, c, d, p, q r i li t k t t c cc c p s t nhin x, y th a mn h phng trnh: ax+by=p cx+dy=q C bao nhiu c p nghi m nh v y? B12. Th i gian lm m t vi c no l x giy. Hy c x t bn phm v vi t chng trnh chuy n sang bao nhiu gi , pht,giy.
K thu t l p trnh C-Cu h i v bi t p
74
B20. Nh p s li u cho dy s th c a0 , a1 ,..., an-1 . Tm s b nh t trong dy trn v v tr c a n trong dy. B21. Nh p s li u cho dy s th c a0 , a1 ,..., an-1 v 2 s th c b, c (b<c). Tnh trung bnh c ng cc ph n t c a dy n m trong kho ng [b, c]. B22. Nh p s li u cho dy s nguyn a0 , a1 ,..., an-1 Hy m xem trong dy c bao nhiu s l v bao nhiu s ch n. B23. Nh p s li u cho dy s nguyn a0 , a1 ,..., an-1 v 2 s th c b, c (b<c). Tnh trung bnh c ng cc ph n t c a dy n m trong kho ng [b,c] v chia h t cho 7. B24. T ng c a n s t nhin u tin c cho b i cng th c: 1 + 2 + 3 + ... + n =
n( n + 1) 2
(4)
Hy nh p s t nhin n b t k v ki m tra xem cng th c (4) c ng khng. B n hy cho hi n trn mn hnh cu tr l i: " ng th c ng", hay " ng th c sai" tu vo k t qu so snh.
B25. T ng cc bnh phng c a n s t nhin u tin c cho b i cng th c: 12 + 22 + 32 + ... + n2 =
n(n + 1)(2n + 1) 6
(5)
Hy nh p s t nhin n b t k v ki m tra xem cng th c (5) c ng khng. B n hy cho hi n trn mn hnh cu tr l i: " ng th c ng", hay " ng th c sai" tu vo k t qu so snh.
K thu t l p trnh C-Cu h i v bi t p
75
n 2 ( n + 1) 2 1 + 2 + 3 + ... + n = 4
3 3 3 3
(6)
Hy nh p s t nhin n b t k v ki m tra xem cng th c (6) c ng khng. B27. Gi s dy cc s th c a1 , a2 ,..., an l p thnh c p s c ng v i cng sai d, ngha l i=1,2,...,n-1. ai+1=ai+d,
Sn = a1 + a2 +...+ an =
[ 2a1 + (n 1) d ]n 2
B28. Gi s dy cc s th c a1 , a2 ,..., an l p thnh c p s nhn v i cng b i q, ngha l ai+1=ai*q, i=1,2,...,n-1. Hy vi t chng trnh C nh p s t nhin n b t k, s th c a1 v s th c q v ki m tra xem cng th c sau c ng khng: Sn = a1 + a2 +...+ an = a1
1 qn 1 q
B29. Nh p s li u cho dy s th c a0 , a1 ,..., an-1 v m t s b b t k. Tnh 3 s c1, c2, c3, trong c1 l s ph n t < b, c2 l s ph n t = b v c3 l s ph n t >b.
Lo i bi m c C 7 i m
C01. Tnh gi tr c a a th c P(x)=anxn+ an-1xn-1+ ... + a1x+ a0 Theo cch tnh c a Horner t c t c tnh nhanh: P(x)=((((anx+ an-1)x+ an-2... + a1)x+ a0 C02. m s ch trong m t xu k t . Th d chu i "Tr ng h c" c 2 ch .
C03. M t chu i c g i l Palindrome n u sau khi o ng c cc k t c a n, ta nh n c chu i ban u. V d : chu i "MADAM" l Palindrome. Vi t chng trnh nh p r i xc nh xem m t chu i c ph i l Palindrome hay khng.
C04. Nh p m t s t nhin n. Hy li t k cc s nguyn t khng l n hn n.
76
1 1 1 1 +...+(-1)n ) 3 5 7 2n + 1
1 c th a mn. 2n + 1
1 1 1 1 +...+(-1)n ) 3 5 7 2n + 1
1 c th a mn. 2n + 1
ex = 1+
x x2 xn + + ... + 1! 2! n! xn | c th a mn. n!
sin x =
cos x = 1 -
So snh k t qu trn y v i gi tr hm chu n cos(x) c s n trong C. C10.Vi t hm n! theo cng th c sau: n! = 1 n u n=0
77
n! k!(n k )!
a. C phn bi t ch hoa ch th ng. b. Khng phn bi t ch hoa ch th ng. C12. Nh p m t s nguyn dng, sau vi t ra mn hnh s 10 c k hi u l A. d i d ng c s 11, v i quy c ch s
C13. Nh p s n v dy cc s th c a[0], a[1],..., a[n-1] r i s p x p dy trn theo th t tng d n theo phng php n i b t (bubble sort). C14. Nh p s li u cho ma tr n A ki u mxn c cc ph n t l cc s th c. Tm cc gi tr c c i v c c ti u c a cc ph n t v ch r v tr c a chng trong b ng. C15. Nh p s li u cho dy s th c a0 , a1 ,..., an-1 v m t gi tr th c x. Gi s dy a c s p x p theo th t tng d n. Hy chn gi tr x vo dy a sao cho v n gi c tnh s p x p c a m ng. C16. Nh p s li u cho dy s th c a0 , a1 ,..., an-1 . Ki m tra xem dy c s p x p theo th t tng d n hay khng. N u khng hy ch ra v tr ph n t u tin lm m t tnh ch t c s p c a dy. C17.Nh p s li u cho ma tr n A ki u mxn c cc ph n t l cc s th c. Tm ph n t b nh t c a m i dng v t chng vo c t u tin. (T c l ph n t u tin c a m i dng s l ph n t b nh t c a dng ). C18 Nh p s li u cho ma tr n A ki u mxn c cc ph n t l cc s th c. Tm ph n t b nh t c a ma tr n v m xem c bao nhiu ph n t b ng ph n t b nh t. C19.Nh p s li u cho ma tr n A ki u mxn c cc ph n t cc ph n t c a ma tr n nhng theo th t tng d n. l cc s th c. Hy li t k trn mn hnh t t c
C20. Nh p s li u cho dy s th c dng R1 , R2 ,..., Rn trong Ri bi u th i n tr thnh ph n trong m t c m g m n i n tr u song song. Hy tnh i n tr c a ton c m theo cng th c bi t: R=
1 1 1 1 + + ... + R1 R2 Rn
C21. Nh p s t nhin n v 2 dy s th c X1 , X2 ,..., Xn v Y1 , Y2 ,..., Yn , hy tnh ton gi tr bi u th c bn ph i v bn tri, sau so snh ch ng t l b t ng sau th c ng: X1*Y1 + X2*Y2 +.... Xn* Yn (X12 + X22 +...+ Xn2 )1/2 (Y12 + Y22 +...+ Yn2 )1/2 B n hy cho hi n trn mn hnh cu tr l i: "B t ng th c ng", hay "B t ng th c sai" tu vo k t qu so snh. (y l b t ng th c Cauchy - Bunyakovski - Schwarz) C22. Nh p s t nhin n v dy s th c dng X1 , X2 ,..., Xn sau tnh ton gi tr bi u th c bn ph i v bn tri v so snh ch ng t l b t ng sau th c ng:
K thu t l p trnh C-Cu h i v bi t p
78
( X 1 X 2 ... X n ) n
X 1 + X 2 + ... + X n n
(Trung bnh nhn cc s dng khng l n hn trung bnh c ng c a chng) B n hy cho hi n trn mn hnh cu tr l i: "B t ng th c ng", hay "B t ng th c sai" tu vo k t qu so snh. C23. Bi t r ng li su t g i ti t ki m k h n 1 nm l 0,9%. Hy nh p vo s ti n g i c a m t ng i v tnh s ti n c a ng i sau N nm (N nh p t bn phm), bi t r ng sau m t nm th ti n li s c nh p vo g c. C24. L p chng trnh tnh c c cho m t cu c g i i n tho i n i t nh. Bi t : Th i gian b t u, th i gian k t thc cu c g i tnh theo gi , pht v c nh p t mn phm. C c d ch v i n tho i: 500 / pht. C25. Hy vi t hm tnh t ng cc ch s c a m t s nguyn b t k. V d : S 8545604 c t ng cc ch s l: 8+5+4+5+6+0+4= 32
Lo i bi m c D 8 i m
ex = 1+
x x2 xn + + ... + 1! 2! n! xn | c th a mn. n!
Tam gic trn c dng th n (b t u t n=0) ch a n+1 ph n t (k0,1,...,n) l cc h s c a nh th c (a+b)n v c g i l tam gic Pascal. D03. Cho 2 chu i s1 v s2. Hy tm xem chu i s1 c ch a chu i s2 khng v ch r v tr b t u v v tr k t thc c a chu i s2 trong chu i s1 n u tm th y. D04. Cho m t chu i. Hy tm m t t v xa t ny trong chu i n u tm th y.
K thu t l p trnh C-Cu h i v bi t p
79
D07. Xy d ng chng trnh qu n l sinh vin b ng m ng tnh, s d ng c u trc sau: struct SV {char ten[25]; float toan, ly, tb;}; Nh p danh sch cho n sinh vin (n l s t nhin c nh p vo), ch nh p ten v toan, ly. Tnh gi tr tr ng tb =(toan+ly)/2, sau s p x p l i danh sch theo i m trung bnh tng d n. Cho hi n k t qu tr c v sau khi s p x p. D08. Nh p cc h s ai (i=0,1,2,...,m) c a a th c P(x) b c m (ai l h s c a xi ) v nh p cc h s bj (j=0,1,2,...,n) c a a th c Q(x) b c n (bj l h s c a xj ). In ra cc h s c a a th c t ng. D09. Nh p ma tr n ch nh t cc s th c c c p mxn. Tm ph n t l n nh t c a m i hng. In m i ph n t tm c trn m t dng (thng tin in ra cng y cng t t). D10. Nh p ma tr n ch nh t cc s th c c c p mxn.Tm hng c a ma tr n sao cho t ng cc ph n t tnh theo hng l l n nh t so v i cc hng cn l i. D11. Nh p ma tr n ch nh t cc s th c c c p mxn.Tm c t c a ma tr n sao cho t ng cc ph n t tnh theo c t l l n nh t so v i cc c t cn l i. D12. Tm nh th c c a ma tr n vung c p n.
D13. Nh p s li u cho ma tr n A c ki u mxn. Sau tm ma tr n chuy n v B c ki u nxm th a mn bij = aji. Tnh ma tr n tch C c ki u mxm c a 2 ma tr n A v B.
D14. Nh p s li u cho ma tr n A ki u mxn c cc ph n t l cc s t nhin. Hy li t k t t c cc ph n t c a ma tr n l cc s nguyn t ; li t k trn t ng dng c a mn hnh tng ng v i t ng hng c a ma tr n. D15. Nh p s li u cho ma tr n A ki u mxn c cc ph n t l cc s t nhin. Hy li t k t t c cc ph n t c a ma tr n m khng ph i l s nguyn t ; li t k trn t ng dng c a mn hnh tng ng v i t ng hng c a ma tr n. D16. Nh p s li u cho ma tr n A ki u mxn c cc ph n t l cc s th c v m t s th c x. Hy m xem s th c x xu t hi n bao nhiu l n trong ma tr n v t i cc v tr no. Th d k t qu c th c d ng: S l n xu t hi n c a 2.15 l 3 t i cc v tr (2,4), (3,1), (3,5).
80
Lo i bi m c E 9 i m
E01. Khi ta so n th o vn b n, i khi thay v m t d u cch ta l i g li n m y d u cch, ho c g thm d u cch th a hai u chu i. Gi s chu i ST c ch a m t s d u cch th a nh v y. Hy vi t chng trnh lo i b nh ng d u cch th a trong v hai u vn b n. Ngha l sau khi ch y chng trnh th khng cn tr ng h p 2 ho c nhi u d u cch li n nhau bn trong chu i v hai u chu i khng cn d u cch n a, v d chu i Tr n Hng o s c chuy n thnh Tr n Hng o. E02. Vi t chng trnh chuy n m t chu i thnh d ng proper, ngha l k t sau d u cch l k t in hoa. Th d "Nguy n Vn Tng" l chu i d ng proper. E03. Nh p m t chu i. Hy xc nh v tr c a t c di l n nh t trong chu i. E04. Tm h ng c a ma tr n ch nh t cc s th c c p mxn. E05. Tm ma tr n ngh ch o c a ma tr n vung c p n b ng phng php kh Gauss-Jordan. E06. Nh p s li u cho 2 dy s th c a0 , a1 ,..., am-1 v b0 , b1 ,..., bn-1. Hy t o dy c0 , c1 ,..., ck-1 l ph n chung c a 2 dy trn, ngha l cc ph n t ci c m t trong c 2 dy a v b. (G i : C nh m t dy, xt t ng ph n t c a dy kia). E07. Nh p s li u cho 2 dy s th c a0 , a1 ,..., am-1 v b0 , b1 ,..., bn-1. Hy t o dy c0 , c1 ,..., ck-1 sao cho cc ph n t ci c m t trong dy a nhng khng xu t hi n trong dy b. (G i : C nh m t dy, xt t ng ph n t c a dy kia). E08. Nh p s li u cho dy s th c a0 , a1 ,..., an-1 . Hy li t k cc ph n t
K thu t l p trnh C-Cu h i v bi t p
xu t hi n trong dy ng m t l n.
81
82
E27. m s cu (k t thc b ng d u ch m) trong m t t p vn b n. E28. m s dng trong m t t p vn b n. E29. Dng hm main c i vi t chng trnh n i 2 t p vn b n. E30. Dng hm main c i vi t chng trnh i tn m t t p b t k. Trong chng trnh c xt tnh hu ng tn t p m i t n t i, v cho kh nng l a ch ghi ho c khng ghi . E31. Vi t chng trnh hi n n i dung m t t p vn b n ln mn hnh. Khi t p c nhi u hn 24 dng th d ng l i ch nh n phm m i hi n ti p. Vi t d i d ng tr c ti p ho c dng hm main() c i.
K thu t l p trnh C-Cu h i v bi t p
83
84
Chng trnh C n gi n nh t ch y khng bo l i: Khng lm g c //001.cpp Chuong trinh C don gian nhat: khong lam gi ca void main() { } Hi n cu cho //002CHAO1.cpp Hien cau chao tren man hinh #include <stdio.h> void main() {printf("\nTurbo C xin chao ban"); } Hi n cu cho v ch nh n phm m i k t thc //002CHAO2.CPP Xoa man hinh, hien cau chao, cho nhan phim #include <stdio.h> #include <conio.h> void main() {clrscr(); printf("Turbo C xin chao ban!"); getch(); } Nh p 2 s nguyn, tnh t ng, hi u, tch, thng //003AB1.CPP Nhap 2 so nguyen. Tinh tong, hieu, tich, thuong. #include <stdio.h> #include <conio.h> void main() {clrscr(); int a,b,tong,tich,hieu,thuong; printf("\nNhap 2 so a,b = "); scanf("%d%d",&a,&b); tong=a+b;tich=a*b;hieu=a-b;thuong=a/b; printf("Tong cua 2 so %d va %d la %d",a,b,tong); //Hay in ra tich, hieu va thuong getch(); } Nh p 2 s th c, tnh t ng, hi u, tch, thng //003AB2.CPP Nhap 2 so thuc. Tinh tong, hieu, tich, thuong. #include <stdio.h> #include <conio.h> void main() {clrscr();
L p trnh C v C++ - Ph l c. Cc chng trnh m u
Nh p 3 s th c, tm max c a chng //003ABC1.CPP Nhap 3 so thuc. Tim max cua chung. #include <stdio.h> #include <conio.h> void main() {clrscr(); float a,b,c,max; printf("\nNhap 3 so a,b,c = "); scanf("%f%f%f",&a,&b,&c); max=a; if(b>max) max=b; if(c>max) max=c; printf("Max cua 3 so %4.1f, %4.1f va %4.1f la %4.1f",a,b,c,max); //Hay tinh min getch(); } Nh p 3 s th c, ki m t xem chng c ph i l 3 c nh c a m t tam gic khng, sau ki m tra xe xem chng c ph i l 3 c nh c a tam gic vung khng //003ABC2.CPP Nhap 3 so thuc. Kiem tra xem chung co phai la 3 canh //cua tam giac khong; sau do kiem tra xem chung co phai la 3 canh tam //giac vuong khong #include <stdio.h> #include <conio.h> void main() {clrscr(); float a,b,c; printf("\nNhap 3 so a,b,c = "); scanf("%f%f%f",&a,&b,&c); if(a+b>c && a+c>b && b+c>a) printf("\nChung la 3 canh cua mot tam giac"); else printf("\nChung khong phai la 3 canh cua mot tam giac"); if(a*a+b*b==c*c || a*a+c*c==b*b || b*b+c*c==a*a) printf("\nChung la 3 canh cua mot tam giac vuong"); else printf("\nChung khong phai la 3 canh cua mot tam giac vuong"); getch(); } /*Bai tap: Hay nhap 3 so thuc, kiem tra neu chung khong phai la 3 canh cua mot tam giac thi thong bao va ket thuc, con neu la 3 canh cua tam giac thi
86
Tm cc tam gic vung c c nh l cc s nguyn khng l n hn 20 //003ABC3.CPP Tim cac tam giac vuong co canh la so nguyen khong lon hon 20 #include <stdio.h> #include <conio.h> void main() {clrscr(); int a,b,c; for(a=1;a<=20;a++) for(b=1;b<=20;b++) for(c=1;c<=20;c++) if(b*b+c*c==a*a) printf("\n %d %d %d",a,b,c); gotoxy(2,24); printf("Xem xong nhan phim bat ky de ket thuc"); getch(); } /*Bai tap:Tim cac tam giac vuong co canh la so nguyen khong lon hon 100 */
Bi ton trm tru trm c //004100T.CPP Tram trau tram co #include <stdio.h> #include <conio.h> void main() {clrscr(); int dung,nam,gia; for(dung=0;dung<=20;dung++) for(nam=0;nam<=33;nam++) for(gia=0;gia<=100;gia++) if(dung*5+nam*3+gia/3==100 && gia%3==0) printf("\n %d %d %d",dung,nam,gia); gotoxy(2,24); printf("Xem xong nhan phim bat ky de ket thuc"); getch(); } /*Bai tap:Cho hien dong tieu de Dung Nam Gia, sau do la cac hang chua loi giai. Moi lan day man hinh 24 dong thi dung lai de xem, sau do nhan phim de xem tiep. */
87
Li t k cc s nguyn t khng l n hn s n cho tr c //006NT1.CPP Liet ke cac so nguyen to tu 2 den n #include <stdio.h> #include <conio.h> #include <math.h> void main() {clrscr(); int n,i,j, a[1000]; printf("\nNhap n = ");scanf("%d",&n); for(i=2;i<=n;i++) a[i]=1;//coi nhu i la nguyen to for(i=2;i<=n;i++) for(j=2;j<=sqrt(i);j++)
88
Li t k cc s nguyn t t m n n //006NT2.CPP Liet ke cac so nguyen to tu m den n #include <stdio.h> #include <conio.h> #include <math.h> //Ham nt tra ve 1 neu la nguyen to, 0 neu khong phai nguyen to int nt(int n) {int i; for(i=2;i<=sqrt(n);i++) if(n%i==0) return(0); return(1); } void main() {clrscr(); int m,n,i; printf("\nNhap m, n = ");scanf("%d%d",&m,&n); while(m>=n) {printf("\nNhap m, n (m<n) = ");scanf("%d%d",&m,&n);}
for(i=m;i<=n;i++) if(nt(i)) printf("%5d",i); gotoxy(2,24); printf("Xem xong nhan phim bat ky de ket thuc"); getch(); } /*Bai tap:Nhap mot so m va n sao cho m<n roi in ra cac so nguyen to trong khoang [m,n].Neu nhap sai 5 lan thi thong bao va ket thuc */
89
90
91
92
06. o l i m t chu i k t
//06DCHUOI.CPP, Dao chuoi ky tu #include <stdio.h> #include <conio.h> #include <stdlib.h> #include <string.h> #define nmax 40 void daochuoi(char *a) {int n = strlen(a);int i,j;char ch; i=0;j=n-1; while(i<j) {ch=a[i];a[i]=a[j];a[j]=ch;i++;j--; } }; //================================= void main() {clrscr(); char a[20];char *b; strcpy(a,"12345678"); printf("\nChuoi ban dau la: %s",a); daochuoi(a); printf("\nChuoi dao lai la: %s",a); getch(); }
93
94
09. Tm s l n nh t trong dy cc s th c
//09TimMax.CPP Tim Max trong day phan tu #include <stdio.h> #include <conio.h> #include <stdlib.h> #define nmax 100 //==================================== void nhap(float a[],int &n) {int i,j,k; printf("\nNhap co cua mang: ");scanf("%d",&n); printf("\n"); for(i=0;i<n;i++)
95
96
97
12. Tm t h p c a cc lo i gi y b c
//12GBAC.CPP, Tim to hop cua cac loai giay bac #include <stdio.h> #include <conio.h> #include <stdlib.h> //================= void main() {clrscr(); int x,y,z,i; i=0; for(x=0;x<=5750/500;x++) for(y=0;y<=5750/200;y++) for(z=0;z<=5750/50;z++) if(x*500+y*200+z*50==5750) printf("\n%4d: %d %d %d",++i,x,y,z); getch(); }
98
99
//15TINHPI.CPP, Tinh so pi #include <stdio.h> #include <conio.h> #include <stdlib.h> #include <math.h> //================== double tinhpi() {double tong,sh,epsi,dau; int n; epsi=0.0001; tong=0; sh=1; dau=1; n=0; while(fabs(sh)>epsi) {tong=tong+sh; n++;
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
"<<p->tsinh.nam;
115
116
117
118
119
120
121
122
123
124