Escolar Documentos
Profissional Documentos
Cultura Documentos
Vn phm ca ngn ng C
Chng:
Hm main( )
Mt chng trnh C gm nhiu hm nhng c duy nht mt hm
main().
Hm main( ) l im bt u thc thi chng trnh v gi cc hm
khc thc hin.
C php 1:
void main( )
{
}
C php 2:
void main(int argc, char *argv[ ] )
{
}
C php 3:
int main( )
{
return 0;
}
C php 4:
int main (int argc, char *argv[ ])
{
return 0;
}
Cu lnh C:
L mt ch th trc tip, hon chnh nhm ra lnh cho my tnh thc
hin mt s tc v nht nh no .
Chng:
Trnh bin dch b qua cc khong trng (hay tab hoc xung dng)
chen gia lnh.
L mt php ton, li gi hm, mt lnh iu khin chng trnh. Cu
lnh C lun kt thc bng ;
V d:
a=2912;
a = 2912;
a
=
2912;
Phn loi
Cu lnh n: ch gm mt cu lnh.
Cu lnh phc (khi lnh): gm nhiu cu lnh n c
bao bi { v }
V d:
a = 2912; // cu lnh n.
{ // cu lnh phc/khi lnh
a = 2912;
b = 1706;
}
Xut d liu c bn:
Xut d liu ra mn hnh chng ta dng hm printf trong th vin stdio.h
#include <stdio.h> (standard input/output)
C php:
printf(nh dng, cc gi tr );
Trong :
nh dng: l cch trnh by thng tin xut v c t trong cp
nhy kp .
K t iu
ngha
khin
\a Ting chung
\b Li li mt bc
\n Xung dng
\t Du tab
\\ In du \
\? In du ?
\ In du
V d
printf(\t); printf(\n);
printf(\t\n);
c t (conversion specifier):
Gm du % v mt k t.
Xc nh kiu ca bin/gi tr mun xut.
Cc i s chnh l cc bin/gi tr mun xut, c lit
k theo th t cch nhau du phy.
Chng:
%c K t char
%d, %ld S nguyn c du char, int, short, long
%f, %lf S thc float, double
%s Chui k t char[], char*
%u S nguyn khng unsigned
du int/short/long
V d:
int a = 10, b = 20;
printf(%d, a); Xut ra 10
printf(%d, b); Xut ra 20
printf(%d %d, a, b); Xut ra 10 20
float x = 15.06;
printf(%f, x); Xut ra 15.060000
printf(%f, 1.0/3); Xut ra 0.333333
Phi hp cc thnh phn
int a = 1, b = 2;
nh dng xut:
C php
nh dng xut s nguyn: %nd
nh dng xut s thc: %n.kd
int a = 1706;
float x = 176.85;
printf(%10d, a);printf(\n);
printf(%10.2f, x);printf(\n);
printf(%.2f, x);printf(\n);
Du chm phy ;
Dng phn cch cc cu lnh.
V d: printf(Hello World!); printf(\n);
Nhp d liu c bn:
Th vin
#include <stdio.h> (standard input/output)
C php
scanf(<chui nh dng>[, <s1>, <s1>, ]);
<chui nh dng> ging nh dng xut nhng ch c cc c t.
Cc i s l tn cc bin s cha gi tr nhp v c t trc
du &
V d: cho a v b kiu s nguyn
scanf(%d, &a); // Nhp gi tr cho bin a
scanf(%d, &b); // Nhp gi tr cho bin b
Chng:
a bi ton n gin ngoi thc t trn bng my tnh (lp trnh cho
my tnh gii) th chng ta cn phi thc hin qua cc bc nh:
- M t cc bc gii bi ton.
- Chn ngn ng lp trnh v lp trnh to thnh mt chng trnh
hon chnh.
- Thc thi chng trnh: nhp vo d liu v nhn kt qu.
Kim th chng trnh: kim tra xem chng trnh c thc thi ng theo yu
cu cho tt c cc trng hp hay khng.
Chng:
Tm tt:
Bi tp:
Chng:
Khai bo bin:
dng 1 vng nh trong my tnh, chng ta phi khai bo 1 bin trc
khi dng
C php 1:
Kieu tenBien;
Chng:
C php 2:
Kieu tenBien1, tenBien2, ;
V d:
int main( )
{
int a;
int x, y;
}
Khi to bin:
Php gn: Php gn l 1 php ton dng chp mt gi tr vo bin
C php 1:
tenBien = giaTri;
C php 2:
tenBien = bieuThuc;
C php 3:
Kieu tenBien = bieuThuc;
V d 1:
int main( )
{
int a, b, c;
a = 7;
b = 9;
c = a+b;
printf(Ket qua: %d, c );
return 0;
}
V d 2:
Chng:
int main ( )
{
int a;
a = 5;
a = a+7;
printf(Ket qua: %d, a);
return 0;
}
Ch :
Lun lun khai bo bin trc khi s dng
Lun lun khi to bin trc khi s dng
Gi tr chp vo bin: c th l h nh phn, bt phn, thp phn, thp lc
phn, s khoa hc (s thc),
V d:
int a = 1506; // 150610 h thp phn
int b = 01506; // 15068 h bt phn
int c = 0x1506; // 150616 (0x hay 0X) h thp lc phn
float d = 15.06e-3; // 15.06*10-3 (e hay E) s khoa hc.
Quy tc t tn bin:
Ngn ng C dng cc k t sau t tn bin:
a, b, c, , z
A, B, , Z
0, 1, , 9
_
Quy tc:
Bt u tn bin l k t ch hay k t _
Khng dng t kha t tn bin
Tn bi n khng co khoang tr ng
V d:
Chng:
int main( )
{
int a, b, c, d;
int x, y, z;
int i, j;
int diemToan, diemLapTrinhC;
int soTrang;
int So Luong Sinh Vien; // Sai: do tn bin c khong trng.
}
2.2 Cc kiu d liu c bn:
Cc thng tin lu tr trong my tnh gi l d liu (data). Mi d liu
thuc mt kiu d liu no .
-2,147,483,648
int 32
2,147,483,647
-2,147,483,648
long [int] 32
2,147,483,647
Kiu K t
Cc k t trong C c lu di dng m s.
Tp cc m s ca tt c cc k t c gi l bng m k t.
Bng m ph bin l bng m ASCII gm 256 k t
phn bit cc k t v cc bin trong chng trnh C, cc k t c
t trong 2 du nhy n. V d: A, a,
Kiu S bit
char 8
Lu s 65 tng ng vi k t A
Lu s 97 tng ng vi k t a.
Bng m ASCII
Chng:
Cc k t c bit
Kiu lun l (Boolean)
c im:
C ngm nh mt cch khng tng minh:
false (sai): gi tr 0.
true (ng): gi tr khc 0, thng l 1.
C++: bool
V d:
0 (false), 1 (true), 2 (true), 2.5 (true)
1 > 2 (0, false), 1 < 2 (1, true)
Kiu d liu c cu trc
Kiu d liu c cu trc l kiu d liu m cc gi tr ca n l s kt hp
ca cc gi tr khc.
C hai ton hng trong biu thc, cn gi l php ton hai ngi,
gm c:
+ Cng
- Tr
* Nhn
/ Chia
% Chia ly s d
V d
a = 1 + 2; b = 1 2; c = 1 * 2; d = 1 / 2;
e = 1*1.0 / 2; f = float(1) / 2; g = float(1 / 2);
h = 1 % 2;
x = x * (2 + 3*5); x *= 2 + 3*5;
K thut tch cc ch s ra khi s
Tch hng n v:
donvi = num % 10;
B hng n v:
num = num / 10;
Php ton tng/gim:
Khi cn tng gi tr ca bin ln 1 hay gim gi tr ca bin i 1
chng ta nn dng ton t tng/gim.
Cn gi l php ton 1 ngi.
Ch c mt ton hng trong biu thc.
++ (tng 1 n v), -- (gim 1 n v)
C php 1:
tenBien1 = ++tenBien2;
tenBien1 = --tenBien2;
t trc ton hng:
V d ++x hay --x: thc hin tng/gim trc.
C php 2:
Chng:
tenBien1 = tenBien2++;
tenBien1 = tenBien2--;
t sau ton hng
V d x++ hay x--: thc hin tng/gim sau.
V d:
x = 10; y = x++; // y = 10 v x = 11
x = 10; y = ++x; // x = 11 v y = 11
Php ton trn tng bit:
Tc ng ln cc bit ca ton hng (nguyn).
Gm cc php ton sau:
~ Php ph nh cc bit (hay ly s b 1)
& Php And cc bit tng ng
| Php Or cc bit tng ng
^ Php Xor cc bit tng ng
<< Php dch sang tri cc bit
>> Php dch sang phi cc bit
Chng:
V d:
void main()
{
int a = 5; // 0000 0000 0000 0101
int b = 6; // 0000 0000 0000 0110
int z1, z2, z3, z4, z5, z6;
z1 = a & b; // 0000 0000 0000 0100
z2 = a | b; // 0000 0000 0000 0111
z3 = a ^ b; // 0000 0000 0000 0011
z4 = ~a; // 1111 1111 1111 1010
z5 = a >> 2; // 0000 0000 0000 0001
z6 = a << 2; // 0000 0000 0001 0100
}
Php gn:
=
Khi nim
Thng c s dng trong lp trnh.
Gn gi tr cho bin.
C php
<bin> = <gi tr>;
<bin> = <bin>;
Chng:
Ly a ch ca bin
C php:
V d:
s1 = (1 > 2) && (3 > 4);
s2 = (1 > 2) || (3 > 4);
Chng:
Ton t u tin
() [] -> .
! ++ -- - + * (cast) & sizeof
* / %
+ -
<< >>
== !=
&
Chng:
|
^
&&
||
?:
= += -= *= /= %= &=
,
Chng:
Cc k hiu c bn:
Khi c bn ngha
iu kin
Chng:
Bc 1: Nhp gi tr ca n
Cc bc m t:
Bc 1: Nhp gi tr 2 s thc a, b.
Bc 2: tnh x = -b/a;
Bc 1: Gi s max = a
Bc 2: Nu b > max th
max = b
Bc 3: In ra s max
C u truc tu n t
Lnh
Lnh
Lnh
Bt u
a, b, c
a=a+1
b=b+1
c=c+1
a, b, c
Kt thc
Bt u
a, b
tam = a
a=b
b = tam
a, b
Kt thc
2.9 Tm tt chng 2:
2.10 Bi tp:
Bi tp l thuyt:
1. Trnh by cc kiu d liu c s trong C v cho v d.
2. Trnh by khi nim v bin v cch s dng lnh gn.
3. Phn bit hng thng v hng k hiu.
Cho v d minh ha.
4. Trnh by khi nim v biu thc.
Ti sao nn s dng cp ngoc n.
5. Trnh by cch nh dng xut.
Bi tp thc hnh:
6. Nhp nm sinh ca mt ngi v tnh tui ca ngi .
7. Nhp 2 s a v b. Tnh tng, hiu, tnh v thng ca hai s .
8. Nhp tn sn phm, s lng v n gi. Tnh tin v thu gi tr gia tng
phi tr, bit:
a. tin = s lng * n gi
b. thu gi tr gia tng = 10% tin
9. Nhp im thi v h s 3 mn Ton, L, Ha ca mt sinh vin. Tnh
im trung bnh ca sinh vin .
10.Nhp bn knh ca ng trn. Tnh chu vi v din tch ca hnh trn .
Chng:
> ln hn x>y
< nh hn x<y
Ch :
K hiu = lun pha sau.
Gia 2 k hiu khng c khong trng.
V d:
== Bng X==y
Ch
K hiu = lun pha sau
Gia 2 k hiu khng c khong trng
V d:
Chng:
! Ph nh - NOT !(x>=y)
Trong :
<BT Logic> l iu kin (dk).
<Lnh 1> l Cu lnh n hoc Cu lnh phc (kp gia { v })
C php 1:
C php 2
Bt u
n>0 ng
n = n+1
Kt thc
Bt u
x<0 ng
x = -x
Kt thc
c im ca cu lnh phc
Tt c cc cu lnh trong cng 1 khi s chu cng 1 tc ng
ca 1 cu lnh khc.
Cc khi lnh c th lng nhau (khi cha, khi con)
Bin khai bo trong 1 khi cha th c th dng trong khi con.
V d:
Bt u
n l n chn
Kt thc
Ch :
Trong cu lnh if lng nhau, cu lnh else s c kt hp vi cu
lnh if cng cp vi n
if (delta < 0)
printf(PT vo nghiem);
else // delta >= 0
if (delta == 0)
printf(PT co nghiem kep);
else
printf(PT co 2 nghiem);
Vi du: Gii v bin lun phng trnh bc nht: ax + b =0.
Bt u
a, b
a=0 ng
Sai
b=0 ng
Sai
Nghim V V s
x = -b/a nghim nghim
Kt thc
Trong :
<Bin/BT> l bin/biu thc cho gi tr ri rc (hng)
C php 1:
C php 2:
switch (a)
{
case 1 : printf(Mot); break;
case 2 : switch (b)
{
case 1 : printf(A); break;
case 2 : printf(B); break;
} break;
case 3 : printf(Ba); break;
default : printf(Khong biet doc);
}
}
Lu 2: Cc gi tr trong mi trng hp phi khc nhau.
switch (a)
{
case 1 : printf(Mot); break;
case 1 : printf(MOT); break;
case 2 : printf(Hai); break;
case 3 : printf(Ba); break;
case 1 : printf(1); break;
case 1 : printf(mot); break;
default : printf(Khong biet doc);
}
Trong on chng trnh trn c 3 trng hp c gi tr l 1.
Lu 3: switch s nhy n case tng ng v thc hin n khi no gp
break hoc cui switch s kt thc.
Lu 4: Tn dng tnh cht khi b break;
switch (a)
Chng:
{
case 1 :
case 3 : printf(So le); break;
case 2 :
case 4 : printf(So chan); break;
}
Lu 5: Khi xt nhiu trng hp cho mt bin ri rc, ta nn chn
switch.
Cu lnh if
if (a == 1)
printf(Mot);
if (a == 2)
printf(Hai);
if (a == 3)
printf(Ba);
if (a == 4)
printf(Bon);
if (a == 5)
printf(Nam);
Cu lnh switch
switch (a)
{
case 1: printf(Mot);
break;
case 2: printf(Hai);
break;
case 3: printf(Ba);
break;
Chng:
case 4: printf(Bon);
break;
case 5: printf(Nam);
}
ngha:
Nu bieuThuc c kt qu l 1 (true) th tenBien s c gi tr l
giaTri1
Ngc li tenBien s c gi tr l giaTri2
V d: Nhp 2 s nguyn a, b. Tm gi tr ln nht trong 2 s nguyn ny.
Tm tt chng 3:
Bi tp:
Bi tp thc hnh:
1. Nhp mt s bt k. Hy c gi tr ca s nguyn nu n c gi tr t
1 n 9, ngc li thng bo khng c c.
2. Nhp mt ch ci. Nu l ch thng th i sang ch hoa, ngc li i
sang ch thng.
3. Gii phng trnh bc nht ax + b = 0.
4. Gii phng trnh bc hai ax2 + bx + c = 0.
5. Nhp 4 s nguyn a, b, c v d. Tm s c gi tr nh nht (min).
6. Nhp 4 s nguyn a, b, c v d. Hy sp xp gi tr ca 4 s nguyn ny
theo th t tng dn.
7. Tnh tin i taxi t s km nhp vo. Bit:
a. 1 km u gi 15000
b. T km th 2 n km th 5 gi 13500
c. T km th 6 tr i gi 11000
d. Nu trn 120km c gim 10% tng tin.
Chng:
Chng 4 : Cu lnh lp
Mc tiu:
Tm tt ni dung:
Tm tt: Tm hiu v ci t cc cu lnh lp trong ngn ng C. M t cch
hot ng ca cu trc ny v hng dn chy tng bc chng trnh.
C php 2:
V d:
Ch :
K hiu ( v ) l bt buc
Gia du ) v thn vng lp khng c g c
Hot ng ca lnh lp while: Khi lnh while thc thi
B1: Biu thc iu khin c lng gi, ri kim tra
B2: Nu biu thc ny c gi tr 1 (true) th thn vng lp c
thc thi v quay li B1
Chng:
B3: Tin trnh ny tip tc cho n khi biu thc iu khin bng 0
(false)
V d 1: Tm s ln nht c dng 2k nhng nh hn n cho trc.
Theo di thc thi cu lnh trn khi n=10
V d 2: Theo di chng trnh m gim
Bt u
i=1
i <= n ng
i=i+1
Kt thc
n++;
}
Vng lp v tn (infinite loop):
Vng lp s khng bao gi kt thc nu biu thc iu khin lun
lun c gi tr khc true (gi tr khc 0).
V d:
void main()
{
int n = 1;
while (n < 10)
{
printf(%d, n);
n--;
}
n = 1;
while (n < 10)
printf(%d, n);
}
i lc, cc programmer c tnh to ra vng lp v tn bng cch
dng hng s khc 0 lm biu thc iu khin
C php 2:
Chng:
Bt u
ng
n
n<=0
Kt thc
V d 2: Tnh s ch s ca 1 s nguyn
Nhp 1 s nguyn dng: 60
S ny c 2 ch s
Cu lnh do while l mt cu lnh n v c th lng nhau.
V d:
int a = 1, b;
do
{
b = 1;
do
{
printf(%d\n, a + b);
b = b + 2;
}
while (b < 20);
a++;
}
while (a < 20);
Chng:
n = 1;
do
printf(%d, n);
while (n < 10);
4.4 Cu lnh for:
C php 1:
C php 2:
Chng:
Bt u
S=0
i=1
i <= n ng
S=S+i
S
i=i+1
Kt thc
1 3 5 2n 1
Vi du 4: Ti nh tng: S (n) ... , v i n0
2 4 6 2n 2
Bt u
i=1
S=0
k = 2*n+1
i <= k ng
S = S + i/(i+1)
S
i = i +2
Kt thc
Bt u
i=1
S=0
dau = 1
i <= n ng
S = S + dau*i
S dau = -dau
i = i +1
Kt thc
Nhn xt
expr1 ch thc hin duy nht 1 ln v thng c dng khi
to bin ban u (initialize)
expr2 dng kim tra iu kin c lp tip hay khng (test)
expr3 c thc thi sau khi thn vng lp c thc thi v thng
c dng thay i biu thc iu kin (update)
m tng ln t 1 n n
m gim xung t n n 1
Nhn xt:
Vng lp tng ln dng < hay <=
Vng lp gim xung dng > hay >=
B cc biu thc trong cu lnh for
Mt s cu lnh for khng cn phi y 3 biu thc iu
khin vng lp v th C cho php chng ta b mt s hay tt c
biu thc.
Cu lnh for l mt cu lnh n v c th lng nhau.
Chng:
B expr1
Nu biu thc 1 b i th khng c phn khi to c thc thi
trc vng lp
Ch :
2 du ; vn cn, d b i bt k biu thc no
B expr3
Nu biu thc 3 b i th thn vng lp phi c lnh thay i
expr3 thnh false
B expr1 v expr3
Nu expr1 v expr3 b i th vng lp for tr thnh vng lp while
B expr2
Nu biu thc 2 b i th mc nhin n hiu l gi tr true v vy
vng lp s khng kt thc (vng lp v tn)
B c expr1, expr2, expr3
Mt s lp trnh vin dng cch ny to vng lp v tn
Hot ng:
B1: bieuthuc1 c tnh ton
B2: bieuthuc2 c tnh ton v kt qu ca bieuthuc2 s dng lm
kt qu ca biu thc du phy
V d
Cu lnh continue
Cu lnh continue chuyn quyn iu khin n cui vng lp (
chun b qua ln lp tip theo).
Cu lnh continue ch c th dng cho cc lnh lp while,
dowhile v for (khng dng cho cu lnh switch).
Chng:
Cu lnh goto
Cu lnh goto cho php chng trnh nhy n by k im no
trong 1 hm
Gii hn ca lnh goto
Ch nhy trong cng 1 hm
Khng th nhy qua phn khai bo ca 1 bin
Nhn (Label) l 1 danh nh c t trc mt cu lnh
Tm tt chng 4:
Bi tp:
Bi 1: Nhp mt s nguyn dng n (n > 0).
Hy cho bit:
a. C phi l s i xng? V d: 121, 12321,
b. C phi l s chnh phng? V d: 4, 9, 16,
c. C phi l s nguyn t? V d: 2, 3, 5, 7,
d. Ch s ln nht v nh nht?
e. Cc ch s c tng dn hay gim dn khng?
Bi 2: Nhp mt s nguyn dng n. Tnh:
a. S = 1 + 2 + + n
b. S = 12 + 22 + + n2
c. S = 1 + 1/2 + + 1/n
d. S = 1*2**n = n!
e. S = 1! + 2! + + n!-
Chng:
Tinh S (n) 1 2 3 n ,
2 2 2 2
vi n 0
1 1 1
S ( n) 1
Tinh 2 3 n, vi n 0
Tinh P( x, y) x
y
Tinh S (n) 1 (1 2) (1 2 3) (1 2 3 n) , vi n 0
Cho s nguyn n. Tinh tri tuy t i cua n.
Cho s nguyn dng n g m k ch s . Tim ch s co gia tri ln nh t.
m s l ng c s chn cua s nguyn dng n.
In ra ch s u tin cua s nguyn dng n g m k ch s .
Cho 2 s nguyn dng a, b. Tim USCLN cua a va b.
Cho 2 s nguyn dng a, b. Tim BSCNN cua a va b.
Chng:
Tinh S (n) 1 2 3 n ,
2 3 n
vi n 0
1 2 3 n
S ( n)
Tinh 2 3 4 n 1 , vi n 0
1 1 1
S ( n) 1
Tinh 1 2 1 2 3 1 2 3 n , vi n 0
1 1 1
S ( n) 1
Tinh 2! 3! n! , vi n 0
1 2 1 2 3 1 2 3 n
S ( n) 1
Tinh 2! 3! n! , vi n 0
Giai va bin lu n phng trinh: ax bx c 0
2
S (n) n (n 1) (n 2) ... 1
Tinh , vi n 0
S = 1 + 1/(1 + 2) + + 1/(1 + 2 + + n)
Chng 5 : S dng hm
Mc tiu:
Quy tc t Tn hm
Bt u bng 1 ng t
K t u tin ca mi t nn vit HOA
V d 1:
Tn hm: XuatTong
Cng vic: tnh v xut tng 2 s nguyn
u vo: hai s nguyn x v y
u ra: khng c
void XuatTong(int x, int y)
{
int s;
s=x+y;
printf(%d cong %d bang %d, x, y, s);
}
V d 2
Chng:
Tn hm: TinhTong
Cng vic: tnh v tr v tng 2 s nguyn
u vo: hai s nguyn x v y
u ra: mt s nguyn c gi tr x + y
int TinhTong(int x, int y)
{
int s;
s=x+y;
return s;
}
V d 3
Tn hm: NhapXuatTong
Cng vic: nhp v xut tng 2 s nguyn
u vo: khng c
u ra: khng c
void NhapXuatTong( )
{
int x,y;
printf(Nhap 2 so nguyen: );
scanf(%d%d, &x, &y);
printf(%d cong %d bang %d, x, y, x+y);
}
Tm vc:
Khi nim:
L phm vi hiu qu ca bin v hm.
Bin:
Ton cc: khai bo trong ngoi tt c cc hm (k c hm
main) v c tc dng ln ton b chng trnh.
Cc b: khai bo trong hm hoc khi { } v ch c tc dng
trong bn thn hm hoc khi (k c khi con n). Bin
cc b s b xa khi b nh khi kt thc khi khai bo n.
Gii thch:
Bin a: ton cc.
Bin a1: cc b trong hm Ham1.
Bin a2: cc b trong hm Ham2.
Bin a21: cc b bn trong cp ngoc {} sau cu lnh int
a2; trong hm Ham2.
Bin a3: cc b trong hm main( ).
5.2 Gi hm:
Gi hm:
Chng:
Hm c th c gi nhiu ln vo nhng ch cn
V d: Tnh tng trung bnh cc cp ca 3 s
Nhp 3 s: 2 4 3
Trung bnh ca 2 v 4: 3
Trung bnh ca 4 v 3: 3.5
Trung bnh ca 3 v 2: 2.1
Chng:
Ch :
Khai bo hm cn c gi l function prototype
Mt prototype cung cp y cch gi hm
S lng tham s
Cc kiu ca cc tham s
Kiu tr v ca hm
Chng:
}
Khi ra khi hm, bin x s thay i (tng ln 1).
Lu :
Trong mt hm, cc tham s c th truyn theo nhiu cch.
void HonHop(int x, int &y)
{
x++;
y++;
}
S dng tham chiu l mt cch tr v gi tr cho chng trnh.
int TinhTong(int x, int y)
{
return x + y;
}
void TinhTong(int x, int y, int &tong)
{
tong = x + y;
}
void TinhTongHieu(int x, int y, int &tong, int &hieu)
{
tong = x + y; hieu = x y;
}
Cc v d v cch thc hin li gi hm:
V d 1:
{ Cc hm c khai bo y }
void main()
{
Chng:
int n = 9;
XuatTong(1, 2);
XuatTong(1, n);
TinhTong(1, 2);
int tong = TinhTong(1, 2);
TruyenGiaTri(1);
TruyenGiaTri(n);
TruyenDiaChi(1);
TruyenDiaChi(&n);
TruyenThamChieu(1);
TruyenThamChieu(n);
}
V d 1:
void HoanVi(int &a, int &b);
void main()
{
HoanVi(2912, 1706);
int x = 2912, y = 1706;
HoanVi(x, y);
}
void HoanVi(int &a, int &b)
{
int tam = a;
a = b;
b = tam;
}
5.6 Cu lnh return:
Chng:
Kt thc ng dng c li
5.9 Hm quy:
Mt chng trnh con c th gi mt chng trnh con khc.
S ln gi ny phi c gii hn (im dng).
Li gii quy: Mt li gii c gi l li gii quy nu trong li gii
gi li chnh n
V d: Tnh n! mt cch quy theo cng thc
Ta thy n! = 1*2**(n-1)*n
Ta thy S(n) = S(n-1)*n
Vy thay v tnh S(n) ta s i tnh S(n-1)
Tng t tnh S(n-2), , S(2), S(1), S(0) = 1
int GiaiThua(int n)
if (n == 0)
return 1;
else
return GiaiThua(n 1) * n;
int GiaiThua(int n)
if (n > 0)
return GiaiThua(n 1) * n;
else
Chng:
return 1;
S ci t
S 1:
S ci t
S 2:
Chng:
Tm tt chng:
Bi tp:
Bi 1: Vit hm i mt k t hoa sang k t thng.
Bi 2: Vit th tc gii phng trnh bc nht.
Bi 3: Vit th tc gii phng trnh bc hai.
Bi 4: Vit hm tr v gi tr nh nht ca 4 s nguyn.
Bi 5: Vit th tc hon v hai s nguyn.
Bi 6: Vit th tc sp xp 4 s nguyn tng dn.
Bi 7: Cho trc mt s nguyn dng (n>0), vit hm tnh s o ca s .
Bi 8: Cho trc mt s nguyn dng (n>0), vit hm kim tra xem n c phi
l s i xng (Tr v True/False)
Bi 9: Cho trc mt s nguyn dng (n>0), vit hm kim tra xem n c phi
l s chnh phng.
Bi 10: Cho trc mt s nguyn dng (n>0), vit hm kim tra xem n c phi
l s nguyn t.
Bi 11: Cho trc mt s nguyn dng (n>0), vit hm tnh tng cc ch s l.
Chng:
Chng 6 : Mng
Mc tiu:
Tm tt: Gii thiu v cu trc mng mt, hai chiu, khai bo d liu, cc thao
tc nhp xut, cc k thut thao tc trn mng. ng dng cc k thut ny
trong vic ci t cc hm tm kim, kim tra, xy dng mng, tch v ghp
mng.
V d:
Hnh nh
Lu :
Phi xc nh <s phn t> c th (hng) khi khai bo.
Mng nhiu chiu: <tng s phn t> = N1*N2**Nn
B nh s dng = <tng s phn t>*sizeof(<kiu c s>)
B nh s dng phi t hn 64KB (65535 Bytes)
Mt dy lin tc c ch s t 0 n <tng s phn t>-1
V d:
int Mang1Chieu[10];
S dng mng:
truy cp 1 phn t trong mng, chng ta vit tn mng sau l s
nguyn trong ngoc vung (indexing hay subscripting)
Chng:
C php:
V d:
Cc truy xut
Hp l: a[0], a[1], a[2], a[3]
Khng hp l: a[-1], a[4], a[5],
=> Cho kt thng khng nh mong mun!
c d liu
Chng:
Ch :
Khng c cc php ton trn mng:
Khng th thc hin php gn gia 2 mng
Khng th thc hin nhng php ton + - * / %, gia 2
mng
Khng th thay i kch thc mng khai bo.
Khng c s dng php gn thng thng m phi gn trc tip
gia cc phn t tng ng
<bin mng ch> = <bin mng ngun>; //sai
<bin mng ch>[<ch s th i>] = <gi tr>;
V d:
#define MAX 3
typedef int MangSo[MAX];
MangSo a = {1, 2, 3}, b;
b = a; // Sai
for (int i = 0; i < 3; i++)
b[i] = a[i];
Chng:
V d: [In ngc dy s]
Vit chng trnh nhp vo dy n s nguyn (1 n100). Sau in o
ngc dy ny.
Nhp s phn t ca dy: 5
Nhp cc phn t: 8 18 9 6 10
Dy o ngc: 10 6 9 18 8
Khi to mng:
Khi to mng (array initializer): Mng ging nh bt k bin khc,
chng ta c th khi to trong khi khi bo mng
C php: Danh sch cc gi tr c t trong { v } v cch nhau
bng k hiu ,
T ng xc nh s lng phn t
int a[] = {2912, 1706, 1506, 1904};
Ch :
Nu initializer ngn hn mng cc phn t cn li ca mng c
gi tr 0
Chng:
Mt s li thng gp:
Khai bo khng ch r s lng phn t
int a[]; => int a[100];
S lng phn t lin quan n bin hoc hng
int n1 = 10; int a[n1]; => int a[10];
const int n2 = 10; int a[n2]; => int a[10];
Khi to cch bit vi khai bo
int a[4]; a = {2912, 1706, 1506, 1904};
Chng:
Chng ta thng trc quan mng 2 chiu bng bng hnh ch nht, nhng
y khng phi l cch lu tr thc s ca mng 2 chiu trong b nh
my tnh. Cn gi l ma trn (matrix).
C lu tr cc mng nhiu chiu theo th t cc dng lin tip nhau
S dng mng:
truy cp phn t dng i, ct j:
C php: tenMang[i][j]
Thng thng chng ta dng cc vng lp for lng nhau x l cc
mng nhiu chiu
Chng:
1 0 0 0 0
0 1 0 0 0
0 0 1 0 0
0 0 0 1 0
0 0 0 0 1
Khi to mng:
Chng ta c th khi to (initializer) cho mng 2 chiu bng cc lng cc
initializer mt chiu
Ch :
Nu s dng ca initializer t hn s dng ca mng th nhng
dng cn li bng 0
Nu s phn t trn 1 dng ca intializer t hn mng th nhng
phn t cn li trn dng bng 0
Chng:
Ch :
Khng th dng hm sizeof tnh s phn t ca tham s mng.
truyn i s mng, chng ta ch cn truyn tn mng (khng c [
v ])
Ch :
Chng:
scanf(%d, &a[i]);
printf(%d\t, a[i]);
int a[MAX] , n;
scanf(%d, &n);
NhapMang (a,n);
XuatMang (a,n);
Mu 1:
Xut a[i];
if (a[i] %2 ==0)
Chng:
printf(%d\t, a[i]);
Mu 2:
Xut a[i];
if (a[i] > x)
printf(%d\t, a[i]);
Chng:
void main()
int a[MAX], n, x;
scanf(%d, &n);
NhapMang(a, n);
XuatMang(a, n);
scanf(%d, &x);
LietKeLonHonX(a, n, x);
{ //Ci t
}
Chng:
{ //Ci t
{ //Ci t
Mu 1:
int d = 0;
d++;
return d;
V d 1: m cc phn t c gi tr l s nguyn t
{ {
d++; int d = 0;
} {
{ {
return 1; d++;
} }
return 0; }
} return d;
Mu 2:
int d = 0;
d++;
return d;
}
Chng:
int d = 0;
if (a[i] < x)
d++;
return d;
int vtmax = 0;
vtmax = i;
return vtmax;
}
Chng:
I. 5. Tm v tr phn t c gi tr x
if (a[i] == x)
return i;
return -1;
return 1;
return 0;
return 0;
return 1;
if (a[i] >= 0)
return 0;
return 1;
int s = 0;
s += a[i];
return s;
{
Chng:
int s = 0;
if (a[i] %2!=0)
s += a[i];
return s;
int s = 0, d = 0;
s += a[i];
d ++;
if (d==0)
return 0;
return (float) s / d;
}
Chng:
i vi ham tinh trung binh co i u ki n phai lu y khi chia gia tri (Co th
mang khng co ph n t nao thoa i u ki n, n u ta chia tc la chia cho 0).
int s = 0, d = 0;
if (a[i] < 0)
s += a[i];
d++;
if (d == 0)
return 0;
return (float)s / d;
int tam = a;
a = b;
b = tam;
}
Chng:
HoanVi(a[i], a[j]);
{
for (int i = 0; i < n-1 ; i++)
a[i] = a[i+1];
n--;
{
for (int i = vitri; i < n-1 ; i++)
a[i] = a[i+1];
n--;
{
a[n]=x;
n++;
{
for (int i = n; i >vitri ; i--)
a[i] = a[i-1] ;
}
Chng:
a[vitri] = x;
n++;
Cho mang a kich thc n (n chn). Tach mang a thanh 2 mang b va c sao
cho: b co ph n t u cua mang a, ph n t con la i a vao mang c.
void TachMang(int a[], int n, int b[], int &m, int c[], int &l)
int k=n/2;
m=l=0;
b[m++]=a[i];
c[l++]=a[k+i]
a[n+i]=b[i];
n=n+m;
void NoiMang(int a[], int &n, int b[], int m, int c[], int &k)
k=0;
while(i<n&&j<m)
c[k++]=a[i++];
c[k++]=b[j++];
while(i<n)
c[k++]=a[i++];
}
Chng:
while(j<m)
c[k++]=b[j++];
Mng 1 chiu:
Hm nhp mng
void NhapMang(int a[], int &n)
{
}
Hm xut mng
void XuatMang(int a[], int n)
{
}
Thut ton Tnh tng, tch mng
Cho dy a[0], a[1], , a[n-1] hy tnh tng hay tch ca dy s
nguyn hay s thc trn
Thut ton m
Cho dy a[0], a[1], , a[n-1] hy m s lng phn t tha iu
kin DK
int i, j;
Chng:
HoanVi(a[i], a[j]);
n--;
a[vt] = x;
n++;
Mng 2 chiu:
Chng:
Hm nhp mng
void NhapMang(int a[][MAXM], int &n, int &m)
{
}
Hm xut mng
void XuatMang(int a[][MAXM], int n, int m)
{
}
Cc phng php duyt mng 2 chiu
Duyt ton mng
Duyt dng k. V d: tnh tng tng ct
int TongCot(int a[][MAXC], int m, int c)
int i, tong;
tong = 0;
return tong;
{
Chng:
int j, tong;
tong = 0;
return tong;
int i, tong;
tong = 0;
return tong;
int i, tong;
Chng:
tong = 0;
return tong;
Tm tt chng:
Bi tp:
1. Cc thao tc nhp xut
a. Nhp mng
b. Xut mng
2. Cc thao tc kim tra
a. Mng c phi l mng ton chn
b. Mng c phi l mng ton s nguyn t
c. Mng c phi l mng tng dn
3. Cc thao tc tnh ton
a. C bao nhiu s chia ht cho 4 nhng khng chia ht cho 5
b. Tng cc s nguyn t c trong mng
4. Cc thao tc tm kim
a. V tr cui cng ca phn t x trong mng
b. V tr s nguyn t u tin trong mng nu c
c. Tm s nh nht trong mng
d. Tm s dng nh nht trong mng
5. Cc thao tc x l
a. Tch cc s nguyn t c trong mng a a vo mng b.
Chng:
I. 13. Bi t p c ban
Vi du : Mang a: 6 3 1 10 11 18
k=2
K t qua: 10
71.(*) Cho 2 day A, B cac s nguyn (kich thc day A nho hn day B).
Hay ki m tra xem A co phai la con cua B hay khng?
72.Vi t ham li t k cac b 4 s a, b, c, d trong mang cac s nguyn (co it
nh t 4 ph n t va i m t khac nhau) sao cho a + b = c + d.
73.(*) Vi t chng trin h trung bin h c ng cua cac t ng cac day tng d n
h tin
co trong mang cac s nguyn.
Vi du : 1 2 3 4 2 3 4 5 6 4 5 6 => TB = 15.
74.Vi t chng trinh tinh t ng t t ca cac ph n t xung quanh trn mang cac
s nguyn. (Ph n t xung quanh la hai ph n t bn ca nh c ng lai b ng
chin h no (Vi du : 1 3 2 1, 2 la hai ph n t xung quanh cua 3).
Vi du : 1 3 2 5 3 9 6 t ng 17
75.(**) Vi t chng trinh nh p vao hai s ln a, b nguyn ( a, b co t 20 ch
tich, thng cua hai s trn.
s tr ln). Tinh t ng, hiu,
76.Vi t ham tinh t ng cac ph n t la s Amstrong (s Amstrong la s co c
i m nh sau: s co k ky s , t ng cua cac luy tha b c k cua cac ky s
b ng chinh s o.
Vi du : 153 la s co cac ky s 13+53+33= 153 la m t s Amstrong).
77.Vi t ham tim va xoa t t ca cac ph n t trung vi x trong mang m t chi u
cac s nguyn, n u khng t n ta i ph n t x trong mang thi tra v -1.
Chng:
91.(**) Vi t chng trinh in ra tam giac Pascal (dung mang m t chi u).
92.Vi t chng trinh nh p vao day s a g m n s thc ( n <= 100 ), nh p
vao day s b g m m s thc ( m <= 100 ). Hay s p x p hai day theo th
t tng d n.
93.(*) Tr n 2 day trn thanh day c sao cho day c vn co th t tng. Xu t
day a, b, c ra man hinh.
94.(*) Cho mang C co n ph n t (n < 200), cac ph n t la cac ch s trong
h m c s 16 (Hexa) (i u kin mi ph n t <= n ). Hay tach mang C
ra cac mang con theo i u kin sau: cac mang con c gii ha n bi hai
l n xu t hi n th hai cua con s trong day .
Vi du : Dy 123A4518B23
co cac day con la123A451, 23A4518B2, 23A4518B23
95.(**) Cho hai s nguyn dng A, B. Hay xac inh
hai s C, D ta o thanh
t hai s A, B sao cho C la s ln nh t, D la s nho nh t. Khi ga ch i m t
s ch s trong C (D), thi cac s con la i gi nguyn ta o thanh A, cac ch
s bo i gi nguyn ta o thanh B.
96.V du : A = 52568, B = 462384 C = 54625682384, D = 45256236884.
97.Vi t chng trinh nh p vao day s a g m n s nguyn (n <= 100). Hay
ao ng c day o.
Vi du : Nh p a: 3 4 5 2 0 4 1
Day sau khi ao: 1 4 0 2 5 4 3
98.Hy ki m tra xem day a cho co th t cha (day c go i la th t khi
la day tng ho c day giam).
99.Cho mang A co n ph n t hay cho bi t mang nay co i xng hay khng.
100. (**) Hay vi t chng trinh phat sinh ngu nhin mang cac s
0 n 32.000 va
nguyn g m 10.000 ph n t, mi ph n t co gia tri t
xy dng ham th ng k s l n xu t hin cac ph n t trong mang, sau o
cho bi t ph n t nao xu t hin nhi u l n nh t.
Vi du : Gi tr ca mang: 5 6 11 4 4 5 4
Chng:
Chng 7: Con tr
Mc tiu:
Tm tt ni dung:
V d:
RAM 512MB c nh a ch t 0 n 229 1
RAM 2GB c nh a ch t 0 n 231 1
Chng:
a ch ca bin l mt con s.
Ta c th to bin khc lu a ch ca bin ny Con tr.
V d:
Gii thch:
Bin i, j, n, m l cc bin kiu int bnh thng.
Bin a l mng cha ti a 10 phn t s nguyn int.
Bin b l mng cha ti a 20 phn t s nguyn int.
p l bin con tr, tr ti vng nh kiu int (4 bytes).
S dng t kha typedef:
Chng:
V d:
typedef int *pint;
int *p1;
pint p2, p3;
cha gi tr khng xc nh
tr n vng nh khng bit trc.
t a ch ca bin vo con tr (ton t &)
Ton t a ch: ly a ch ca 1 bin chng ta dng ton t &
C php: &tenBien
V d:
Ch :
C th xem ton t * l o ca ton t &
p dng ton t & cho 1 bin s sinh ra 1 con tr n bin
p dng ton t * cho 1 con tr s cho chng ta ly li bin gc ban
u
V d 2:
Ch :
Cn phn bit 2 lnh sau
Gii php:
Thay v truyn bin x nh l i s, chng ta cung cp &x, a ch ca x.
Chng ta s khai bo tham s tng ng l *p l b danh ca x.
Khi dng *p trong thn hm chnh l tham chiu gin tip n x.
Chng:
Nhn xt
Cc cu trc d liu trong C thng thng c kch thc c nh
Trong mt s trng hp cu trc d liu c kch thc c nh c th
hn ch chng ta khi vit chng trnh v chng p chng ta phi chn
kch thc cho chng khi vit chng trnh
nh ngha [Cp pht b nh ng] (Dynamic Storage Allocation hay Heap-
based Memory allocation): L kh nng chng trnh c th t c cc
khi b nh khi cn trong lc chng trnh ang chy.
Chng:
Nhn xt:
Hm malloc c dng ph bin nht
Cc hm khng cn tham s ch kiu d liu cn cp pht cho khi b
nh. V vy cc hm khng tr v con tr n kiu c th
void * hm tr v kiu con tr tng qut, ch l a ch ca b nh
p kt qu sang con tr c kiu c th
Khi nim Con tr NULL
(1) Khi hm cp pht b nh khng tm c vng nh c kch thc theo
cu ca lp trnh vin, hm s tr v con tr NULL
Chng:
B nh stack
c dng cp pht cho nhng bin automatic c kch thc c
nh
Cc bin c cp pht lin tc v theo c ch vo sau, ra trc
LIFO
B nh heap
c dng cp pht b nh ng trong qu trnh chng trnh
chy
Nhn xt
Kch thc b nh Heap > Kch thc b nh Stack
B nh Heap chm hn b nh Stack
B nh Heap do lp trnh vin t qun l
B nh Stack do my t qun l
Cp pht b nh ng cho mng:
Dng hm malloc:
Dng hm malloc cp pht b nh cho mng ging nh dng cp
pht cho chui, im khc bit l 1 phn t ca mng khng phi lun
l 1 byte nh trong chui
C php:
Chng:
Dng hm calloc:
Dng hm calloc cp pht b nh cho mng i lc tt hn v sau khi
cp pht mng, hm ny s khi to cc bit bng 0
C php:
Ch :
ptr phi tr n khi b nh do cc hm malloc, calloc, realloc
trc cp pht
size c th ln hn hay nh hn kch thc b nh ban u
Gii phng b nh cp pht:
Hm free
C php:
Hnh nh
Ch :
Nh dnh ch cho k t null
Cc gi tr trong khi b nh ny cha c khi to
P tr n 1 mng gm n+1 phn t
Khi to chui trc khi dng
Ch :
Dng nhng hm nh th phi rt cn thn v sau khi dng xong vng
nh c hm tr v, chng ta phi xa vng nh
ng dng 2: [Mng cc chui c cp pht ng]:
Bi ton: Hy vit chng trnh lu tr cc chui
Gii php 1: [Mng 2 chiu]
Chng ta c th dng mng 2 chiu lu cc chui, mi chui
l 1 dng trong mng 2 chiu
Chng:
C php 2:
V d:
Chng:
struct PHANSO
{
int tu, mau;
};
PHANSO ps1, *ps2;
ps1.tu = 1; ps1.mau = 2; // ps1 = 1/2
ps2 = &ps1;
ps2->tu = 3; ps2->mau = 4; // ps1 = 3/4
Tm tt chng:
Bi tp:
Bi 1: Cho on chng trnh sau:
float pay;
float *ptr_pay;
pay=2313.54;
ptr_pay = &pay;
Hy cho bit gi tr ca:
a. pay
b. *ptr_pay
c. *pay
d. &pay
Bi 2: Tm li
#include<stdio.h>
#include<conio.h>
void main()
{
Chng:
int *x, y = 2;
*x = y;
*x += y++;
printf("%d %d",*x,y);
getch();
}
Bi 1: Ton t no dng xc nh a ch ca mt bin?
Bi 2: Ton t no dng xc nh gi tr ca bin do con tr tr n?
Bi 3: Php ly gi tr gin tip l g?
Bi 4: Cc phn t trong mng c sp xp trong b nh nh th no?
Bi 5: Cho mng mt chiu data. Trnh by 2 cch ly a ch phn t u
tin ca mng ny.
Bi 6: Nu ta truyn cho hm i s l mng mt chiu. Trnh by hai cch
nhn bit phn t cui ca mng?
Bi 7: Trnh by 6 php ton c th thc hin trn con tr?
Bi 8: Cho con tr p1 tr n phn t th 3 cn con tr p2 tr n phn t
th 4 ca mng int. p2 p1 = ?
Bi 9: Ging nh cu trn nhng i vi mng float?
Bi 10: Trnh by khai bo con tr pchar tr n kiu char.
Bi 11: Cho bin cost kiu int. Khai bo v khi to con tr pcost tr n
bin ny.
Bi 12: Gn gi tr 100 cho bin cost s dng hai cch trc tip v gin tip.
Bi 13: In gi tr ca con tr v gi tr ca bin m n tr ti.
Bi 14: S dng con tr lm li cc bi tp v mng mt chiu.
Bi 15: Cho on chng trnh sau:
int *pint;
float a;
Chng:
char c;
double *pd;
Hy chn pht biu sai c php:
a. a = *pint;
b. c = *pd;
c. *pint = *pd;
d. pd = a;
Bi 16: Vit chng trnh nhp s nguyn dng n gm k ch s (0 < k 5)
, sp xp cc ch s ca n theo th t tng dn.
V d:
Nhp n = 1536
Kt qu sau khi sp xp: 1356.
Chng:
8.3 M file:
m file chng ta dng hm fopen()
C php:
Ghi d liu
C php:
8.5 ng file:
Chng:
Tm tt chng:
Bi tp:
Chng:
Tr 2 con tr vi nhau
Khi tr con tr p v con tr q kt qu l khong cch (s phn t
mng) gia cc con tr
So snh cc con tr
Chng:
u im
C th yu cu hm x l 1 on no gm mt s phn t ca
mng
V d: Tm gi tr ln nht ca on a[5], a[6], a[7], a[8], a[9], a[10],
a[11], a[12], a[13], a[14]
Trong phn ny ch trnh by k thut thng dng trn mng 2 chiu (mng
c s chiu ln hn cng tng t)
C lu tr cc mng nhiu chiu theo th t cc dng lin tip nhau
Tm tt chng:
Bi tp:
Chng:
Alert (bell) \a
Backspace \b
New line \n
Carriage return \r
Horizontal tab \t
Chng:
Backslash \\
Single quote \
Double quote \
Numeric escape:
S octal: Bt u k hiu \, sau l 1 s octal c ti a 3 ch s
V d: \34 hay \034
S hexa: Bt u k hiu \x, sau l 1 s hexa
V d: \x1f hay \x1F
Khi dng Escape Sequence nh 1 k t th phi trong cp nhy n
V d: \34
Ket qua
cua x+y
la z
Chng:
Tip tc hng chui: khi mt hng chui di qu 1 dng, C cho php chng
ta tip tc hng chui ny trn dng tip theo
Cch 1:
Kt thc dng bng backslash \
Dng k tip phi bt u ngay dng tip theo
Cch 2: Theo quy tc sau: khi hai hay nhiu hng chui lin k nhau
(cch nhau ch bng cc khong trng) trnh bin dch s ni chng
thnh 1 dng
V d:
Cch 2:
V d:
Chng:
Ch :
Nu initializer ngn hn di chui th cc k t cn li bng 0
Nu initializer bng hay di hn di chui li
Nu chiu di chui khng ch ra th trnh bin dch t cp pht va
nh cho bin chui
So snh gia mng k t v con tr k t
Ging nhau
Tham s ca hm l mng k t hay con tr k t u c coi
nh l con tr k t
Nu tham s hm l mng k t hay con tr k t th i s ca
n l phin bn no cng c
Khc nhau
D liu trong mng k t c php thay i
Nu d liu ca con tr k t l hng chui th d liu khng
c thay i
Con tr k t l 1 bin nn n c th tr n mt chui khc
Trong mng k t, tn mng l 1 con tr v khng c tr n
1 chui khc
To chui c th c chnh sa
Cch 1: Hng chui khng chnh sa c
Cch 2: To 1 mng k t lu chui cn chnh sa OK
Dng con tr k t thao tc chui
T xc nh di
char s[] = {T, H, C, S, , A, \0};
char s[] = THCS A; // T ng thm \0
c chui vo bin
Cch 1:
Ch :
Khng cn t k t & trc bienChuoi
Hm scanf dng c chui khi gp k t white space (khong
trng) hay k t new line hay tab (cc k t ny khng lu
trong mng)
Hm scanf lun lun thm k t null vo cui chui.
Nhp chui khng c khong trng.
Cch 2:
Ch :
Hm gets dng c chui khi gp k t new line (k t ny
khng lu trong mng)
Hm gets lun lun thm k t null vo cui chui.
Nhp chui c khong trng.
Hn ch ca hm c chui:
Khng th no xc nh c y mng k t trong qu trnh c
chui
Gii php 1:
V d: [m khong trng]
Vit hm m s khong trng trong chui
Ch :
Cc hm khai bo trong <string.h> c t nht 1 tham s chui
Cc tham s chui c khai bo kiu char *
Ch :
Chng:
Chc nng:
Sao chp chui s2 sang chui s1.
(Chnh xc hn: Sao chp chui c tr bi s2 sang mng c tr
bi s1)
Hm strcpy() tr v s1.
Hm strncpy:
Chc nng:
Sao chp n k t trong chui s2 sang chui s1.
(Chnh xc hn: Sao chp chui c tr bi s2 sang mng c tr
bi s1 ch vi n k t)
Hm strncpy() tr v s1
Hm strlen (String Length):
Chc nng:
Ly chiu di chui s: s k t trong chui s, khng tnh n k t
NULL
Hm strcat (String Concatenation):
Chc nng:
Chng:
Chc nng:
Ni n k t trong chui s2 vo cui chui s1.
Hm strncat() Tr v chui s1.
Hm strcmp (String Comparison):
Chc nng:
So snh 2 chui s1 v s2 tng k t t tri sang phi theo th t t
in (da trn m ASCII).
Gi tr tr v:
<0 th s1<s2
>0 th s1>s2
==0 th s1==s2
Hm strchr:
Chc nng:
Tm kim v tr xut hin u tin ca k t c trong chui s.
Hm strchr() tr v con tr n k t tm thy hay l gi tr NULL
nu khng tm thy.
Hm strstr:
Chc nng:
Tm kim v tr xut hin u tin ca chui s2 trong chui s1.
Chng:
}
Vit li hm strcat
char *MyStrCat(char *s1, const char *s2)
{
V d:
0 1 2 3 4 5 6
0 N h i \0 \0 \0 \0
1 M i n h \0 \0 \0
2 T r a m \0 \0 \0
Chng:
Cch 2:
V d:
Ch :
T t ca d liu khi go vo t ban phim u c lu vao 1 b nh tm thi
gi l b m (buffer)
Cac bc o c d liu t ban phim ca hm gets()
Bc 1: Nu buffer c d liu: Hm tun t ly d liu trong
buffer a vo bin cho n khi gp k t newline.
Bc 2: Nu buffer rng: Ch ngi dng nhp d liu vo.
Tng k t c a vo buffer ri vo bin cho n khi gp
k t newline.
Bc 3: Xa b k t newline khi buffer.
Cac bc o c d liu t ban phim ca hm scanf()
Bc 1: Xa b k t newline khi buffer.
Bc 2: Nu buffer c d liu: Hm tun t ly d liu trong
buffer a vo bin cho n khi gp k t newline, tab hay
white space.
Chng:
Tm tt chng:
Bi tp:
Bi 1: Xem thm mt s hm khc nh
atoi, atol, atof : i chui thnh s
itoa, ltoa, ultoa: i s thnh chui
strtok
Bi 2: Vit hm upper(char s[]) i ton b cc k t sang k t hoa (ging
hm strupr)
Chng:
tng
Gom nhng thng tin ca cng 1 SV thnh mt kiu d liu
mi => Kiu struct
Yu cu
Lu thng tin ca n SV?
Truyn thng tin ca n SV vo hm?
Nm sinh (s nguyn)
Hinh anh
Chi ti t
Chu y:
Cac thanh vin cua c u truc c lu tr trong b nh theo th t
chung c khai bao
Mi c u truc la 1 pha m vi (scope) mi, b t k tn bi n nao c khai
bao trong pha m vi nay se khng xung t vi nhng tn khac trong
chng trnh
Vi du :
Chng:
tenBienCauTruc.tenThanhVien;
Vi du :
printf(Ho ten: %s \n, sv1.hoTen);
sv1.namSinh++;
strcpy(sv1.maSV, TH0903);
sv1.namSinh = 1994;
scanf(%d, &sv1.namSinh);
gets(sv1.hoTen);
Toan t gan gia 2 bi n c u truc:
Co th sao chep toan b d liu t bi n c u truc nay sang bi n c u truc
tng thich b ng phep gan
Vi du :
sv1 = sv2;
Chc nng: Sao chep cac thanh vin tng ng gia 2 c u truc tng
thich cho nhau.
C 2 cch
<bin cu trc ch> = <bin cu trc ngun>;
<bin cu trc ch>.<tn thnh phn> = <gi tr>;
V d
struct DIEM
{
int x, y;
} diem1 = {2912, 1706}, diem2;
Chng:
diem2 = diem1;
diem2.x = diem1.x;
diem2.y = diem1.y * 2;
Ch y:
2 mang khng c dung phep gan sao chep d liu
Khi mang c nhung vao trong c u truc, phep toan gan trn bi n c u
truc se t ng sao chep d liu cua mang a nhung o
Ngoai toan t gan =, chng ta khng th thc hin nhng toan t
khac trn toan c u truc (vi du : >, <, ==, !=, )
Cac bi n c u truc tng thich: Hai bi n c u truc c go i la tng
thich n u 2 bi n c u truc c khai bao
Cung thi i m. Vi du sv1, sv2
Cung tn ki u c u truc.
struct struct
{ {
char maSV[10]; char maSV[10];
char hoTen[50]; char hoTen[50];
int namSinh; int namSinh;
} sv1, sv2; } sv3;
t tn cho Ki u c u truc:
t tn cho Ki u c u truc: vi c khai bao cac bi n c u truc ng n go n, d
thay i va cac bi n c u truc cung ki u tng thich vi nhau, C cho phep
chng ta t tn cho ki u c u truc
Chng:
{
char maSV[10];
char hoTen[50];
int namSinh;
} sv1, sv2;
Ch y: T t ca cac bi n thu c cung structure tag se tng thich vi nhau
Dung typedef chng ta co th inh
nghia tn cho ki u structure
Cu phap:
typedef struct
{
<Kieu1> tenMember1;
<Kieu2> tenMember2;
} TenKieu;
Vi du :
typedef struct
{
char maSV[10];
char hoTen[50];
int namSinh;
} SinhVien;
SinhVien sv1, sv2;
SinhVien sv3;
Nh n xet: Dung SinhVien nh la 1 ki u co sn trong C
Thnh phn ca cu trc l cu trc khc
struct DIEM
{
Chng:
int x;
int y;
};
struct HINHCHUNHAT
{
struct DIEM traitren;
struct DIEM phaiduoi;
} hcn1;
hcn1.traitren.x = 2912;
hcn1.traitren.y = 1706;
Cu trc quy (t tr)
struct PERSON
{
char hoten[30];
struct PERSON *father, *mother;
};
struct NODE
{
int value;
struct NODE *pNext;
};
Thnh phn ca cu trc c kch thc theo bit
struct bit_fields
{
Chng:
int bit_0 : 1;
int bit_1_to_4 : 4;
int bit_5 : 1;
int bit_6_to_15 : 10;
};
}
SinhVien Func4()
{
SinhVien sv;
return sv;
}
V n : Khi truy n tham s c u truc cho ham v tr v ki u d liu c u truc,
ca 2 u thc hin sao chep t t ca cac thanh vin trong c u truc T n thi
gian
Giai phap:
Truy n con tr n c u truc
Tr v con tr n c u truc
V d
struct DIEM {
int x, y;
};
void xuat1(int x, int y) { };
void xuat2(DIEM diem) { };
void xuat3(DIEM &diem) { };
void xuat4(DIEM *diem) { };
Hp nht union:
Khi nim
c khai bo v s dng nh cu trc
Cc thnh phn ca union c chung a ch u (nm chng ln nhau
trong b nh)
Chng:
Khai bo
union <tn kiu union>
{
<kiu d liu> <tn thnh phn 1>;
<kiu d liu> <tn thnh phn 2>;
};
So snh struct v union:
V d:
struct MYSTRUCT union MYUNION
{ {
char c; char c;
int n; int n;
} s; } u;
s.c = 1; s.n = 2; u.c = 1; u.n = 2;
{
char month[2];
char break_value1;
char day[2];
char break_value2;
char year[2];
};
} date = {29/12/82};
union trong struct
struct generic_tag
{
char type;
union share_tag
{
char c;
int i;
float f;
};
};
11.5 Mng cu trc:
Tng t nh mng vi kiu d liu c s (char, int, float, )
V d:
struct DIEM
{
int x;
Chng:
int y;
};
DIEM mang1[20];
DIEM mang2[10] = {{3, 2}, {4, 4}, {2, 7}};
Mang v c u truc co th t h p vi nhau
Mang cac c u truc: Mang co cac ph n t thu c ki u c u truc
C u truc co th cha
Mang nh la thanh vin
C u truc khac nh la thanh vin
Con tr n c u truc ang inh
nghia
Trong nhi u trng h p, c u truc nay l ng c u truc kia se giup vi t chng
trnh d dang hn
Vi du :
struct HoVaTenTag
{
char ho[10];
char tenLot[30];
char ten[10];
};
Chng ta co th dung c u truc HoVaTenTag trong 1 c u truc ln hn:
struct SinhVienTag
{
char maSV[10];
struct HoVaTenTag hoTen;
int namSinh;
};
Chng:
#define YEU 3
Hang loai;
Loai = KHA;
Giai phap 3: [Giai phap Enum]
C cung cp 1 loa i ki u c bit cho nhng bin ch c mt s nh cc
gi tr, l kiu enum.
Kiu enum l mt kiu m tp gi tr ca n do lp trnh vin ch ra. Nhng
gi tr ca kiu enum (gi l enumeration constant) l 1 tn do lp trnh vin
to.
11.7 Khai bo enum:
C php:
enum {giatri1, giatri2, } tenBien1, tenBien2, ;
V d:
enum {GIOI, KHA, TRUNGBINH, YEU, } loai1, loai2;
loai1 = GIOI;
loai2 = KHA;
To tn cho kiu enum
Khai bo 1 tag
Dng typedef nh ngha kiu
Khai bo 1 tag
C php:
enum tenTag {giatri1, giatri2, };
V d:
enum HangTag {GIOI, KHA, TRUNGBINH, YEU};
enum HangTag loai1, loai2;
11.8 S dng enum:
Dng typedef
Chng:
C php:
typedef enum {giatri1, giatri2, } TenKieu;
V d:
typedef enum {GIOI, KHA, TRUNGBINH, YEU} Hang;
Hang loai1, loai2;
typedef enum {TRUE, FALSE} Bool;
Bool ok=TRUE:
enum v int
C xem cc bin enum v cc hng enum l cc s nguyn. Mc nhin
trnh bin dch gn cc s nguyn 0, 1, 2, , cho cc hng enum
V d: Gioi = 0, Kha = 1
Chng ta c quyn t do chn la cc gi tr cho cc hng enum
V d:
enum HangTag {GIOI=1, KHA=2, TRUNGBINH=3, YEU=4};
Cc hng enum c th l cc s nguyn ty
V d:
enum HangTag {GIOI=100,KHA=150,TRUNGBINH=300,YEU=500};
Nu khng ch r gi tr ca hng enum th gi tr ca n bng gi tr
ca hng trc cng 1.
enum HangTag {GIOI,KHA=100,TRUNGBINH,YEU=500};
C th dng ln ln gia s nguyn v hng enum
Tm tt chng:
Bi tp:
1. Phn s
Khai bo kiu d liu phn s (PHANSO)
Chng:
Nhp/Xut phn s
Rt gn phn s
Tnh tng, hiu, tch, thng hai phn s
Kim tra phn s ti gin
Quy ng hai phn s
Kim tra phn s m hay dng
So snh hai phn s
2. n thc
Khai bo kiu d liu n thc (DONTHUC)
Nhp/Xut n thc
Tnh tch, thng hai n thc
Tnh o hm cp 1 ca n thc
Tnh gi tr n thc ti x = x0
3. a thc
Khai bo kiu d liu a thc (DATHUC)
Nhp/Xut a thc
Tnh tng, hiu, tch, thng hai n thc
Tnh o hm cp 1 ca n thc
Tnh o hm cp k ca n thc
Tnh gi tr n thc ti x = x0
4. im trong mt phng Oxy
Khai bo kiu d liu im (DIEM)
Nhp/Xut ta im
Tnh khong cch gia hai im
Tm im i xng qua gc to /trc Ox/Oy
Kim tra im thuc phn t no?
5. Tam gic
Chng: