Professional Documents
Culture Documents
Co So Lap Trinh
Co So Lap Trinh
LI M U
Khi bt u lm quen vi ngn ng lp trnh C th l ngn ng C Sinh Vin thng
gp kh khn trong vic chuyn vn l thuyt sang ci t c th trn my. Sch
Gio Trnh Bi Tp K Thut Lp Trnh nhm cung cp cho cc Hc Sinh - Sinh
Vin Trng C Cng Ngh Thng Tin Tp. H Ch Minh h thng cc bi tp, nhng
k nng thc hnh c bn v nng cao v ngn ng lp trnh C. Cun sch ny c
xem nh ti liu hng dn tng bc cho Hc Sinh - Sinh Vin ca Trng trong vic
hc v p dng kin thc l thuyt trn lp mt cch thnh tho v su rng.
Gio trnh c chia thnh 10 chng theo tng ni dung kin thc, km theo Cc
thi mu v 1 ph lc hng dn vit chng trnh, chun on li v sa li. Mi
chng gm 2 phn:
Phn l thuyt: c tm tt ngn gn vi y v d minh ho km theo.
Phn bi tp: vi nhiu bi tp c chia lm hai mc c bn v luyn tp
nng cao, bi tp c nh du * l bi tp kh dnh cho sinh vin luyn tp thm.
Phn kt lun: Tm tt ni dung v cc thao tc m sinh vin cn nm hay
nhng lu ca chng .
Trong qu trnh bin son, chng ti c gng trch lc nhng kin thc rt c bn,
nhng li hay gp i vi ngi mi lp trnh. Bn cnh chng ti cng b sung
thm mt s bi tp nng cao rn luyn thm k nng lp trnh.
Tuy nhin, ch ch chnh ca gio trnh ny l phc v cho mt mn hc nn chc chn
khng th trnh khi nhng thiu st, v th, rt mong nhn c nhng gp qu bu
ca cc thy c, cc ng nghip v cc bn Hc Sinh Sinh Vin gio trnh ny
ngy cng hon thin hn.
Chn thnh cm n.
Trang 1
NI DUNG
S TIT
03
06
Chng 3: Hm con
12
24
Chng 5: Chui k t
06
12
12
Chng 8: Tp tin
06
Chng 9: qui
06
10
03
Trang 2
Lu thut ton
CHNG 1
Cc k hiu biu din lu thut ton, cch biu din cc cu trc iu khin r
nhnh, cu trc lp v cc k thut lin quan n lu thut ton.
I.
TM TT L THUYT
K HIU
DIN GII
Bt u chng trnh
Lung x l
iu khin la chn
Nhp
Xut
Tr v gi tr (return)
Trang 3
Lu thut ton
a.
Cu trc tun t
Tun t thc thi tin trnh. Mi lnh c thc thi theo mt chui t trn
xung, xong lnh ny ri chuyn xung lnh k tip.
a, b, c
a=a+1
b=b+1
c=c+1
a, b, c
KET THUC
Trang 4
Lu thut ton
b.
Cu trc la chn
im quyt nh cho php chn mt trong hai trng hp.
if
Ch xt trng hp ng.
Bieu thc
ieu kien
ung
n>0
ung
n = n+1
KET THUC
Trang 5
Lu thut ton
ifelse
Xt trng hp ng v trng hp sai.
Sai
Bieu thc
ieu kien
ung
c.
Cu trc lp
Thc hin lin tc 1 lnh hay tp lnh vi s ln lp da vo iu kin.
Lp s kt thc khi iu kin c tha.
Trang 6
Lu thut ton
ieu
kien lap
ung
Sai
i=1
i n
ung
i
Sai
i=i+1
KET THUC
Trang 7
Lu thut ton
d.
Cc v d
Trang 8
Lu thut ton
BAT AU
a, b, c
Sai
a=0
ung
Sai
Nghiem
x=-b/a
b 0
Vo So
Nghiem
ung
Vo
Nghiem
KET THUC
1 3 5
2n + 1
+ + + ... +
2 4 6
2n + 2
, vi n>0
Trang 9
Lu thut ton
BAT AU
i=0
S=0
t=1
m=2
i <= n
Sai
ung
S = S + t/m
t=t+2
m=m+2
i = i +1
KET THUC
, vi n>0
BAT AU
i=1
S=0
dau = 1
i <= n
Sai
ung
S = S + dau*i
dau = -dau
i = i +1
KET THUC
Trang 10
Lu thut ton
II. BI TP
V lu thut ton sau
II.1. Bi tp c bn
1.
2.
3.
4.
5.
6.
Tnh n!,
7.
8.
Tnh S (n) = 1 + 3 + 5 + L + (2 n + 1) ,
9.
vi n > 0
10.
vi n > 0
11.
Tnh S (n) = 12 + 2 2 + 3 2 + L + n 2 ,
12.
Tnh S (n) = 1 + + + L + ,
13.
1
2
1
3
1
n
vi n 0
vi n 0
vi n > 0
vi n > 0
1
1
1
,
+
+L+
1+ 2 1+ 2 + 3
1+ 2 + 3 +L+ n
vi n > 0
14.
Tnh P ( x, y ) = x y .
15.
Tnh S (n) = 1 + (1 + 2) + (1 + 2 + 3) + L + (1 + 2 + 3 + L + n) ,
vi n > 0
16.
17.
18.
19.
20.
21.
22.
23.
24.
Cho s nguyn dng x. Kim tra xem x c phi l s hon thin khng?
Trang 11
Lu thut ton
Tnh S (n) = 1 + 2 2 + 33 + L + n n ,
Tnh
Tnh
vi n 0
1 2 3
n
+ + +L+
2 3 4
n +1 ,
vi n > 0
S ( n) = 1 +
1 1
1
+ +L+
2! 3!
n! ,
vi n > 0
S ( n) = 1 +
1+ 2 1+ 2 + 3
1+ 2 + 3 +L+ n
+
+L+
2!
3!
n!
,
S ( n) =
28.
Tnh
29.
2
Gii v bin lun phng trnh: ax + bx + c = 0
30.
31.
vi n > 0
32.
vi n > 0
vi n > 0
III. KT LUN
Lu thut ton rt hu ch trong vic m t cch gii quyt ca mt bi ton.
Vic m t ny rt trc quan thng qua cc k hiu hnh hc, y l giai on u
tin trc khi bt tay vo lp trnh trn mt ngn ng lp trnh c th.
Khi xy dng lu thut ton, chng ta cn ch mt vi im sau:
Trang 12
Cu trc iu khin
CHNG 2
CU TRC IU KHIN
I.
TM TT L THUYT
I.1. Cc k hiu
STT
K
HIU
{}
//
/*
4
*/
DIN GII
V D
void main()
Bt u v kt thc hm hay khi {
lnh.
}
Kt thc khai bo bin, mt lnh,
int x;
mt li gi hm, hay khai bo
void NhapMang(int a[], int &n);
nguyn mu hm.
Ch thch (ghi ch) cho mt dng.
//Ham nay dung de nhap mang
Ch c tc dng i vi ngi c
void NhapMang(int a[], int &n);
chng trnh.
/* Dau tien nhap vao n. Sau do
Tng t nh k hiu //, nhng
nhap cho tung phan tu */
cho trng hp nhiu dng.
void NhapMang(int a[], int &n);
KCH
THC
KIU LIN TC (S THC)
float
4 bytes
double
8 bytes
long double
10 bytes
KIU RI RC (S NGUYN)
K t
1 byte
char
S nguyn
1 byte
unsigned char S nguyn dng
1 byte
int
S nguyn
2 bytes
unsigned int
S nguyn dng
2 bytes
long
S nguyn
4 bytes
unsigned long S nguyn dng
4 bytes
char *
Chui
KIU
GHI CH
NH
DNG
%f
%lf
%lf
%c
%d
%d
%d
%u
%ld
%lu
%s
Trang 13
Cu trc iu khin
PHP
TON
NGHA
GHI CH
PHP TON S HC
1
Cng
Tr
Nhn
Chia ly phn d
PHP TON QUAN H
>
Ln hn
<
Nh hn
>=
Ln hn hoc bng
<=
Nh hn hoc bng
==
Bng nhau
!=
Khc nhau
PHP TON LOGIC
NOT
&&
AND
||
OR
TON T TNG GIM
Nu ton t tng gim t trc th tng
Tng 1
gim trc ri tnh biu thc hoc ngc
Gim 1
li.
PHP TON THAO TC TRN BIT
++
--
&
AND
OR
XOR
<<
Dch tri
>>
Dch phi
Trang 14
Cu trc iu khin
I.4. Cc hm c bn
STT
1
TN
HM
printf
TH VIN
DIN GII
Xut ra mn hnh.
Ly d liu t bn
scanf
#include<stdio.h>
phm.
Di chuyn du nhy
gotoxy
#include<conio.h> n ta (x, y) trn
mn hnh vn bn.
t mu cho ch (c
textcolor #include<conio.h>
gi tr t 0 n 15).
Xut ra mn hnh vi
cprintf
#include<stdio.h> mu ch nh lin
trc .
Dng thc hin lnh
delay
#include<dos.h>
tip sau mt khong
thi gian.
2
3
4
5
6
kbhit
#include<stdio.h>
#include<conio.h>
V D
#include<stdio.h>
#include<conio.h>
#include<dos.h>
void main()
{
int c = 1, n;
clrscr();
printf(Nhap n:);
scanf(%d, &n);
do{
textcolor(c);
gotoxy(20, 10);
cprintf(%d, n);
c++;
if (c>15)
c = 1;
delay(200);
} while(!kbhit());
Cu trc if
if (biu thc iu kin)
{
<khi lnh> ;
}
Nu biu thc iu kin cho kt qu khc khng th thc hin khi lnh.
V d:
#include <conio.h>
#include <stdio.h>
void main ()
float number ;
printf ( Nhap mot so trong khoang tu 1 den 10 => ) ;
scanf ( %f, &number) ;
if (number >5)
printf ( So ban nhap lon hon 5. \n) ;
printf ( %f la so ban nhap. , number);
}
Gio trnh Bi Tp K Thut Lp Trnh
Trang 15
Cu trc iu khin
b.
Cu trc if else
if (biu thc iu kin)
{
<khi lnh 1>;
}
else
{
<khi lnh 2>;
}
Nu biu thc iu kin cho kt qu khc khng th thc hin khi lnh 1,
ngc li th cho thc hin khi lnh th 2. Biu thc iu kin phi t trong
cp du ngoc trn.
V d: Gii v bin lun phng trnh: ax+b=0
#include <conio.h>
#include <stdio.h>
void main ()
float a, b;
printf ( \n Nhap vao a:);
scanf ( %f, &a);
printf ( Nhap vao b:);
scanf ( %f, &b) ;
if (a= = 0)
if (b= = 0)
printf ( \n PTVSN);
else
printf ( \n PTVN);
else
printf ( \n Nghiem x=%f, -b/a);
getch ();
case nk:
<cc cu lnh> ;
break ;
Gio trnh Bi Tp K Thut Lp Trnh
Trang 16
Cu trc iu khin
[default: cc cu lnh]
}
ni l cc hng s nguyn hoc k t.
Ph thuc vo gi tr ca biu thc vit sau switch, nu:
o Gi tr ny = ni th thc hin cu lnh sau case ni.
o Khi gi tr biu thc khng tha tt c cc ni th thc hin cu lnh sau
default nu c, hoc thot khi cu lnh switch.
o Khi chng trnh thc hin xong cu lnh ca case ni no th n s
thc hin lun cc lnh thuc case bn di n m khng xt li iu kin
(do cc ni c xem nh cc nhn) V vy, chng trnh thot khi
lnh switch sau khi thc hin xong mt trng hp, ta dng lnh break.
V d: To menu cp 1 cho php chn menu bng s nhp t bn phm.
#include<stdio.h>
#include<conio.h>
int ChonTD ()
int chon ;
switch (chon)
case 1:
printf ("\nBan chon lau thai!") ;
break ;
case 2:
printf ("\nBan chon nuoc ngot!") ;
break ;
case 3:
printf ("\nBan chon ca loc hap bau!") ;
break ;
case 4:
printf ("\Ban chon chuot dong!") ;
Gio trnh Bi Tp K Thut Lp Trnh
Trang 17
Cu trc iu khin
break ;
default:
printf ("\nBan chon khong dung!") ;
void main()
clrscr() ;
int c ;
c=ChonTD() ;
TDchon(c) ;
getch() ;
}
I.7. Cu trc lp
a.
for
for (<biu thc khi gn>; <biu thc iu kin>; <biu thc tng/gim>)
{
<khi lnh>;
}
Bt k biu thc no trong 3 biu thc ni trn u c th vng nhng phi
gi du chm phy (;).
Hot ng ca cu trc iu khin for:
Trang 18
Cu trc iu khin
Nu biu thc 2 0 th cho thc hin cc lnh ca vng lp, thc hin
biu thc 3. Quay tr li bc 2.
Ngc li thot khi lp.
V d: In ra mn hnh bng m ASCII t k t s 33 n 255.
#include<conio.h>
#include<stdio.h>
void main()
{
for (int i=33;i<=255;i++)
printf("Ma ASCII cua %c: %d\t", i, i) ;
getch () ;
}
b.
while
< Khi gn>
while ( <biu thc iu kin>)
{
lnh/ khi lnh;
< tng/gim ch s lp>;
}
long n, tong=0;
int sochuso=0;
float tb;
printf ("Nhap vao gia tri n gom k chu so") ;
scanf ("%ld",&n) ;
while(n>0)
tong=tong+n%10 ;
sochuso++ ;
n=n/10 ;
tb=1.0*tong/sochuso ;
printf ("Gia tri trung binh la: %f", tb) ;
Gio trnh Bi Tp K Thut Lp Trnh
Trang 19
Cu trc iu khin
getch () ;
}
c.
do while
do
{
< khi lnh> ;
} while (biu thc iu kin) ;
Thc hin khi lnh cho n khi biu thc c gi tr bng 0.
V d: Nhp k t t bn phm hin th ln mn hnh m ASCII ca k t ,
thc hin n khi nhn phm ESC (M ASCII ca phm ESC l 27).
#include<stdio.h>
#include<conio.h>
void main()
int ma ;
do{
ma=getch ();
if (ma !=27)
printf ("Ma ASCII %c:%d\t", ma, ma);
}while (ma!=27) ;
getch () ;
# Lp while kim tra iu kin trc khi thc hin lp, cn vng lp dowhile
thc hin lnh lp ri mi kim tra iu kin. Do vng lp do...while thc hin
lnh t nht mt ln.
I.8. break v continue
a.
break
Dng kt thc vng lp trc tip cha n khi tha iu kin no .
V d: Cho php ngi dng nhp lin tc gi tr n cho n khi nhp m th
dng.
#include<stdio.h>
#include<conio.h>
void main()
Trang 20
Cu trc iu khin
while (1)
{
printf(\nNhap n: );
scanf(%d, &n);
if(n<0)
break;
}
}
b.
getch () ;
continue
Dng b qua mt ln lp khi tha iu kin no .
V d: In ra mn hnh gi tr t 10 n 20 tr i s 13 v s 17.
#include<stdio.h>
#include<conio.h>
void main()
II. BI TP
II.1. Phng php chy tay tng bc tm kt qu chng trnh
Gi tr ban u ca mi bin.
Bc
(Hoc ln thc hin)
0
1
2
...
Bin 1
Bin 2
Bin n
Gi tr 0
Gi tr 1
Gi tr 2
Gi tr 0
Gi tr 1
Gi tr 2
Gi tr 0
Gi tr 1
Gi tr 2
Kt qu in ra
mn hnh
Trang 21
Cu trc iu khin
Trang 22
Cu trc iu khin
Gi tr
ca bin i
0
Bc thc hin
Kt qu in ra
mn hnh
0
0
1
0
1
2
0
1
2
3
4
4
Ti bc 4, gi tr ca i = 4 vi phm iu kin lp (i<a) nn vng
lp kt thc. Do kt qu in ra mn hnh:
0
1
2
3
II.2. Bi tp c bn
a.
1.
Trang 23
Cu trc iu khin
if(a%2==0)
printf("Gia tri cua a la chan);
printf(Tong cua a va b la: %d, a+b) ;
2.
3.
4.
5.
6.
7.
8.
Trang 24
Cu trc iu khin
10. Nhp vo gi, pht, giy. Kim tra xem gi, pht, giy c hp l hay
khng? In kt qu ra mn hnh.
11. Vit chng trnh nhp vo ngy, thng, nm hp l. Cho bit nm ny c
phi l nm nhun hay khng? In kt qu ra mn hnh.
12. Vit chng trnh tnh din tch v chu vi cc hnh: tam gic, hnh vung,
hnh ch nht v hnh trn vi nhng thng tin cn c nhp t bn phm.
13. Vit chng trnh tnh tin cc TAXI. Bit rng:
-
KM u tin l 5000.
Cu trc lp
Trang 25
Cu trc iu khin
}
18. Cho bit kt qu ca an chng trnh sau:
int i=10, s=0;
while(i>0)
{
if(i%2= =0)
s+=i;
else
if(i>5)
s+=2*i;
i--;
}
printf(s = %d,s);
19. Cho bit kt qu ca an chng trnh sau:
int a=18, i=1;
do{
if(a%i==0)
printf("\t %d",i);
i++;
} while(i<=a);
20. Cho bit kt qu ca an chng trnh sau:
int a=11, b=16, i=a;
while( i<b )
{
if(i%2==0)
{
printf("\t %d", i);
break;
}
i++;
}
21. Cho bit kt qu ca an chng trnh sau:
int a=10, s=0, i=0;
Gio trnh Bi Tp K Thut Lp Trnh
Trang 26
Cu trc iu khin
while( i<a )
{
i++;
if(i%2==0) continue;
else s=s+i;
}
printf("s=%d",s);
22. Cho bit kt qu ca an chng trnh sau:
int i=1,s=0;
while(1)
{
s=s+i++;
if(i%2)
i=i+2;
else
i=i+1;
if(i>20)
break;
}
printf("%d",s);
23. Vit chng trnh in ra mn hnh hnh ch nht c kch thc m n (m, n
nhp t bn phm).
V d: Nhp m=5, n=4
* * * * *
* * * * *
* * * * *
* * * * *
24. Vit chng trnh in ra mn hnh hnh ch nht rng kch thc m n (m, n
nhp t bn phm).
V d: Nhp m=5, n=4
* * * * *
*
*
*
*
* * * * *
25. Vit chng trnh in ra mn hnh tam gic vung cn c c cao h (h
nhp t bn phm).
Gio trnh Bi Tp K Thut Lp Trnh
Trang 27
Cu trc iu khin
V d: Nhp h=4
*
* *
* * *
* * * *
26. Vit chng trnh in ra mn hnh tam gic cn rng c cao h (h nhp t
bn phm).
V d: Nhp h=4
*
* *
*
*
* * * *
27. Vit chng trnh in ra mn hnh tam gic cn c c cao h (h nhp t
bn phm).
V d: Nhp h=4
*
* *
* * *
28. Vit chng trnh
*
* *
* * *
* * * *
in ra mn hnh tam gic cn rng c cao h (h nhp t
bn phm).
V d: Nhp h=4
*
*
*
*
* * * * * * *
29. Vit chng trnh nhp s nguyn dng n. Lit k n s nguyn t u tin.
30. Vit chng trnh nhp vo hai s nguyn dng a v b. Tm c s chung
ln nht v bi s chung nh nht ca a v b.
31. Vit chng trnh nhp vo mt s nguyn n gm ti a 10 ch s (4 bytes).
In ra mn hnh gi tr nh phn ca s trn. (Hng dn: chia ly d cho 2 v
xut theo th t ngc li dng hm gotoxy, wherex, wherey).
32. Vit chng trnh m s c s ca s nguyn dng N.
V d: N=12
s c s ca 12 l 6
33. Mt s hon thin l mt s c tng cc c s ca n (khng k n) bng
chnh n. Hy lit k cc s hon thin nh hn 5000.
V d: s 6 l s han thin v tng cc c s l 1+2+3=6.
Gio trnh Bi Tp K Thut Lp Trnh
Trang 28
Cu trc iu khin
34. Nhp vo ngy, thng, nm. Cho bit l ngy th my trong nm.
35. In ra dy s Fibonaci
f1 = f0 =1 ;
fn = fn-1 + fn-2 ;
(n>1)
Trang 29
Cu trc iu khin
III. KT LUN
Trang 30
Hm con
CHNG 3
HM CON
I.
TM TT L THUYT
Trang 31
Hm con
int l=strlen(St);
for(int i=0;i<l;i++)
S[i]=St[i];
}
void Doc1Sector(int vt, char buf[512])
{
if(absread(0,1,vt,buf))
{
printf("\n loi doc dia, nhan enter thoat");
getch();
exit(1);
}
}
void Ghi1Sector(int vt, char buf[512])
{
if(abswrite(0,1,vt,buf))
{
printf("\n loi ghi dia, nhan enter thoat");
getch();
exit(1);
}
}
void TimVaThayThe(char * S, char *St, unsigned char buf[])
{
for(int i=33;i<=500;i++)
{
Doc1Sector(i, buf);
char * p=strstr(buf, S);
if(p)
{
ThayThe(p, St);
Ghi1Sector(i, buf);
}
}
}
Trang 32
Hm con
Cc hm con
(nu c)
a.
Khi khai bo
Bao gm cc khai bo v s dng th vin, khai bo hng s, khai bo hm
con (cc nguyn mu hm), khai bo cc bin ton cc v khai bo cc kiu
d liu t nh ngha.
b.
Hm chnh (main())
Cha cc bin, cc lnh v cc li gi hm cn thit trong chng trnh.
c.
Cc hm con
c s dng nhm mc ch:
Khi c mt cng vic ging nhau cn thc hin nhiu v tr.
Khi cn chia mt chng trnh ln phc tp thnh cc n th nh (hm
con) chng trnh c trong sng, d hiu trong vic x l, qun l
vic tnh ton v gii quyt vn .
d.
Nguyn mu hm
<Kiu d liu ca hm> Tn hm ([ danh sch cc tham s]);
Nguyn mu hm thc cht l dng u ca hm thm du chm phy (;) vo
cui, tuy nhin tham s trong nguyn mu hm c th b phn tn.
Trang 33
Hm con
Kiu d liu ca hm
Xc nh da vo kt qu ca bi ton (Output). Gm 2 loi :
void: Hm khng tr v gi tr. Nhng hm loi ny thng ri vo nhng
nhm chc nng: Nhp / xut d liu , thng k, sp xp, lit k.
void Tn_hm (danh sch cc tham s)
{
Khai bo cc bin cc b
Cc cu lnh / khi lnh hay li gi n hm khc.
}
Kiu d liu c bn (ri rc/ lin tc) hay kiu d liu c cu trc:
Kiu d liu ty theo mc ch ca hm cn tr v gi tr g thng qua vic
phn tch bi ton. Nhng hm loi ny thng c s dng trong cc
trng hp: m, kim tra, tm kim, tnh trung bnh, tng, tch,
<Kiu d liu> Tn_hm ([danh sch cc tham s])
{
<Kiu d liu> kq;
Khai bo cc bin cc b
Cc cu lnh / khi lnh hay li gi n hm khc.
return kq;
}
Tham s
Xc nh da vo d liu u vo ca bi ton (Input). Gm 2 loi :
Tham s khng l con tr (tham tr): Khng thay i hoc khng cn
ly gi tr mi ca tham s sau li gi hm. Tham s dng ny ch mang
ngha l d liu u vo.
Tham s con tr (tham bin): C s thay i gi tr ca tham s trong
qu trnh thc hin v cn ly li gi tr sau khi ra khi hm. ng dng
ca tham s loi ny c th l d liu u ra (kt qu) hoc cng c th
va l d liu u vo va l d liu u ra.
Trang 34
Hm con
c.
Tn hm
t tn theo quy c t tn trong C sao cho tn gi ng vi chc nng
hay mc ch thc hin ca hm v gi nh.
d.
V d
V d 1: Vit chng trnh nhp s nguyn dng n v in ra mn hnh cc c
s ca n
Phn tch bi ton:
Input: n ( xc nh tham s)
-
Khng tr v gi tr.
Xc nh tn hm: Hm ny dng in ra cc c s ca n nn c th t l
LietKeUocSo
Ta c nguyn mu hm:
void LietKeUocSo ( unsigned int n );
#include<conio.h>
#include<stdio.h>
//Khai bao nguyen mau ham
void LietKeUocSo ( unsigned int n );
void main()
{
unsigned int n;
printf(Nhap n = );
scanf(%u,&n);
printf("Cac uoc so cua n : " );
LietKeUocSo(n);
getch( );
}
void LietKeUocSo (unsigned int n)
{
Gio trnh Bi Tp K Thut Lp Trnh
Trang 35
Hm con
Tr v gi tr ca S.
Trang 36
Hm con
scanf(%u,&n);
kq = TongS ( n );
printf(Tong can tinh la: %lu , kq);
getch( );
}
unsigned long TongS (unsigned int n)
{
unsigned long S=0;
int i=1;
while(i<=n)
{
S+=i;
i++;
}
return S;
}
II. BI TP
II.1. Bi tp c bn
1.
2.
Vit chng trnh tnh din tch v chu vi ca hnh ch nht vi chiu di v
chiu rng c nhp t bn phm.
3.
Vit chng trnh tnh din tch v chu vi hnh trn vi bn knh c nhp
t bn phm.
4.
5.
6.
7.
8.
9.
Vit chng trnh tnh tin lng ngy cho cng nhn, cho bit trc gi vo
ca, gi ra ca ca mi ngi.
Trang 37
Hm con
Gi s rng:
-
13531
Khng i xng:
13921
Trang 38
Hm con
V d: c s l ln nht ca 27 l 9.
21. Vit chng trnh nhp s nguyn dng n gm k ch s (0 < k 5) , kim tra
xem cc ch s ca n c ton l hay ton chn khng.
22. (*) 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.
II.2. Bi tp luyn tp v nng cao
23. Vit chng trnh nhp s nguyn dng n gm k ch s (0 < k 5) , sau
nhp mt s nguyn x, tm v tr xut hin ca ch s c gi tr x trong n.
V d: Nhp n=1526,
x=2
III. KT LUN
Trc khi xy dng mt hm ta phi xc nh mc ch ca hm l dng
lm g, trn c s , ta mi xc nh c cc thnh phn ca hm v xy dng
nguyn mu hm.
Mi hm phi thc hin mt chc nng c lp v tch bit vi cc hm khc
(khng c lng nhau).
Gio trnh Bi Tp K Thut Lp Trnh
Trang 39
Hm con
Trang 40
Mng mt chiu
CHNG 4
MNG MT CHIU
Cch khai bo d liu kiu mng, 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.
I.
TM TT L THUYT
//
float b[50]; //
Cch 2: Con tr
ngha: Khi ta khai bo mt mng vi kiu d liu bt k (int, float, char,)
th tn ca mng thc cht l mt hng a ch ca phn t u tin.
< Kiu d liu > *< Tn mng >;
V d :
int *p;
int b[100];
p = b;
Trang 41
Mng mt chiu
# Lu : Khi s dng bin con tr truy xut mng, theo cch nh trn th
thc cht con tr p ch chim 2 byte b nh cha a ch m thi. to
mng cha d liu thnh phn th ta phi cp pht vng nh cho con tr p.
Dng hm : malloc, calloc trong th vin <stdlib.h> cp pht vng nh.
V d:
+ Cch 1: dng malloc
int *px;
//Khai bo con tr px
px = (int *) malloc (100); //Cp pht 100 nh kiu int cho con tr px
+ Cch 2: dng calloc
int *p;
//khai bo con tr p
Trang 42
Mng mt chiu
int *p = a[3];
//Ly a ch phn t th 3
V d :
int a[7];
int *px;
px = a;
//px tr ti phn t th 0
px = px + 4;
//px tr ti phn t th 4
a[0]
a[1]
a[2]
a[3]
a[4]
a[5]
a[6]
V d minh ho: Vit chng trnh nhp vo mng mt chiu 10 phn t kiu s
nguyn
#include <conio.h>
#include <stdio.h>
void main ( )
{
int a[10], i;
int *p;
for (i = 0 ; i < 10 ; i ++)
{
printf ( a [ %d ] = , i );
scanf ( %d, &a[i] );
}
p = a;
printf ( \n Noi dung mang vua nhap: );
for (i = 0; i < 10 ; i ++)
printf ( %d \t , *(p + i));
getch ( );
}
II. BI TP
II.1. Mt s k thut c bn
a.
K thut t c hiu
Trang 43
Mng mt chiu
Trang 44
Mng mt chiu
II.2. Bi tp c bn
a.
Phng php c bn
Vit chng trnh nhp xut mng mt chiu cc s nguyn.
#include <conio.h>
#include <stdio.h>
#define MAX 100
void NhapMang (int a[], int &n)
{
printf (Nhap so phan tu: );
scanf ( %d , &n);
for (int i = 0; i < n; i ++)
{
printf ( a [%d] = , i);
scanf ( %d , &a[i]);
}
}
void XuatMang (int a[], int n)
{
printf (\nNoi dung mang: );
for (int i = 0; i < n; i ++)
printf ( %d \t , a[i]);
}
void main ( )
{
clrscr ( );
int a[MAX] , n;
NhapMang (a,n);
XuatMang (a,n);
getch ( );
}
Bi tp
1.
2.
3.
Vit chng trnh pht sinh ngu nhin mng mt chiu cc s nguyn
m.
4.
Vit chng trnh pht sinh ngu nhin mng mt chiu cc s nguyn sao
cho mng c th t tng dn (Khng sp xp).
Trang 45
Mng mt chiu
5.
6.
7.
8.
9.
Phng php c bn
Vit hm tm phn t c gi tr x xut hin u tin trong mng mt
chiu.
(Nu tm thy tr v v tr xut hin x, ngc li tr v -1)
int TimX (int a[], int n, int x)
{
for (int i = 0; i < n ; i ++)
if ( x==a[i] )
return i;
return -1;
}
Bi tp
11. Vit hm tm v tr phn t c gi tr x xut hin cui cng trong mng.
12. Vit hm tm v tr ca phn t nh nht trong mng cc s nguyn.
13. Vit hm tm v tr ca phn t ln nht trong mng cc s nguyn.
14. Vit hm in v tr cc phn t nguyn t trong mng cc s nguyn.
15. Vit hm in v tr cc phn t nguyn t ln hn 23.
16. Vit hm tm v tr phn t m u tin trong mng. Nu khng c phn t
m tr v 1.
17. Vit hm tm v tr phn t m ln nht trong mng.
Gio trnh Bi Tp K Thut Lp Trnh
Trang 46
Mng mt chiu
m Tn sut
Phng php c bn
Vit hm m cc phn t chia ht cho 5 trong mng cc s nguyn.
int Dem (int a[], int n )
{
int dem = 0;
for (int i = 0; i < n ; i++ )
if ( a[i] % 5 == 0 )
dem++;
return dem;
}
Bi tp
26. Vit hm m cc phn t m, dng trong mng.
27. Vit hm m cc phn t chn, l trong mng.
28. Vit hm m s ln xut hin ca phn t x trong mng.
29. Vit hm m cc phn t nh hn x trong mng.
30. Vit hm m cc phn t l s nguyn t trong mng.
Gio trnh Bi Tp K Thut Lp Trnh
Trang 47
Mng mt chiu
Phng php c bn
Vit hm tnh tng cc phn t trong mng.
long TinhTong (int a[], int n )
{
long tong = 0;
for (int i = 0; i < n; i++ )
tong = tong + a[i] ;
return tong;
}
Vit hm tnh gi tr trung bnh cc phn t c gi tr m trong mng.
i vi hm tnh trung bnh c iu kin phi lu khi chia gi tr (C th
mng khng c phn t no tho iu kin, nu ta chia tc l chia cho 0).
float TrungBinhAm (int a[], int n )
{
long tong = 0;
int spt=0;
for (int i = 0; i < n; i++ )
if( a[i]<0 )
{
tong = tong + a[i] ;
spt++;
}
if(spt==0)
return 0;
return 1.0*tong/spt;
}
Bi tp
33. Vit hm tnh tng cc phn t chn trong mng.
34. Vit hm tnh tng cc phn t l trong mng cc s nguyn.
35. Vit hm tnh tng cc phn t nguyn t trong mng.
36. Vit hm tnh tng cc phn t nm v tr chn trong mng cc s
nguyn.
37. Vit hm tnh tng cc phn t nm v tr nguyn t trong mng.
38. Vit hm tnh tng cc phn t chia ht cho 5 c trong mng.
39. Vit hm tnh tng cc phn t cc i trong mng cc s nguyn (phn t
cc i l phn t ln hn cc phn t xung quanh n).
Gio trnh Bi Tp K Thut Lp Trnh
Trang 48
Mng mt chiu
V d :
152635186
40. Vit hm tnh tng cc phn t cc tiu trong mng cc s nguyn ( phn
t cc tiu l phn t nh hn cc phn t xung quanh n ).
6429537158
V d :
41. Vit hm tnh tng cc phn t l bi ca 3 v 5 trong mng cc s
nguyn.
42. Vit hm tnh tng cc phn t l s hon thin trong mng cc s nguyn.
43. Vit hm tnh gi tr trung bnh ca cc s hon thin trong mng cc s
nguyn.
e.
Sp xp
K thut c bn
Vit hm sp xp mng theo th t tng dn.
void HoanVi (int &a, int &b)
{
int tam = a;
a = b;
b = tam;
}
void SapTang (int a[], int n)
{
for (int i = 0; i < n-1 ; i++)
for (int j = i+1; j < n; j++)
if (a[i] > a [j])
HoanVi (a[i], a[j]);
}
Bi tp
44. Vit hm sp xp mng theo th t gim dn.
45. Vit hm sp xp mng theo th t tng dn ca cc phn t l s nguyn
t.
46. Vit hm sp xp cc phn t l tng dn.
47. Vit hm sp xp cc phn t chn gim dn.
48. Vit hm sp xp cc phn t chn nm bn tri theo th t tng dn cn
cc phn t l bn phi theo th t gim dn.
49. Vit hm sp xp cc phn t m gim dn t tri sang phi, phn t
dng tng dn t phi sang tri.
Trang 49
Mng mt chiu
f.
Xo
K thut c bn
Duyt mng t tri sang phi . Xut pht t v tr cn xo tin hnh di ln lt
cc phn t v pha trc cho n khi kt thc mng, sau gim kch thc
mng.
Vn t ra l tm v tr cn xa theo iu kin bi ton ri thc hin xa.
Vit hm xo phn t u tin ca mng.
void XoaDau (int a[], int &n)
{
for (int i = 0; i < n-1 ; i++)
a[i] = a[i+1];
n--;
}
Vit hm xo phn t ti v tr (vitri) cho trc trong mng.
void XoaTaiViTri (int a[], int &n, int vitri)
{
for (int i = vitri; i < n-1 ; i++)
a[i] = a[i+1];
n--;
}
Bi tp
50. Vit hm xo phn t ti v tr l trong mng.
51. Vit hm xo phn t c gi tr ln nht trong mng.
52. Nhp vo gi tr X. Vit hm xo tt c cc phn t c gi tr nh hn X.
53. Nhp vo gi tr X. Vit hm xo phn t c gi tr gn X nht.
g.
Chn
K thut c bn
Duyt mng t phi sang tri. Xut pht t cui mng tin hnh y ln lt
cc phn t v pha sau cho n v tr cn chn, chn phn t cn chn vo v
tr chn v tng kch thc mng.
Trc khi chn ta phi xc nh v tr cn chn theo iu kin bi ton.
Thm phn t c gi tr X vo cui mng.
void ThemCuoi (int a[], int &n, int X)
{
a[n]=X;
n++;
Gio trnh Bi Tp K Thut Lp Trnh
Trang 50
Mng mt chiu
}
Chn phn t c gi tr X vo mng ti v tr cho trc
void ChenX (int a[], int &n, int X, int vitri)
{
for (int i = n; i >vitri ; i--)
a[i] = a[i-1] ;
a[vitri] = X;
n++;
}
Bi tp
54. Vit hm chn phn t c gi tr X vo v tr u tin ca mng.
55. Vit hm chn phn t c gi tr X vo pha sau phn t c gi tr ln nht
trong mng.
56. Vit hm chn phn t c gi tr X vo trc phn t c gi tr l s
nguyn t u tin trong mng.
57. Vit hm chn phn t c gi tr X vo pha sau tt c cc phn t c gi
tr chn trong mng.
h.
K thut tch c bn
Cho mng a kch thc n (n chn). Tch mng a thnh 2 mng b v c sao
cho: b c phn t u ca mng a, phn t cn li a vo mng c.
void TachMang(int a[], int n, int b[], int &m, int c[], int &l)
{
int k=n/2;
m=l=0;
for(int i=0; i<k; i++)
{
b[m++]=a[i];
c[l++]=a[k+i]
}
}
Trang 51
Mng mt chiu
K thut ghp c bn
Cho 2 mng s nguyn a v b kch thc ln lt l n v m. Vit chng
trnh ni mng b vo cui mng a.
void NoiMang(int a[], int &n, int b[], int m)
{
for(int i=0; i<m; i++)
a[n+i]=b[i];
n=n+m;
}
Cho 2 mng s nguyn a v b kch thc ln lt l n v m. Vit chng
trnh ni xen k (an xen) ln lt cc phn t mng a v b vo mng c.
Cch thc hin: a ln lt tng phn t ca mng a v mng b vo
mng c, tng ch s tng ng. Nu mt trong hai mng ht trc th chp
tt c cc phn t cn li ca mng cha ht vo mng c.
t i l ch s ca mng a; j: ch s ca mng b v k l ch s ca mng c.
void NoiMang(int a[], int &n, int b[], int m, int c[], int &k)
{
int i=0, j=0;
k=0;
while(i<n&&j<m)
{
c[k++]=a[i++];
c[k++]=b[j++];
}
while(i<n)
c[k++]=a[i++];
while(j<m)
c[k++]=b[j++];
}
Bi tp
58. Vit chng trnh tch 1 mng cc s nguyn thnh 2 mng a v b, sao
cho mng a cha ton s l v mng b cha ton s chn.
V d: Mng ban u:
1 3 8 2 7 5 9 0 10
Mng a:
1 3 75 9
Mng b:
8 2 10
3 2 7 5 9
Trang 52
Mng mt chiu
Mng b:
1 8 10 4 12 6
Mng c:
6 12 4 10 2 8 3 1 7 5 9
6 3 1 10 11 18
k=2
Kt qu: 10
63. (*) Cho 2 dy A, B cc s nguyn (kch thc dy A nh hn dy B). Hy
kim tra xem A c phi l con ca B hay khng?
64. Vit hm lit k cc b 4 s a, b, c, d trong mng cc s nguyn (c t nht
4 phn t v i mt khc nhau) sao cho a + b = c + d.
65. (*) Vit chng trnh tnh trung bnh cng ca cc tng cc dy tng dn
c trong mng cc s nguyn.
V d: 1 2 3 4 2 3 4 5 6 4 5 6 => TB = 15.
66. Vit chng trnh tnh tng tt c cc phn t xung quanh trn mng cc
s nguyn. (Phn t xung quanh l hai phn t bn cnh cng lai bng
chnh n (V d: 1 3 2 1,2 l hai phn t xung quanh ca 3).
V d : 1 3 2 5 3 9 6 tng 17
67. (**) Vit chng trnh nhp vo hai s ln a, b nguyn ( a, b c t 20 ch
s tr ln). Tnh tng, hiu, tch, thng ca hai s trn.
68. Vit hm tnh tng cc phn t l s Amstrong (s Amstrong l s c c
im nh sau: s c k k s, tng ca cc lu tha bc k ca cc k s
bng chnh s .
V d: 153 l s c cc k s 13+53+33= 153 l mt s Amstrong).
69. Vit hm tm v xa tt c cc phn t trng vi x trong mng mt chiu
cc s nguyn, nu khng tn ti phn t x trong mng th tr v -1.
Trang 53
Mng mt chiu
Trang 54
Mng mt chiu
Mng A:
572319
Nhp k = 2
Dch phi xoay vng mng A:
195723
Trang 55
Mng mt chiu
III. KT LUN
D liu kiu mng dng cho vic biu din nhng thng tin c cng kiu d
liu lin tip nhau.
Trang 56
Chui k t
CHNG 5 CHUI K T
Chui k t l trng hp c bit ca mng mt chiu. Chng ny m t mt s hm
th vin thao tc trn chui v cc k thut ci t x l trn chui.
I.
TM TT L THUYT
Phn t S[0]
Phn t S[1]
Phn t S[2]
T
Phn t S[3]
\0
Phn t S[4]
char *chuoi;
Nhp chui
C php : char *gets(char *s);
Nhn cc k t nhp t phm cho n khi nhn phm Enter v a vo s.
V d:
Trang 57
Chui k t
void main()
{
char chuoi[80];
printf("Nhap vao chuoi:");
gets(chuoi);
printf("Chuoi vua nhap la: %s\n", chuoi);
}
b.
Xut chui
C php : int puts(const char *s);
Xut chui s ra mn hnh.
V d:
void main()
{
char chuoi[] = "Vi du xuat chuoi\n";
puts(string);
}
c.
STT
Cc hm th vin (string.h)
TN HM
CHC NNG
strcat(char
s1[],char s2[]);
strncat(char
Ni n k t u tin ca chui
s1[],char s2[],int n) s2 vo chui s1.
V D
char *s = "Borland
International";
printf("Do dai s: %d\n",
strlen(s));
Kt qu: Do dai s: 21
char dest[10];
char *src = "abcdefghi";
strcpy(dest, src);
printf("%s\n", dest);
Kt qu: abcdefghi
char dest[4];
char *src = "abcdefghi";
strncpy(dest, src, 3);
printf("%s\n", dest);
Kt qu: abc
char *s1 = Khoa ;
char *s2 = "CNTT";
strcat(s1, s2);
printf("%s\n", s1);
Kt qu: Khoa CNTT
char *s1 = Khoa ;
char *s2 = "CNTT";
strncat(s1, s2, 2);
printf("%s\n", s1);
Kt qu: Khoa CN
char *s1 = abcd;
char *s2 = "abCD";
if(strcmp(s1, s2)==0)
Trang 58
Chui k t
Tr v:
0 : nu s1 bng s2.
>0: nu s1 ln hn s2.
<0: nu s1 nh hn s2.
int
stricmp(char Tng t nh strcmp(), nhng
s1[],char s2[])
khng phn bit hoa thng.
printf("Giong nhau");
else
printf(Khac nhau);
Kt qu: Khac nhau
char *s1 = abcd;
char *s2 = "abef";
if(strncmp(s1, s2, 2)==0)
printf("Giong nhau");
else
printf(Khac nhau);
Kt qu: Giong nhau
char *s1 = abcd;
char *s2 = "abCD";
if(stricmp(s1, s2)==0)
printf("Giong nhau");
else
printf(Khac nhau);
Kt qu: Giong nhau
char *s1 = aBcd;
char *s2 = "Abef";
if(strnicmp(s1, s2, 2)==0)
printf("Giong nhau");
else
printf(Khac nhau);
Kt qu: Giong nhau
char s[15];
char *ptr, c = 'm';
strcpy(s, "Vi du tim ky tu");
ptr = strchr(s, c);
if (ptr)
printf("Ky tu %c tai: %d", c,
ptr-s);
else
printf("Khong tim thay");
t qu: Ky tu m tai: 8
char *s1 = "Borland
International"; char *s2 =
"nation", *ptr;
ptr = strstr(s1, s2);
printf("Chuoi con: %s\n", ptr);
Kt qu: Chuoi con: national
char input[16] = "abc,d";
char *p;
// Lay chuoi dau
p = strtok(input, ",");
if (p) printf("S11: %s\n", p);
/*Lay chuoi con lai, tham so dau
la NULL*/
p = strtok(NULL, ",");
if (p) printf("S12: %s\n", p);
Kt qu:
S11: abc
S12: d
Trang 59
Chui k t
Nu s2 khng xut hin
trong s1 th kt qu chui
tch vn l s1.
# Lu : Cch truy xut cc k t tng t nh mng mt chiu.
d.
V d
Nhp vo mt chui k t, xut ra mn hnh chui b o ngc th t
cc k t.
V d: Nhp vo: Tran minh thai. Xut ra mn hnh: iaht hnim narT
#include<stdio.h>
#include<string.h>
#include<conio.h>
void DaoChuoi(char *s1, char *s2)
{
int l=strlen(s1);
for(int i=0; i<l; i++)
s2[i]=s1[l-i-1];
s2[i]='\0';
}
void main()
{
char *s1, *s2;
clrscr();
printf("\nNhap vao chuoi ky tu: ");
gets(s1);
DaoChuoi(s1, s2);
printf("\nKet qua sau khi dao nguoc chuoi: %s", s2);
}
II. BI TP
II.1. Bi tp c bn
1.
Trang 60
Chui k t
p = strtok(NULL, "");
strcpy(temp, p);
}while(p!=NULL);
printf(Chuoi temp: %s \n Chuoi input: %s, temp, input);
2.
4.
5.
Vit chng trnh nhp vo mt chui, hy loi b nhng khong trng tha
trong chui.
6.
Vit chng trnh nhp vo hai chui s1 v s2, ni chui s2 vo s1. Xut
chui s1 ra mn hnh.
7.
8.
9.
Trang 61
Chui k t
26. Vit hm kim tra xem trong 2 chui c bao nhiu k t ging nhau.
27. Vit chng trn mnh chy t tri qua phi mn hnh.
Gio trnh Bi Tp K Thut Lp Trnh
Trang 62
Chui k t
III. KT LUN
Cng ging nh kiu mng mt chiu, thao tc truy xut cc phn t trn
chui hon ton tng t. Bn cnh , kiu d liu ny cn c ci t sn
mt s hm th vin rt hu ch nn trong qu trnh thao tc trn chui nn
khi ci t ta c gng tn dng ti a nhng hm lin quan.
Trang 63
CHNG 6
y l kiu d liu dng biu din d liu kiu bng, kiu d liu ny rt thch hp
cho cc bi ton lin quan n th, biu din nh,
I.
TM TT L THUYT
Trang 64
V d:
int A[3][4] = { {2,3,9,4} , {5,6,7,6} , {2,9,4,7} };
Vi cc khai bo nh trn ta c :
A[0][0] = 2; A[0][1] = 3;
A[1][1] = 6; A[1][3] = 6;
Vi v d trn ta c hnh dng ca mt ma trn nh sau
0
// Mang so thuc a
// Bien trung gian tmp
// Nhap lieu cho bien trung gian
// Gan du lieu vao phan tu a[2][2]
Khi nim
L ma trn c s dng v s ct bng nhau.
b.
ng cho loi 1
Trang 65
ng cho loi 2:
II. BI TP
n gin trong vic khai bo ma trn, ta nh ngha kiu ma trn cc phn t
vi kiu d liu bt k nh sau:
#define MAX 100
typedef <kiu d liu> MATRAN[MAX][MAX];
V d: Khai bo ma trn cc s nguyn a.
#define MAX 100
Gio trnh Bi Tp K Thut Lp Trnh
Trang 66
Trang 67
Phng php sp xp
Vit hm sp xp ma trn tng dn t trn xung di v t tri sang phi
khng dng mng ph.
void SapTang(MATRAN a, int d, int c)
{
for (int i = 0; i <= d*c-2; i ++)
for (int j = 0; j <= d*c-1; j ++)
if (a[i/c][i%c] < a[j/c][j%c])
{
int tmp = a[i/c][i%c] ;
a[i/c][i%c] = a[j/c][j%c] ;
a[j/c][j%c] = tmp ;
}
}
Phng php m
Vit hm m cc phn t chn trong ma trn.
int DemChan (MATRAN a, int d, int c)
{
int dem = 0;
Trang 68
Bi tp nhp xut
1.
2.
3.
4.
5.
6.
7.
8.
9.
1
2
3
4
1
3
6
1
4
Bi tp tnh tng
Trang 69
Bi tp tm kim
Bi tp m
Trang 70
Bi tp sp xp
Trang 71
V du :
Bi tp Thm Xo Thay th
Trang 72
70. Vit chng trnh dch phi xoay vng mt ct trong ma trn cc s thc.
71. Vit chng trnh dch xung xoay vng mt dng trong ma trn cc s
thc.
72. (*) Cho ma trn A ( m n ) cc s nguyn hy pht sinh ma trn B sao cho B
l ma trn lt ngc ca ma trn A.
V d :
73. (**) Cho ma trn A ( m n ) hy pht sinh ma trn B ( m n ) sao cho phn
t B (i, j) l trung bnh cng ca cc phn t trong hnh vung 3x3 tm ti
(i,j) ca A.
V d :
Trang 73
Trang 74
79. Vit chng trnh to ngu nhin mt ma trn cc s nguyn (0 -> 50), tm
nhng phn t cc i (l phn t ln hn cc phn t xung quanh).
V d :
Trang 75
V d : Vi n = 5
trng
khng dc i
-1
Trang 76
p
z
q
s
3
2
4
0
5
6
Trng thi ch
=>
1
8
7
2
0
6
3
4
5
III. KT LUN
Kiu d liu mng hai chiu c ng dng rng ri trong cc bi ton v tm
ng i trong th, x l nh, x l nhng d liu dng bng,
Lu khi nhp mng hai chiu cc s thc phi thng qua 1 bin trung gian.
Trang 77
CHNG 7
I.
TM TT L THUYT
Trang 78
I.3. Khai bo
Khi ta nh ngha kiu d liu tc l ta c mt kiu d liu mi, mun s dng ta
phi khai bo bin. C php khai bo kiu d liu cng ging nh cch khai bo
ca cc kiu d liu chun.
struct < tn cu trc > < tn bin > ;
V d :
struct DATE x ; // Khai bao bien x co kieu du lieu DATE
Trang 79
x -> ngay = 5 ;
# i vi kiu d liu c struct lng nhau phi truy cp n thnh phn cui
cng c kiu d liu c bn.
V d: Gi s, c kiu HOCSINH nh trn
HOCSINH hs;
Trang 80
Trang 81
getch ();
}
I.6. Mng cu trc
Cch truy cp phn t trong mng cng nh truy cp trn mng mt chiu
hay ma trn. Nhng do tng phn t c kiu cu trc nn phi ch nh r
cn ly thnh phn no, tc l phi truy cp n thnh phn cui cng c
kiu l d liu c bn (xem li bng cc kiu d liu c bn) .
#define MAX 50
struct DATE
{
char thu[5];
unsigned char ngay;
unsigned char thang;
int nam;
};
typedef struct HOCSINH
{
char MSHS[6];
char hoten[31];
struct DATE ngaysinh;
Gio trnh Bi Tp K Thut Lp Trnh
Trang 82
char diachi[51];
unsigned char phai[4];
float diemtb;
};
void NhapNamSinh(DATE &d);
void XuatNamSinh(DATE d);
void Nhap1HS (HOCSINH &hs);
void Xuat1HS (HOCSINH hs);
void NhapDSHS(HOCSINH lh[], int &n);
void XuatDSHS(HOCSINH lh[], int n);
int DemHSLenLop(HOCSINH lh[], int n);
void main()
{
HOCSINH lh[MAX]; //Khai bo mng lh gm c ti a 50 hc sinh
int n, sohsdau;
NhapDSHS(lh, n);
XuatDSHS(lh, n);
sohsdau = DemHSLenLop(lh, n);
printf(\nSo luong hoc sinh duoc len lop la: %d, sohsdau);
getch();
}
void NhapNamSinh(DATE &d)
{
printf(\nNhap vao ngay: );
scanf(%u, &d.ngay);
printf(\nNhap vao thang: );
scanf(%u, &d.thang);
printf(\nNhap vao nam: );
scanf(%d, &d.nam);
}
void XuatNamSinh(DATE d)
{
printf(%02u / %02u / %4d, d.ngay, d.thang, d.nam);
}
void Nhap1HS(HOCSINH &hs)
{
float d;
lushall(); //Xoa vung dem
printf(\nNhap ma so hoc sinh: );
gets(hs.MSHS);
printf(\nNhap ho ten hoc sinh: );
gets(hs.hoten);
printf(\nNhap ngay thang nam sinh: );
Gio trnh Bi Tp K Thut Lp Trnh
Trang 83
Trang 84
d++;
return d;
}
Kt qu v d khi chy chng trnh:
Nhap vao thong tin cua hoc sinh thu 1:
Nhap ma so hoc sinh: 02313
Nhap ho ten hoc sinh: Nguyen Van A
Nhap ngay thang nam sinh:
Nhap vao ngay: 12
Nhap vao thang: 03
Nhap vao nam: 1980
Nhap vao dia chi: 60 Phan Dang Luu Q.Phu Nhuan
Phai: Nam
Nhap vao diem trung binh: 6.5
Nhap vao thong tin cua hoc sinh thu 2:
Nhap ma so hoc sinh: 03852
Nhap ho ten hoc sinh: Ly Thi B
Nhap ngay thang nam sinh:
Nhap vao ngay: 05
Nhap vao thang: 12
Nhap vao nam: 1981
Nhap vao dia chi: 24 Ly Tu Trong Q.1
Phai: Nu
Nhap vao diem trung binh: 3.5
Thong tin hoc sinh thu 1:
Ma so hoc sinh: 02313
Ho ten hoc sinh: Nguyen Van A
Ngay thang nam sinh: 12 / 03 / 1980
Dia chi: 60 Phan Dang Luu Q.Phu Nhuan
Phai: Nam
Diem trung binh: 6.50
Thong tin hoc sinh thu 2:
Ma so hoc sinh: 03852
Ho ten hoc sinh: Ly Thi B
Ngay thang nam sinh: 05 / 12 / 1981
Dia chi: 24 Ly Tu Trong Q.1
Phai: Nu
Diem trung binh: 3.50
So luong hoc sinh duoc len lop la: 1
V d 2: Cho mt mng cc phn s (PHANSO) gm n phn t (n50). Hy vit
chng trnh nhp v xut danh sch cc phn s sau tm phn s c gi tr
ln nht, tng v tch cc phn s v nghch o gi tr cc phn s trong mng.
Gio trnh Bi Tp K Thut Lp Trnh
Trang 85
Cch lm:
-
cho 2 phn s.
-
Sau mi xy dng hm nhp, xut, tnh tng, tch cho mng cc phn s.
Trang 86
Trang 87
Trang 88
{
PHANSO kq;
kq.tu=ps1.tu*ps2.tu;
kq.mau=ps1.mau*ps2.mau;
kq=RutGon(kq);
return kq;
}
PHANSO Chia(PHANSO ps1, PHANSO ps2)
{
PHANSO kq;
kq=Nhan(ps1, NghichDao(ps2));
return kq;
}
PHANSO Tru(PHANSO ps1, PHANSO ps2)
{
PHANSO kq;
kq.tu=ps1.tu*ps2.mau-ps1.mau*ps2.tu;
kq.mau=ps1.mau*ps2.mau;
kq=RutGon(kq);
return kq;
}
PHANSO Cong(PHANSO ps1, PHANSO ps2)
{
PHANSO kq;
kq.tu=ps1.tu*ps2.mau+ps1.mau*ps2.tu;
kq.mau=ps1.mau*ps2.mau;
kq=RutGon(kq);
return kq;
}
int SoSanh(PHANSO ps1, PHANSO ps2)
{
ps1=RutGon(ps1);
ps2=RutGon(ps2);
if(ps1.tu==ps2.tu&&ps1.mau==ps2.mau)
return 0;
if(ps1.tu*ps2.mau>ps2.tu*ps1.mau)
return 1;
return -1;
}
PHANSO TimMax(PHANSO dsps[], int n)
{
PHANSO max;
max=dsps[0];
for(int i=1; i<n; i++)
Gio trnh Bi Tp K Thut Lp Trnh
Trang 89
if(SoSanh(dsps[i], max)==1)
max=dsps[i];
return max;
}
PHANSO TongCacPS(PHANSO dsps[], int n)
{
PHANSO s=dsps[0];
for(int i=1; i<n; i++)
{
s=Cong(s, dsps[i]);
}
return s;
}
PHANSO TichCacPS(PHANSO dsps[], int n)
{
PHANSO p=dsps[0];
for(int i=1; i<n; i++)
{
p=Nhan(p, dsps[i]);
}
return p;
}
void NghichDaoCacPS(PHANSO dsps[], int n)
{
for(int i=0; i<n; i++)
{
dsps[i]=NghichDao(dsps[i]);
}
}
Kt qu v d khi chy chng trnh:
Nhap so luong phan so: 5
Nhap vao phan so thu 1:
Nhap tu so: 1
Nhap mau so: 3
Nhap vao phan so thu 2:
Nhap tu so: 7
Nhap mau so: 4
Nhap vao phan so thu 3:
Nhap tu so: 9
Nhap mau so: 7
Nhap vao phan so thu 4:
Gio trnh Bi Tp K Thut Lp Trnh
Trang 90
Nhap tu so: 5
Nhap mau so: 6
Nhap vao phan so thu 5:
Nhap tu so: 4
Nhap mau so: 7
Mang cac phan so vua nhap: 1/3 7/4 9/7 5/6 4/7
Phan so co gia tri lon nhat: 7/4
Tong gia tri cac phan so co trong mang: 401/84
Tich gia tri cac phan so co trong mang: 5/14
Mang phan so sau khi nghich dao cac phan tu: 3 4/7 7/9
6/5
7/4
II. BI TP
II.1. Bi tp c bn
1.
Vit chng trnh s dng con tr cu trc hin th gi, pht, giy ra mn
hnh, v tnh khong cch gia 2 mc thi gian.
2.
3.
Vit chng trnh khai bo kiu d liu th hin mt s phc. S dng kiu
ny vit hm tnh tng, hiu, tch ca hai s phc.
4.
Vit chng trnh khai bo kiu d liu biu din mt phn s. Hy vit
hm thc hin nhng cng vic sau:
Tnh tng, hiu, tch, thng hai phn s.
Rt gn phn s.
Qui ng hai phn s.
So snh hai phn s.
5.
6.
Trang 91
7.
Cho mt hnh tr c cc thng tin sau: BanKinh (bn knh hnh tr kiu s
thc), ChieuCao (chiu cao hnh tr kiu s thc). Hy thc hin cc cng
vic sau.
Nhp d liu cho hnh tr trn.
Tnh din tch xung quanh, din tch ton phn, th tch hnh tr.
II.2. Bi Tp Luyn Tp
8.
9.
10. Vit chng trnh khai bo kiu d liu STACK (c ch LIFO). Vit hm
lm nhng cng vic sau :
Kim tra STACK rng
Kim tra STACK y
Thm phn t vo STACK
Ly phn t ra khi STACK
11. T chc d liu qun l sinh vin bng cu trc mu tin trong mt mng
N phn t, mi phn t c cu trc nh sau:
-
M sinh vin.
Tn.
Nm sinh.
Trang 92
Tn o din.
Nm sn xut.
Hng sn xut
Loi my
Ni sn xut
Trang 93
M hng.
Tn mt hng.
S lng.
n gi.
S lng tn.
H v tn.
Phi.
Trang 94
Ngy sinh.
a ch.
Lng c bn.
Bo him x hi.
Thng.
Pht.
Tn lp.
S s.
Ga i, ga n.
S toa, s gh.
Trang 95
20. Vit chng trnh tnh tin in hng thng ca cc h gia nh, thng tin
cc khch hng nh sau :
-
a ch.
III. KT LUN
Kiu d liu c cu trc cho php ta nh ngha nhng kiu d liu bt k trn
c s l nhng kiu d liu c bn c sn trong ngn ng lp trnh.
Khi xy dng xong kiu d liu mi ta phi nh ngha nhng thao tc cho
kiu d liu .
Trang 96
Tp tin
CHNG 8
TP TIN
I.
TM TT L THUYT
Khai bo
FILE *< tn bin >;
V d :
b.
FILE *f;
//
M tp tin
fopen (< ng dn tn tp tin> , < kiu truy nhp >);
V d : FILE *f;
//
f = fopen ( C:\\VD1.txt , rt ) ;
Trang 97
Tp tin
c.
m ra c ( ready only).
m ra them vo (append).
r+
m ra c v ghi (modify).
1
2
3
1
2
TN HM
NGHA S DNG
C TP TIN
fscanf(<FILE *>, <nh
D liu t mt tp tin theo
dng>, <cc tham bin>);
nh dng.
c mt chui k t t mt
fgets(<vng nh>, <kch
tp tin vi kch thc ti a
thc ti a>, <FILE *>);
cho php, hoc gp k t
xung dng.
c mt k t t tp tin
getc(< FILE * >);
ang m.
GHI TP TIN
fprintf(<FILE *>, <nh
Ghi d liu theo mt nh
dng>[, <cc tham bin>]);
dng no vo tp tin.
V D
fscanf(f, %d,
&x);
char s[80];
fgets(s, 80, f);
char c=getc(f);
fprintf(f,%d,x);
Tp tin nh phn
STT
TN HM
NGHA S DNG
C TP TIN
ptr: vng nh lu d
liu c.
size: kch thc mi
fread(<&ptr>, <size>, <len>, nh (tnh bng byte).
<FILE *>);
len: di d liu cn
c.
FILE: c t tp tin nh
phn no.
GHI TP TIN
fwrite(<&prt>, <size>, <len>, Tham s tng t nh hm
<FILE *> );
fread.
V D
int a[30], b, n;
fread(a,
sizeof(int), n , f);
Fread(&b,
sizeof(int), 1 , f);
fwrite(a,
sizeof(int), n , f);
Trang 98
Tp tin
d.
ng tp tin
Sau khi khng cn lm vic vi tp tin, m bo an ton cho d liu th
nht thit ta phi ng tp tin li.
fclose ( < bin con tr tp tin > ) ;
hoc fcloseall () ;
V d : fclose (f) ;
e.
f.
V d minh ho
void KiemTra (FILE *f , char duongdan [ ] )
{
f = open ( duongdan , rt);
if ( f == NULL )
{
printf (Khong mo duoc tap tin %s, duongdan);
perror (\nLy do);
Trang 99
Tp tin
getch ();
return ;
}
printf (Tap tin %s da duoc mo, duongdan);
fclose (f);
}
I.3. Cc v d minh ho
a.
Tp tin vn bn
V d 1: Vit chng trnh to tp tin vn bn SO.OUT gm n s nguyn,
cc s ca dy c to ngu nhin c gi tr tuyt i khng vt qu M
( n, M c t tp tin SO.INP). Kt qu chng trnh l 1 tp tin vn bn
c dng th nht ghi s n; n dng tip theo ghi cc s to c, mi s
trn mt dng.
SO.INP
3
10
SO.OUT
3
5
7
2
Trang 100
Tp tin
}
void main ()
{
clrscr ( );
Nhap ( );
Xuat ( );
}
V d 2: Vit chng trnh pht sinh ngu nhin ma trn a kch thc 5x6,
lu ma trn ny vo file test.inp. c li file test.inp a d liu vo ma
trn b v xut ra mn hnh xem kt qu lu ng khng? Cu trc ca file
test.inp nh sau:
-
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#define MAX 100
#define dl "test.inp"
void LuuFile(int a[MAX][MAX], int m, int n)
{
FILE *f;
f=fopen(dl, "wt");
if(f==NULL)
{
printf("\nKhong tao duoc file.");
getch();
exit(0);
}
fprintf(f, "%d %d\n", m, n);
for(int i=0; i<m; i++)
{
for(int j=0; j<n; j++)
fprintf(f, "%d\t", a[i][j]);
fprintf(f, "\n");
}
fclose(f);
}
void DocFile(int a[MAX][MAX], int &m, int &n)
{
Gio trnh Bi Tp K Thut Lp Trnh
Trang 101
Tp tin
FILE *f;
f=fopen(dl, "rt");
if(f==NULL)
{
printf("\nKhong doc duoc file.");
getch();
exit(0);
}
fscanf(f, "%d%d", &m, &n);
for(int i=0; i<m; i++)
{
for(int j=0; j<n; j++)
fscanf(f, "%d", &a[i][j]);
}
fclose(f);
}
void main()
{
int a[MAX][MAX], m=5, n=6, i, j;
int b[MAX][MAX], x, y;
randomize();
for(i=0; i<m; i++)
for(j=0; j<n; j++)
a[i][j]=random(1000);
LuuFile(a, m, n);
DocFile(b, x, y);
for(i=0; i<x; i++)
{
for(j=0; j<y; j++)
printf("%d\t", b[i][j]);
printf("\n");
}
}
Kt qu v d sau khi chy chng trnh, file test.inp c dng sau:
56
480
31
166
121
159
b.
661
414
191
382
309
395
211
454
35
1
736
801
830
365
275
998
774
508
567
870
987
416
72
726
378
Tp tin nh phn
Vit hm c/ ghi mt danh sch sinh vin ca mt lp vo tp tin
SV.DAT
SINHVIEN ds[100];
Trang 102
Tp tin
int siso;
void nhap ( )
{
FILE *fi;
fi = fopen ( SV.DAT , rb );
fseek ( fi , 0 , SEEK_END );
siso = ( ftell ( fi ) + 1 ) / sizeof ( SINHVIEN );
fseek ( fi , 0 , SEEK_SET );
fread ( ds , sizeof ( SINHVIEN ) , siso , fi );
fclose ( fi );
}
void xuat ( )
{
FILE *fo;
fo = fopen ( SV.DAT, wb );
fwrite ( ds , sizeof ( SINHVIEN ) , siso , fo );
fclose ( fo );
}
II. BI TP
II.1. Bi tp c bn
1.
2.
3.
4.
5.
6.
7.
Trang 103
Tp tin
8.
9.
10.
11.
12.
13.
14.
15.
Trang 104
Tp tin
Trong cc dng tip theo ghi N s nguyn ngu nhin trong phm vi
t 0 n 100, mi dng 10 s (cc s cch nhau t nht mt khong
trng).
19.
OUTPUT.TXT
Cau a: 99
Cau b: 9 9
Cau c:
1 4 4 19 20 29 34 38 39 40
43 58 65 78 87 89 98 99
Trang 105
Tp tin
20.
M s sinh vin.
H v tn sinh vin.
im thi ht mn.
Trong M dng tip theo mi dng ghi N s nguyn ngu nhin trong
phm vi t 0 n 100 (cc s ny cch nhau t nht mt khong
trng).
17
24
20
48
24
4
33
23
17
45
36
23
23
49
25
48
19
26
12
5
33
41
19
27
1
24
19
32
24
36
OUTPUT.TXT
Cau a: 49
Cau b: 17 19
Cau c: 127 169 147 214 132
146
Trang 106
Tp tin
22.
SUMMAX.OUT
8 2 5
23.
Vit chng trnh nhp l lch mt nhn vin vo danh sch cc nhn vin.
Khi khng nhp na bm phm Esc v ghi vo tp tin NHANVIEN.DAT
sau :
24.
Trang 107
Tp tin
III. KT LUN
Mc ch ca kiu d liu tp tin cho php chng ta lu li nhng thng tin cn
thit tng i ln: nhng d liu u vo, nhng kt qu ca chng trnh hoc
nhng d liu dng test chng trnh,
Khi thao tc trn tp tin phi thng qua 4 bc: Khai bo con tr tr n tp tin,
M tp tin, X l trn tp tin v cui cng l ng tp tin.
Lu khi m tp tin ghi th phi cn thn vi thao tc to mi hay chnh sa
ni dung tp tin, di chuyn con tr hp l trnh mt thng tin.
S dng hm thao tc trn tp tin phi dng ng loi hm cho tp tin kiu nh
phn hay kiu vn bn.
Trang 108
qui
CHNG 9
QUI
Gii thiu phng php lp trnh theo k thut quy, phn loi, cch hot ng v
cch ci t cc hm quy.
I.
TM TT L THUYT
Trang 109
qui
qui nh phn
Trong thn ca hm c hai li gi hm gi li chnh n mt cch tng
minh.
<Kiu d liu hm> TenHam (<danh sch tham s>)
{
if (iu kin dng)
{
...
//Tr v gi tr hay kt thc cng vic
}
//Thc hin mt s cng vic (nu c)
. . .TenHam (<danh sch tham s>); //Gii quyt vn nh hn
//Thc hin mt s cng vic (nu c)
. . . TenHam (<danh sch tham s>); //Gii quyt vn cn li
//Thc hin mt s cng vic (nu c)
}
V d 1: Tnh s hng th n ca dy Fibonaci c nh ngha nh sau:
f1 = f0 =1 ;
fn = fn-1 + fn-2 ;
(n>1)
Trang 110
qui
a[0]
a[1]
a[(l+r)/2]
a[n-2]
a[n-1]
Trang 111
qui
}
V d 3: Bi ton thp H Ni:
Bc 1: Di chuyn n -1 a nh hn t cc A sang cc B.
Bc 2: Di chuyn a cn li t cc A sang cc C.
Bc 3: Di chuyn n -1 a nh hn t cc B sang cc C.
Ta ci t hm qui nh sau:
void ThapHaNoi (int n, char A, char B, char C)
{
if (n = = 1)
printf(Di chuyen dia tren cung tu %d den %d\n, A, C);
else
{
ThapHaNoi(n-1, A, C, B);
ThapHaNoi(1, A, B, C);
ThapHaNoi(n-1, B, A, C);
}
}
c.
(n1)
Trang 112
qui
- iu kin dng:X(0) = 1.
Ta ci t hm qui nh sau:
long TinhXn (int n)
{
if(n==0)
return 1;
long s = 0;
for (int i=1; i<=n; i++)
s = s + i * i * TinhXn(n-i);
return s;
}
d.
qui h tng
Trong thn ca hm ny c li gi hm n hm kia v trong thn ca
hm kia c li gi hm ti hm ny.
g()
f()
f()
f()
g()
h()
(n>0)
Yn = n2Xn-1 + Yn-1;
(n>0)
Trang 113
qui
Ta ci t hm qui nh sau:
long TinhYn(int n);
long TinhXn (int n)
{
if(n==0)
return 1;
return TinhXn(n-1) + TinhYn(n-1);
}
long TinhYn (int n)
{
if(n==0)
return 1;
return n*n*TinhXn(n-1) + TinhYn(n-1);
}
I.3. Tm hiu cch hot ng ca hm qui
Phc v cho cng vic kim chng kt qu thc thi ca chng trnh bng tay.
V d 1: Ly li v d tnh P(n) = n! bng phng php qui nh m t ci
t trn vi n = 5
Trang 114
qui
I.4. V d
Vit chng trnh nhp vo mng mt chiu s nguyn a, xut ra mn hnh v
tnh tng cc phn t c gi tr chn bng phng php qui.
#define MAX 100
void Nhap(int a[], int n)
{
if(n==0)
return;
Nhap(a, n-1);
printf("\nNhap phan tu thu %d: ", n);
scanf("%d", &a[n-1]);
}
void Xuat(int a[], int n)
{
if(n==0)
return;
Xuat(a, n-1);
printf("%d\t", a[n-1]);
}
long TongChan(int a[], int n)
{
if(n==0)
return 0;
int s = TongChan(a, n-1);
if(a[n-1]%2==0)
s+=a[n-1];
return s;
}
Gio trnh Bi Tp K Thut Lp Trnh
Trang 115
qui
void main()
{
int a[MAX], n;
long s;
printf("\nNhap so phan tu cua mang: ");
scanf("%d", &n);
Nhap(a, n);
Xuat(a, n);
s=TongChan(a, n);
printf("\nTong cac so chan trong mang la: %ld", s);
getch();
}
II. BI TP
Vit hm qui thc hin cc yu cu sau:
II.1. Bi tp c bn
1.
2.
3.
4.
5.
6.
7.
8.
Tnh S (n) = 1 + 3 + 5 + L + (2 n + 1) ,
9.
vi n > 0
10.
vi n > 0
11.
Tnh S (n) = 12 + 2 2 + 3 2 + L + n 2 ,
vi n 0
vi n > 0
Trang 116
qui
1
2
1
3
1
n
vi n > 0
12.
Tnh S (n) = 1 + + + L + ,
13.
Tnh S (n) = 1 +
14.
Tnh P ( x, y ) = x y .
15.
Tnh S (n) = 1 + (1 + 2) + (1 + 2 + 3) + L + (1 + 2 + 3 + L + n) ,
1
1
1
+
+L+
,
1+ 2 1+ 2 + 3
1+ 2 + 3 +L+ n
vi n > 0
vi n > 0
17.
18.
19.
20.
vi n > 0
21.
vi n > 0
22.
c n du phn s.
1+
1+
1+
O
1
1
1+
1
1+1
III. KT LUN
Ch nn ci t bng phng php qui khi khng cn cch gii quyt bng
cch lp thng thng.
Trang 117
MC TIU
Chia mt chng trnh ln thnh cc tp tin nh hn, mi tp tin cha cc khai bo
nguyn mu hm, ci t cc hm v d liu thc hin mt s chc nng nht nh.
Vic phn chia ny gip qu trnh lp trnh:
Trang 118
Trang 119
Chn th mc HOCSINH
# ifndef _HOCSINH_H
# define _HOCSINH_H
typedef struct HOCSINH
{
char hoten[30];
int toan, van;
};
void NhapHS(HOCSINH &hs);
float TinhDTB(HOCSINH hs);
void XuatHS(HOCSINH hs);
# endif
Trang 120
Trang 121
Trang 122
void main()
{
clrscr();
HOCSINH hs;
NhapHS(hs);
printf(\nKet qua:\n);
XuatHS(hs);
getch();
}
III. BI TP
Ci t cc bi tp chng mng cu trc bng phng php to project.
Trang 123
Mt s thi mu
PH LC 1
THI MU
S 01
Trang 124
Mt s thi mu
Cu 1:
Sn =
1 3 5
2n + 1
Vi n nguyn dng (n>0)
+ + + ... +
2 4 6
2n + 2
Trang 125
Mt s thi mu
S 04
Cu 1:
Sn = 1 2 + 3 4 + L + (1) n +1 n
Trang 126
Mt s thi mu
Bi 1: Nhp s nguyn n (0<n20). Vit chng trnh xut n phn t u tin ca hai
mng A v B, cho bit cc gi tr c xc nh nh sau:
Trang 127
Mt s thi mu
A1 = 1, B1 = 1
2
2
A i = A i 1 + Bi 1
Bi = 2A i + Bi 1
2
h tn
nm sinh
lng c bn
Trang 128
Mt s thi mu
Tng bn tri = 33
Tng bn phi = 33
(n>=2)
Trang 129
Mt s thi mu
M s hc sinh
H v tn hc sinh
im Ton
im Vn
1 1 1
1
+ + +L+
2! 3! 4!
n!
( n = 1, 2,3, K)
S 08
b. 100
c. 110
d. 120
-9
-5
-2
10
15
b. 0
c. 1
d. 2
Trang 130
Mt s thi mu
return a;
}
void main()
{
printf(" %d %d", A(b, c), a+c);
}
S in ra:
a. 7 5
b. 7 4
c. 7 3
d. 7 2
b. 5 7
c. 7 7
d. 7 5
b. ghijklmnHellotuvwxyz
c. abcdefghijklmnopqrstuvwxyz
d. abcdefHellolmnopqrstuvwxyz
Trang 131
Mt s thi mu
Trang 132
CI T BC3.1
Nhn Enter.
Tn a cha BC31
Trang 133
Trang 134
Trang 135
Trang 136
Lu : ng ng dn th mc.
Trang 137
b.
Trang 138
c.
Bin dch v sa li
Sau khi son tho xong chng trnh nhn F2 t tn chng trnh, m
bo chng trnh c th thc thi c, ta phi nhn F9 bin dch.
Nu khng c li, ta c th nhn Ctr+F9 thc thi chng trnh.
Trang 139
Mt s li thng gp
LI
M T
KHC PHC
V D
LI C PHP
B sung thm
du ; vo sau
khai bo bin
hay kt thc mt
lnh.
Statement
missing;
Compound
statement
missing }
B sung thm
Thiu du } khi kt thc khi
du } vo tng
lnh hay lm.
ng
Sai:
int a
scanf(%d,&a)
Sa thnh:
int a;
scanf(%d,&a);
Sai :
void main()
{
int a;
scanf(%d,&a);
if(a>0)
printf(Duong);
}
Sa thnh:
void main()
{
int a;
scanf(%d,&a);
if(a>0)
printf(Duong);
}
Sai :
void main()
Trang 140
Misplaced
else
For
statement
missing ;
thiu du { v {
sa tng ng.
int a;
scanf(%d,&a);
if(a>0)
printf(Duong);
}
}
Sa thnh:
void main()
{
int a;
scanf(%d,&a);
if(a>0)
printf(Duong);
}
Sai :
if (a%2);
printf(a le);
else
if(a>10)
printf(a chan);
printf(, > 10);
else
printf(a < 10);
Sa thnh:
if (a%2)
printf(a le);
else
if(a>10)
{
printf(a chan );
printf(, > 10);
}
else
printf(a < 10);
Kin tra cho Sai :
ng c php: for(int i=0, i<n; i++)
for(<Biu thc {
khi>;
<biu printf(a[%d]: ,i);
thc iu kin scanf(%d,&a[i]);
dng>;
<biu }
thc tng gim>) Sa thnh:
Trong biu thc for(int i=0; i<n; i++)
gn hay nhiu {
thnh phn th printf(a[%d]: ,i);
miphn
cch scanf(%d,&a[i]);
nhau bi du }
phy (,)
Thm du phy Sai :
gia phn nh for(int i=0; i<n; i++)
dng v danh {
sch bin.
printf(a[%d]: i);
scanf(%d,&a[i]);
Trang 141
Sai :
#define MAX 100
void main()
{
int MAX;
Declaration
}
Khai bo tn bin trng vi tn
terminated
i tn bin.
hng nh ngha trc.
Sa thnh:
incorrectly
#define MAX 100
void main()
{
int x;
}
Sai :
int i;
Kim tra v b
for(int i=0; i<n; i++)
Multiple
Khai bo bin trng tn, khai
bt khai bo li scanf(%d,&a[i][j]);
declaration
bo nhiu ln.
bin hoc i tn Sa thnh:
for 'i'
bin khc.
int x;
for(i=0; i<n; i++)
scanf(%d,&a[i][j])
Sai :
printf(Nhap vao n:);
scanf(%d, &n);
Undefined
S dng bin cha khai bo.
Khai bo bin.
Sa thnh:
symbol 'a'
int n;
printf(Nhap vao n:);
scanf(%d, &n);
Sai :
B sung du ;
Declaration
int n
Thiu du ; sau khai bo bin. sau khi kt thc
syntax error
Sa thnh:
khai bo bin.
Int n;
TH VIN HM HOC SAI TN HM
Function
'printf'
should have
a prototype
Thiu sai bo th vin hm nu B sung
Function
s dng hm th vin, ngc li #include
'scanf'
phi kim tra xem c khai bo <stdio.h>
should have
nguyn mu hm, hoc gi sai #include
a prototype
tn hm.
<conio.h>
Function
'XXX'
should have
a prototype
Trang 142
Possibly
incorrect
assignment
f.
Dng k hiu
trong php so
snh
Sai :
if(n%2=0)
printf(n chan);
Sa thnh:
if(n%2==0)
printf(n chan);
Debug
Mc d chng trnh khng cn li nhng khi chy chng trnh vn ra kt
qu sai, nhng li c th l:
Dng chm phy sau: if, else, for, while, m cha thc hin lnh.
nh dng nhp xut sai hay khai bo sai kiu d liu.
Chia cho 0.
Khng c iu kin dng (iu kin dng sai).
Phn tch thut ton thiu (cha vt ht cc trng hp) hoc sai.
Cc thao tc debug:
Nhn F7 hoc F8 chy tng bc (nu khng c li khi bin dch)
Trang 143
Trang 144
g.
Trang 145
2.
3.
4.
5.
6.
7.
8.
9.
Trang 146
Mc lc
MC LC
LI M U .........................................................................................................1
LCH TRNH THC HNH................................................................................2
CHNG 1
I.
TM TT L THUYT.................................................................................... 3
I.1.
Khi nim.....................................................................................................3
I.2.
I.3.
Cc k hiu ..................................................................................................3
I.4.
a.
b.
Cu trc la chn........................................................................................ 5
c.
Cu trc lp................................................................................................. 6
d.
Cc v d...................................................................................................... 8
II. BI TP ............................................................................................................. 11
II.1. Bi tp c bn ..................................................................................................11
II.2. Bi tp luyn tp v nng cao.........................................................................12
III.
KT LUN...................................................................................................... 12
CHNG 2
I.
TM TT L THUYT.................................................................................. 13
I.1.
Cc k hiu ................................................................................................13
I.2.
I.3.
I.4.
Cc hm c bn .........................................................................................15
I.5.
a.
Cu trc if.................................................................................................. 15
b.
Cu trc if else...................................................................................... 16
I.6.
I.7.
Cu trc lp ...............................................................................................18
a.
for .............................................................................................................. 18
b.
while .......................................................................................................... 19
Trang i
Mc lc
c.
do while................................................................................................. 20
I.8.
a.
break.......................................................................................................... 20
b.
continue ..................................................................................................... 21
II. BI TP ............................................................................................................. 21
II.1.
II.2.
Bi tp c bn...........................................................................................23
a.
b.
Cu trc lp............................................................................................... 25
II.3.
III.
KT LUN...................................................................................................... 30
CHNG 3
I.
HM CON..................................................................................31
TM TT L THUYT.................................................................................. 31
I.1.
Khi nim...................................................................................................31
I.2.
V d ...........................................................................................................31
I.3.
a.
b.
c.
Cc hm con.............................................................................................. 33
d.
Nguyn mu hm ....................................................................................... 33
I.4.
a.
b.
Tham s ..................................................................................................... 34
c.
Tn hm ..................................................................................................... 35
d.
V d .......................................................................................................... 35
II. BI TP ............................................................................................................. 37
II.1.
Bi tp c bn...........................................................................................37
II.2.
III.
KT LUN...................................................................................................... 39
CHNG 4
I.
TM TT L THUYT.................................................................................. 41
I.1.
Khi nim...................................................................................................41
I.2.
Khai bo mng...........................................................................................41
Trang ii
Mc lc
I.3.
II. BI TP ............................................................................................................. 43
II.1.
Mt s k thut c bn...............................................................................43
a.
b.
II.2.
Bi tp c bn............................................................................................45
a.
b.
c.
m Tn sut.......................................................................................... 47
d.
e.
Sp xp ...................................................................................................... 49
f.
Xo............................................................................................................. 50
g.
Chn........................................................................................................... 50
h.
II.3.
III.
KT LUN...................................................................................................... 56
CHNG 5
I.
CHUI K T .........................................................................57
TM TT L THUYT.................................................................................. 57
I.1.
Khi nim...................................................................................................57
I.2.
Khai bo chui...........................................................................................57
I.3.
a.
b.
Xut chui.................................................................................................. 58
c.
Cc hm th vin (string.h)....................................................................... 58
d.
V d .......................................................................................................... 60
II. BI TP ............................................................................................................. 60
II.1.
Bi tp c bn............................................................................................60
II.2.
III. KT LUN.......................................................................................................... 63
CHNG 6
I.
TM TT L THUYT.................................................................................. 64
I.1.
Khi nim...................................................................................................64
I.2.
Khai bo mng...........................................................................................64
Trang iii
Mc lc
I.3.
I.4.
a.
b.
II. BI TP ............................................................................................................. 66
II.1.
Mt s k thut c bn...............................................................................67
II.2.
Bi tp c bn...........................................................................................69
a.
b.
c.
Bi tp tm kim......................................................................................... 70
d.
Bi tp m................................................................................................ 70
e.
Bi tp sp xp .......................................................................................... 71
f.
II.3.
III.
KT LUN...................................................................................................... 77
CHNG 7
I.
TM TT L THUYT.................................................................................. 78
I.1.
Khi nim...................................................................................................78
I .2.
I.3.
Khai bo .....................................................................................................79
I.4.
Truy xut....................................................................................................80
I.5.
V d minh ho ..........................................................................................81
I.6.
Mng cu trc............................................................................................82
I.7.
II. BI TP ............................................................................................................. 91
II.1.
Bi tp c bn............................................................................................91
II.2.
Bi Tp Luyn Tp....................................................................................92
III.
KT LUN...................................................................................................... 96
CHNG 8
I.
TP TIN .....................................................................................97
TM TT L THUYT.................................................................................. 97
I.1.
Khi nim...................................................................................................97
I.2.
Thao tc vi tp tin...................................................................................97
a.
Khai bo .................................................................................................... 97
Trang iv
Mc lc
b.
M tp tin .................................................................................................. 97
c.
d.
ng tp tin............................................................................................... 99
e.
f.
V d minh ho .......................................................................................... 99
I.3.
Cc v d minh ho ................................................................................100
a.
b.
Bi tp c bn..........................................................................................103
II.2.
III.
KT LUN.................................................................................................... 108
CHNG 9
I.
QUI .....................................................................................109
TM TT L THUYT................................................................................ 109
I.1.
Khi nim.................................................................................................109
I.2.
a.
b.
c.
d.
I.3.
I.4.
V d .........................................................................................................115
KT LUN.................................................................................................... 117
CHNG 10
I.
MC TIU....................................................................................................... 118
II.
II.1.
To mt project mi.................................................................................118
II.2.
M project c sn ....................................................................................118
II.3.
Mt s lu .............................................................................................119
Trang v
Mc lc
III.
BI TP ........................................................................................................ 123
PH LC 1
THI MU ...........................................................................124
PH LC 2
CI T BC3.1............................................................................................... 133
b.
c.
d.
e.
f.
g.
Trang vi