Professional Documents
Culture Documents
100 Bai Tap Pascal CO DAP AN
100 Bai Tap Pascal CO DAP AN
*** **
1. S cn thit:
Cc trng THCS ang c xu hng dy mn t chn tin hc thay cho ch t
chn khi m c s vt cht phc v cho vic dy hc mn hc ny c trang b ngy
cng tt hn. Rt nhiu hc sinh, ph huynh hc sinh, lnh o cc trng mun bn
thn, con mnh, hc sinh mnh tham gia cc k thi hc sinh gii mn tin hc (K thi tin
hc tr, K thi hc sinh gii lp 9...) bi tnh mi m, hp dn, thit thc ca b mn.
Ln u tin b mn tin hc c a vo dy hc ti cc trng THCS nn ti liu bi
dng cho hc sinh gii dnh cho hc sinh THCS hu nh cha c. p ng nhu cu
bi dng ti cc trng, tp ti liu bi dng hc sinh gii mn tin hc cp THCS vi
tn gi 100 bi tp Turbo Pascal c b phn chuyn mn Phng GD&T Qu Sn
bin son.
2. Ni dung:
Tp ti liu c bin son theo nh hng 10 x 10. Ni dung bi dng c
chia lm 10 chng. Mi chng gm tm tt l thuyt v 10 bi tp xoay quanh ni
dung ca chng. Mi bi tp c trnh by theo cu trc:
a. bi.
b. Hng dn, thut ton.
c. M chng trnh.
d. Nhn xt: Nhn mnh ni dung mi, quan trng cn nm sau khi thc hin bi
tp, gii quyt bi ton theo thut ton khc, im c v cha c ca thut ton ...
Ni dung cc bi tp cc chng c la chn theo hng k tha, tng dn
kh. Nhiu bi ton cn gii quyt trong thc t c a vo cc bi tp nhm tng
hng th hc tp ....
Hu ht cc bi tp c kh va phi, ph hp vi ni dung bi dng cp
trng. Ni dung lin quan vi mn ton v cc mn khc t lp 8 tr xung. Ni dung
bi dng c chia thnh 10 chng nh sau:
Lp 8:
I. Lm quen vi chng trnh Pascal Khai bo, s dng bin Cc th tc vo
ra.
II. Cu trc la chn: if then else
Case ... of ...
III. Cu trc lp vi s ln lp bit: For to do
IV. Cu trc lp vi s ln lp cha bit.
V. D liu kiu mng (mt chiu).
VI. Chng trnh con.
VII. Chuyn : Tnh chia ht- S nguyn t.
VIII. Chuyn dy con.
IX. Chuyn ch s - h c s.
X. Chuyn a thc.
3. ngh:
Chc chn tp ti liu cn hiu chnh, b sung c th a vo s dng. Rt
mong Hi ng thm nh cho y kin c th v:
- Nhng hiu chnh v cu trc ca tp ti liu.
Trang 2
CHNG I
Trang 3
CC KIU D LIU C BN
KHAI BO HNG, BIN, KIU, BIU THC V CU LNH
A. L THUYT:
I. CC KIU D LIU C BN
1. Kiu logic
- T kha: BOOLEAN
- min gi tr: (TRUE, FALSE).
- Cc php ton: php so snh (=, <, >) v cc php ton logic: AND, OR, XOR,
NOT.
Trong Pascal, khi so snh cc gi tr boolean ta tun theo qui tc: FALSE <
TRUE.
Gi s A v B l hai gi tr kiu Boolean. Kt qu ca cc php ton c th hin
qua bng di y:
A
TRUE
TRUE
FALSE
FALSE
B
TRUE
FALSE
TRUE
FALSE
A AND B
TRUE
FALSE
FALSE
FALSE
A OR B
TRUE
TRUE
TRUE
FALSE
A XOR B
FALSE
TRUE
TRUE
FALSE
NOT A
FALSE
FALSE
TRUE
TRUE
2. Kiu s nguyn
2.1. Cc kiu s nguyn
Tn kiu
Shortint
Byte
Integer
Word
LongInt
Phm vi
-128 127
0 255
-32768 32767
0 65535
-2147483648 2147483647
Dung lng
1 byte
1 byte
2 byte
2 byte
4 byte
Phm vi
1.510-45 3.410+38
Dung lng
4 byte
Real
Double
Extended
2.910-39 1.710+38
5.010-324 1.710+308
3.410-4932 1.110+4932
6 byte
8 byte
10 byte
Trang 5
Trang 7
nhp d liu t bn phm vo cc bin c kiu d liu chun (tr cc bin kiu
BOOLEAN), ta s dng c php sau y:
READLN(<bin 1> [,<bin 2>,...,<bin n>]);
Ch : Khi gp cu lnh READLN; (khng c tham s), chng trnh s dng li ch
ngi s dng nhn phm ENTER mi chy tip.
6.4. Cc hm v th tc thng dng trong nhp xut d liu
Hm KEYPRESSED: Hm tr v gi tr TRUE nu nh c mt phm bt k c
nhn, nu khng hm cho gi tr l FALSE.
Hm READKEY: Hm c chc nng c mt k t t b m bn phm.
Th tc GOTOXY(X,Y:Integer): Di chuyn con tr n ct X dng Y.
Th tc CLRSCR: Xo mn hnh v a con tr v gc trn bn tri mn hnh.
Th tc CLREOL: Xa cc k t t v tr con tr n ht dng.
Th tc DELLINE: Xo dng ti v tr con tr v dn cc dng pha di ln.
Th tc TEXTCOLOR(color:Byte): Thit lp mu cho cc k t. Trong color
[0,15].
Th tc TEXTBACKGROUND(color:Byte): Thit lp mu nn cho mn hnh.
B. BI TP:
Bi tp 1.1:
Vit chng trnh tnh chu vi v din tch ca hnh ch nht c chiu di hai cnh
l a, b (c nhp t bn phm).
a. Hng dn:
- Nhp hai cnh vo hai bin a, b.
- Chu vi hnh ch nht bng 2*(a+b); Din tch hnh ch nht bng a*b.
b. M chng trnh:
Program Chu_nhat;
uses crt;
Var a, b, S, CV: real;
Begin
Write('Nhap chieu dai:'); readln(a);
Write('Nhap chieu rong:'); readln(b);
S := a*b;
CV := (a+b)*2;
Writeln('Dien tich hinh chu nhat la:',S);
Writeln('Chu vi hinh chu nhat la:',CV:10:2);
readln
end.
Trang 8
c. Nhn xt: Lnh write cho php in ra mn hnh mt hoc nhiu mc. C th nh
dng c s in ra bng cch qui nh khong dnh cho phn nguyn, khong
dnh cho phn thp phn.
Bi tp 1.2:
Vit chng trnh tnh chu vi, din tch hnh vung c cnh a (c nhp t bn
phm).
a. Hng dn:
- Nhp cnh vo bin canh.
- Chu vi hnh vung bng 4*canh; Din tch hnh vung bng canh*canh.
b. M chng trnh:
Program HINH_VUONG;
uses crt;
Var canh: real;
Begin
clrscr;
Write('Nhap do dai canh:');readln(canh);
Writeln('Chu vi hinh vuong la:',4*canh:10:2);
Writeln('Dien tich hinh vuong
la:',canh*canh:10:2);
readln
end.
c. Nhn xt: Bi tp 1.2 tit kim c hai bin l CV v S v lnh write cho php in
mt biu thc. Trong lp trnh vic tit kim bin l cn thit nhng i lc gy kh hiu
khi c, kim tra chng trnh.
Bi tp 1.3:
Vit chng trnh tnh chu vi v din tch hnh trn c bn knh r (c nhp t
bn phm).
a. Hng dn:
- Nhp bn knh vo bin r.
- Chu vi ng trn bng 2**r.
- Din tch hnh trn bng *r*r.
b. M chng trnh:
Program HINH_TRON;
uses crt;
Var r: real;
Begin
clrscr;
Write('Nhap ban kinh:'); readln(r);
Writeln('Chu vi duong tron la:',2*pi*r:10:2);
Writeln('Dien tich hinh tron la:',pi*r*r:10:2);
readln
end.
Trang 9
nhat:');readln(a);
hai:');readln(b);
ba:');readln(c);
tu:');readln(d);
S:=1;
Write('Nhap so thu nhat: '); readln(a); S:=S*a;
Write('Nhap so thu hai: '); readln(a); S:=S*a;
Write('Nhap so thu ba: '); readln(a); S:=S*a;
Write('Nhap so thu tu: '); readln(a); S:=S*a;
Write('Trung binh nhan cua bon so
la:',sqrt(sqrt(s)));
readln
End.
b. Nhn xt: Ta dng hai ln khai phng ly cn bc 4 ca mt s. cng
dn gi tr vo mt bin th bin c gi tr ban u l 0. nhn dn gi tr ban
u vo bin th bin cn c gi tr ban u l 1.
Bi tp 1.8:
Vit chng trnh nhp hai s, i gi tr hai s ri in ra hai s.
a. Hng dn:
- Dng cc bin a, b lu hai s c nhp t bn phm;
- Gn cho bin tam gi tr ca a.
- Gn gi tr ca b cho a. (Sau lnh ny a c gi tr ca b).
- Gn gi tr ca tm cho cho b (Sau lnh ny b c gi tr ca tam = a).
b. M chng trnh:
Program Doi_Gia_Tri;
uses crt;
var a, b, tam:real;
Begin
clrscr;
write('nhap a: '); readln(a);
write('nhap b: '); readln(b);
writeln('Truoc khi doi a =',a,' va b= ',b);
readln;
tam:=a;
a:=b;
b:=tam;
writeln('Sau khi doi a =',a,' va b= ',b);
readln
end.
Nhn xt: Nu thc hin hai lnh a:= b; b:=a i gi tr hai bin th sau hai lnh ny
hai bin c gi tr bng nhau v bng b. Thc cht sau lnh th nht hai bin c gi
tr bng nhau v bng b ri! Trong thc t i ch s du hai bnh cho nhau ta phi
dng thm mt bnh ph.
Bi tp 1.9
Gii bi tp 1.8 m ch c s dng hai bin (Tc khng c dng thm bin
tm).
a. Hng dn:
- Cng thm b vo a. (Gi tr hai bin sau lnh ny l: a+b, b)
Trang 12
c. Nhn xt:
Hy sa chng trnh c kt qu l hng trm, hng chc, hng n v.
M chng trnh:
Program CHU_SO;
uses crt;
var n:integer;
begin
clrscr;
write('Nhap so n: ');readln(n);
writeln('Chu so hang trm: ',n div 100);
n:=n mov 100;
writeln('Chu so hang chuc: ',n div 10);
n:=n div 10;
writeln('Chu so hang tram: ',n);
readln
end.
Trang 14
CHNG II
CU LNH C CU TRC R NHNH
A. L THUYT
I. CU LNH R NHNH
1.1. Lnh IF
C php:
(1)
IF B THEN S;
(2)
IF B THEN S1 ELSE S2;
S thc hin:
(1)
(2)
S1
...
S2
...
Program SO_SANH1;
uses crt;
var a,b: real;
begin
clrscr;
write('nhap so thu nhat: '); readln(a);
write('nhap so thu hai: '); readln(b);
if a> b then writeln(' So lon la:',a);
if a<= b then writeln(' So lon la:',b:10:2);
readln
end.
Hoc:
Program SO_SANH2;
uses crt;
var a,b: real;
begin
clrscr;
write('nhap so thu nhat: '); readln(a);
write('nhap so thu hai: '); readln(b);
if a> b then writeln(' So lon la:',a:10:2)
else writeln(' So lon la:',b:10:2);
readln
end.
Trang 16
c. Nhn xt: Khi hai s bng nhau th mi s c xem l s ln. Hy sa chng trnh
khc phc yu im ny.
Ni chung nn s dng lnh if then else v chng trnh sng sa, d hiu
hn. Tuy nhin trong vi trng hp s dng cc lnh if then ri li d din t hn.
Hy xem v d sau:
Bi tp 2.2:
Vit chng trnh in ra s ln nht trong bn s nhp t bn phm.
a. Hng dn:
Nu a b v a c v a d th a l s ln nht.
Tng t nh th xt cc trng hp cn li tm s ln nht.
b. M chng trnh:
Program So_Lon_Nhat_1;
Uses crt;
Var a,b,c,d: real;
Begin
Clrscr;
Write('Nhap so thu nhat:');readln(a);
Write('Nhap so thu hai:');readln(b);
Write('Nhap so thu ba:');readln(c);
Write('Nhap so thu tu:');readln(d);
if (a>=b) and (a>=c) and (a>= d) then
writeln('So lon nhat la:',a:10:2);
if (b>=a) and (b>=c) and (b>= d) then
writeln('So lon nhat la:',b:10:2);
if (c>=a) and (c>=b) and (c>= d) then
writeln('So lon nhat la:',c:10:2);
if (d>=a) and (d>=b) and (d>= c) then
writeln('So lon nhat la:',d:10:2);
readln
end.
c. Nhn xt: Hy s dng cu trc if then else gii bi tp trn.
kh ca bi ton s tng ln nhiu nu thm yu cu c thng bo khi hai s, ba s,
bn s bng nhau.
Bi tp 2.3:
Vit chng trnh in ra s ln nht trong bn s nhp t bn phm vi iu kin
ch c dng hai bin.
a. Hng dn:
S dng mt bin max v mt bin a cha s va nhp. Cho max bng s u
tin. Sau khi nhp mt s thc hin so snh nu s va nhp ln hn max th lu s va
nhp vo max. Sau khi nhp xong ta c max l s ln nht
(Gii thut ny gi l k thut lnh canh cn hiu r s dng sau ny).
b. M chng trnh:
Trang 17
Program So_Lon_Nhat_2;
Uses crt;
Var a,max: real;
Begin
Clrscr;
Write('Nhap so thu
Write('Nhap so thu
then Max:=a;
Write('Nhap so thu
then Max:=a;
Write('Nhap so thu
then Max:=a;
Write('So lon nhat
readln
end.
nhat:');readln(a);Max:=a;
hai:');readln(a);if a>=Max
ba:');readln(a);if a>=Max
tu:');readln(a);if a>=Max
la:',Max:10:2);
Bi tp 2. 4
Vit chng trnh xt xem mt tam gic c l tam gic u hay khng khi bit ba
cnh ca tam gic.
a. Hng dn:
- Nhp ba cnh ca tam gic vo ba bin a,b,c.
- Nu a = b v b = c th tam gic l tam gic u v ngc li tam gic khng l
tam gic u.
b. M chng trnh:
Program Tam_giac_deu;
uses crt;
var a,b,c: real;
begin
clrscr;
write('Nhap a = '); readln(a);
write('Nhap b = '); readln(b);
write('Nhap c = '); readln(c);
if (a = b) and (b = c) then writeln('La tam
giac deu')
else
writeln('Khong phai la tam giac deu');
readln
end.
Bi tp 2. 5
Vit chng trnh xt xem mt tam gic c l tam gic cn hay khng khi bit ba
cnh ca tam gic.
a.Hng dn:
- Nhp ba cnh ca tam gic vo ba bin a,b,c.
Trang 18
Bi tp 2.7:
Trang 19
b
a
Hoc:
- Nu a = 0 th xt b. Nu b = 0 th phng trnh c v s nghim ngc li (b 0)
th phng trnh v nghim ngc li (a 0) phng trnh c nghim x =
b
.
a
a. M chng trnh:
Program Phuong_trinh_2;
uses crt;
var a,b:real;
begin
clrscr;
Writeln('
CHUONG TRINH GIAI PT ax + b =
0');
Write('Nhap he so a = ');readln(a);
Write('Nhap he so b = ');readln(b);
if (a<>0) then writeln('phuong trinh',a:10:2,'x
+ ',b:10:2,'= 0',' co nghiem x =;',-b/a:10:2);
if (a=0) and (b=0) then writeln('Phuong trinh co
vo so nghiem');
if (a=0) and (b<>0) then writeln('Phuong trinh
vo nghiem');
readln
end.
Hoc:
Program Phuong_trinh_2;
uses crt;
var a,b:real;
begin
clrscr;
Writeln('
CHUONG TRINH GIAI PT ax + b =
0');
Write('Nhap he so a = ');readln(a);
Write('Nhap he so b = ');readln(b);
if (a<>0) then writeln('phuong trinh',a:10:2,'x
+ ',b:10:2,'= 0',' co nghiem x =;',-b/a:10:2)
Trang 20
else
if (b=0) then writeln('Phuong trinh co vo so
nghiem')
else
writeln('Phuong trinh vo nghiem');
readln
end.
Trang 21
Bi tp 2.9:
Vit chng trnh dch cc ngy trong tun sang ting anh
2
3
4
5
6
7
8
Monday Tuesday Wednesday Thursday Friday
Saturday Sunday
a.
b.
Hng dn:
Dng bin a kiu byte cha th (2 n 8)
Trng hp a = 2: Monday
Trng hp a = 3: Thursday
...
Trng hp a = 8: Sunday
Ngoi ra khng cn th no.
M chng trnh:
Program dich;
uses crt;
Var thu:byte;
begin
clrscr;
write('nhap thu can dich 28: '); readln(thu);
case thu of
2: Write('--> Monday');
3: Write('--> Tuesday');
4: Write('--> Wednesday');
5: Write('--> Thursday');
6: Write('--> Friday');
7: Write('--> Saturday');
8: Write('--> Sunday');
else
Write(' Khong co thu nay');
end;
readln
end.
Bi tp 2.10
Vit chng trnh cho php tnh din tch cc hnh: Hnh vung; Hnh ch nht;
Hnh trn; Tam gic; Hnh thang. Ngi dng chn hnh cn tnh din tch t bng chn,
sau khai bo cc thng s lin quan v nhn c din tch ca hnh:
MOI BAN CHON HINH CAN TINH DIEN TICH
1. Hnh vung.
2. Hnh ch nht.
3. Hnh trn.
4. Tam gic.
5. Hnh thang.
Trang 22
Mun tnh din tch tam gic, ngi dng g 4 v khai bo ng cao, y. Chng trnh
tnh v thng din tch n ngi dng.
a. Hng dn:
- Dng cu trc chn Case chon of vi chon c kiu Char to bng chn.
- Dng 3 bin a,b,c lu cc thng s ca hnh; Bin S lu din tch ca hnh.
- Thc hin chung cu thng bo din tch (Nm ngoi Case . . . of) gn
chong trnh.
b. M chng trnh:
Program Dien_Tich_cac_hinh;
uses crt;
var chon: byte;
a,b,c,S: real;
Begin
clrscr;
writeln('CHUONG TRINH TINH DIEN TICH CAC HINH');
Writeln('
------------');
writeln('1.
DIEN TICH HINH TAM GIAC');
writeln('2.
DIEN TICH HINH VUONG');
writeln('3.
DIEN TICH HINH CHU NHAT');
writeln('4.
DIEN TICH HINH THANG');
writeln('5.
DIEN TICH HINH TRON');
write('Moi ban chon hinh can tinh dien tich:
');readln(chon);
case chon of
1 : Begin
Write('Cho biet canh day: '); readln(a);
Write('Cho biet chieu cao: '); readln(b);
S:=(a*b)/2;
end;
2:Begin
Write('Cho biet chieu dai canh: ');
readln(a);
S:=a*a;
end;
3:Begin
Write('Cho biet chieu dai: '); readln(a);
Write('Cho biet chieu rong: '); readln(b);
S:=a*b;
end;
4:Begin
Write('Cho biet day lon: '); readln(a);
Write('Cho biet day nho: '); readln(b);
Write('Cho biet chieu cao: ');
readln(c);
S:=(a+b)*c/2;
End;
Trang 23
5:Begin
end.
End;
else
Writeln('Chon sai roi!!!');
end;
Writeln('Dien tich cua hinh la: ',S:8:2);
readln
c. Nhn xt: Vi mi trng hp tha Case bin chn of thc hin mt lnh. V th,
mun thc hin nhiu lnh ta cn ghp nhiu lnh thnh mt lnh ghp.
Trang 24
CHNG III
CU LNH C CU TRC LP XC NH
A. L THUYT:
II. CU LNH LP
2.1. Vng lp xc nh
C hai dng sau:
Dng tin
FOR <bin m>:=<gi tr Min> TO <gi tr Max> DO S;
Dng li
FOR <bin m>:=<gi tr Max> DOWNTO <gi tr Min> DO S;
S thc hin vng lp FOR:
Dng tin
Dng li
Bin m:=Min
Bin m:=Max
Bin m<=Max
+
S;
INC(Bin m);
Bin m>=Max
Thot
S;
DEC(Bin m);
Thot
b. M chng trnh:
Program In_So_Le;
Uses crt;
var i,n: integer;
Begin
Clrscr;
Write('Nhap so n ='); readln(n);
For i:=1 to n do if i mod 2 =1 then
Write(i:3,',');
readln
end.
Bi tp 3.2:
Vit chng trnh in ra cc s l nh hn hoc bng n ( Vi n c nhp). Sao
cho 15 s l c in trn mt dng.
a. Hng dn:
- Cho j =0.
- Cho bin i chy t 1 n n.
- Nu i chn ( i chia 2 d 0) th in ra s n v tng dem ln 1
- Nu dem chia ht cho 15 th thc hin xung dng (Dng Writeln).
b. M chng trnh:
Program In_So_Le;
Uses crt;
var Dem,i,n: integer;
Begin
Clrscr;
Write('Nhap so n ='); readln(n);
Dem:= 0;
For i:=1 to n do if i mod 2 =1 then
Begin
Write(i:3,',');
Dem:= Dem + 1;
if Dem mod 15 = 0 then Writeln;
end;
readln
end.
c. Nhn xt: Lnh writeln khng c tham s cho php xung hng.
Nu c nhn xt trong 30 s th c 15 s l, ta c th khng cn thm bin m m ch
cn kim tra bin i xung hng.
Bi tp 3.3:
Vit chng trnh in ra tng cc s l nh hn hoc bng n ( Vi n c nhp).
Trang 26
a. Hng dn:
- Cho S = 0.
- Cho bin i chy t 1 n n.
- Nu i chn ( i chia 2 d 0) th cng thm i vo S.
- In ra S.
b. M chng trnh:
Program In_So_Le;
Uses crt;
var S,i,n: integer;
Begin
Clrscr;
Write('Nhap so n ='); readln(n);
S:= 0;
For i:=1 to n do if i mod 2 =1 then S:= S+i;
Writeln('Tong cac so le nho hon ',n,' la: ',S);
readln
end.
c. Nhn xt: Ta dng bin S cng dn nn n c khi to gi tr u bng 0.
Bi tp 3.4:
Vit chng trnh in ra tt c cc c ca mt s n (Vi n c nhp t bn phm)
a. Hng dn:
- Cho bin i chy t 1 n n. Nu n chia ht cho i th in ra i.
b. M chng trnh:
Program Tim_uoc;
uses crt;
Var n, i: integer;
Begin
clrscr;
Write('Nhap so n ='); readln(n);
For i:=1 to n do if n mod i = 0 then
write(i:3,',');
readln
end.
c. Nhn xt: Chng trnh trn c hai im yu:
- In d mt du phy cui dy cc c.
- Khi n = 0 th khng in mt s no trong khi mi s u l c ca 0.
Hy tm cch khc phc yu im ny.
Bi tp 3.5:
Mt s c tng cc c nh hn n bng chnh n c gi l s hon chnh.
V d: 6 c cc c nh hn n l 1, 2, 3. Tng l 1 + 2 + 3 = 6.
Trang 27
Trang 28
Bi tp 3.7
In bng cu chng n (Vi n nhp t bn phm)
a.Hng dn :
b. M chng trnh:
Program Cuu_Chuong_1;
uses crt;
var n, i : integer;
begin
clrscr;
write('Nhap n: '); readln(n);
for i:= 1 to 9 do writeln(n,' x ', i, ' = ',
n*i);
readln
end.
Bi tp 3.8
Ln lt in cc bng cu chng.
a.Hng dn :
- Cho bin i chy t 2 n 9
- In bng cu chng i.
b. M chng trnh:
Program Cuu_Chuong_1;
uses crt;
var i,j : integer;
begin
clrscr;
for i:= 2 to 9 do
Begin
Writeln('Bang cuu chuong ',i);
For j := 1 to 9 do writeln(i,' x ', j, ' = ',
j*i);
readln
end;
readln
end.
c. Nhn xt: Chng trnh ny in bng cu chng dc (Ht bng ny n bng khc
tnh t trn xung). Hy sa chng trnh in theo kiu ngang thng thy.
Bi tp 3.9
Vit chng trnh xt xem mt s n c phi l s nguyn t khng?
a.Hng dn:
- Nu n khng chia ht mi s i c gi tr t 2 n n - 1 th n l s nguyn t.
- S dng bin ok c kiu boolean v c gi tr ban u l true.
Trang 29
Trang 30
CHNG IV
CU TRC LP KHNG XC NH
A. L THUYT
Dng REPEAT
Repeat
S;
Until B;
Dng WHILE
While B Do S;
ngha:
Dng REPEAT: Lp li cng vic S cho n khi biu thc B=TRUE th dng.
Trc Repeat c th B cha c xc nh nhng khi thc hin S th B xc nh.
Dng WHILE: Trong khi biu thc B=TRUE th tip tc thc hin cng vic S.
Trc While cn c cc lnh B c xc nh.
Yu cu quan trng: Trong S phi c mt lnh lm thay i d liu lin quan n
iu kin B.
B. BI TP
Bi tp 4.1:
Vit chng trnh in ra cc s l nh hn hoc bng s nguyn dng n ( Vi n
c nhp). Yu cu nhp li nu n <=0
a. Hng dn:
- S dng kin thc s l u tin bng 1. S l sau bng s trc cng vi 2.
- Cho bin i c gi tr ban u bng 1.
- Dng vng lp while do vi iu kin i < n v cng vic bn trong l in i v
tng i ln 2.
b. M chng trnh:
Program In_So_Le;
uses crt;
var i,n:integer;
begin
clrscr;
Repeat
write('Nhap so n: ');readln(n);
until n>0;
i:=1;
while i<=n do
begin
write(i:3,', ');
i:=i+2;
end;
readln
end.
Trang 31
Nhn xt:
- Mi vng lp For ... to ... do u c th thay th bng vng lp while ... do.
- on m:
Repeat
write('Nhap so n: ');readln(n);
until n>0;
Dng kim tra, khng ch iu kin ca d liu vo.
- Trong vng lp while nht thit phi c mt cu lnh lm thay i iu kin lp.
y l i:=i+2. Nu khng c s dn n trng hp lp v hn. Chng trnh chy mi
m khng c li ra (Khng thot ra khi vng lp c).
Bi tp 4.2:
Vit chng trnh tnh n! vi n! c nh ngha nh sau:
- n! = 1 vi n = 0
- n! = 1.2.3...n (Tch ca n s t 1 n n).
Yu cu: S dng vng lp vi s ln cha bit trc:
a. Hng dn:
- C th vit li: n! = n.(n-1)... 3.2.1.
- Lp gt = gt*n; n = n-1 vi iu kin n>0.
b. M chng trnh:
Program Giai_Thua_while;
uses crt;
var n, gt:longint;
begin
clrscr;
Repeat
write('Nhap so n: ');readln(n);
until n>0;
gt:=1;
while n>0 do
begin
gt:=gt*n;
n:=n-1;
end;
writeln('Giai thua cua n la: ',gt);
readln
end.
c. Nhn xt: Tit kim c mt bin i chy nhng lm thay i n nn khi xut ra ch
c th xut mt cu chung chung Giai thua cua n la:
Bi tp 4.3:
Vit chng trnh tnh n!! (giai tha kp) vi n!! c nh ngha nh sau:
- n!! = 1 vi n = 0
- n!! = 1.3.5..n vi n l.
Trang 32
c. Nhn xt:
- Vi thut ton trn ta khng cn xt n l chn hay l.
Bi tp 4.4:
Vit chng trnh cho php tnh tng ca nhiu s (Cha bit bao nhiu s). Nhp
s 0 kt thc qu trnh nhp.
a. Hng dn:
b. M chng trnh:
Program Tong_Repeat;
uses crt;
var i: byte;
so, tong: real;
begin
write('NHAP CAC SO - NHAP 0 DE NGUNG ');
readln;
repeat
clrscr;
write('Nhap so thu ',i,': ');
readln(so); tong:=tong+so; i:=i+1;
until so=0;
write('Tong la: ',tong:6:1);
readln
end.
Trang 33
Bi tp 4.5
Vit chng trnh tm c chung ln nht (UCLN) ca hai s vi yu cu s dng
thut ton Euclid.
Thut ton Euclid: Nu a chia ht cho b (a chia b d 0) th UCLN(a,b) bng b
Nu a chia b d r th UCLN(a,b) = UCLN(b,r)
a.Hng dn:
- Nhp a, b v gn r = a mod b.
- Lp vi iu kin r <> 0: b = r, a = b, r = a mod b.
b.M chng trnh:
Program UCLN;
uses crt;
var a,b,r:byte;
begin
clrscr;
writeln('CHUONG TRINH TIM UCLN CUA HAI SO');
write('Nhap a: ');readln(a);
write('Nhap b: ');readln(b);
r:=a mod b;
while r<> 0 do
begin
b:=r;
a:=b;
r:=a mod b;
end;
write('UCLN cua hai so la: ',b);
readln
end.
Bi tp 4.6
Dy Fibonacy c hai phn t u l 1, 1. Cc phn t sau bng tng hai phn t
ng ngay trc n: 1, 1, 2, 3, 5, 8, 13, 21, ...
Vit chng trnh in ra dy Fibonacy c phn t ln nht nh hn n?
a.Hng dn:
- Cn hai bin F_1 v F c gi tr u l 1, 1.
- Thc hin lp cho n khi F >= n.
- Do yu cu ch in cc s b hn n nn khi in cn thm mt lnh kim tra.
b.M chng trnh:
Program Fi_Bo_na_xi;
Var n, F_2,F_1, F: Longint;
Begin
Write('Nhap n: ');Readln(n);
F_1:=1; F_2:=1;
Write(F_2,';',F_1,';');
Repeat
F:=F_2+F_1;
Trang 34
Trang 35
CHNG V
D LIU KIU MNG (Mt chiu)
A. L THUYT
I. KHAI BO MNG
C php:
VAR
<Bin mng> : ARRAY [ch s] OF <Kiu d liu>;
V d:
VAR
M: Array[1..100] of Integer;
C: Array[A..Z] of byte;
Trong ch s c kiu v hng m c (nh: nguyn, k t ...)
II. QUN L MT MNG:
- qun ly mt dy cn hai bin nguyn v mt bin mng. Mt bin kiu nguyn
lu s phn t ca dy, mt bin nguyn khc lu ch s v mt bin mng lu
gi tr cc phn t ca dy.
- truy cp n phn t th k trong mng mt chiu A, ta s dng c php:
A[k].
- C th s dng cc th tc READ(LN)/WRITE(LN) i vi cc phn t ca
bin kiu mng.
B. BI TP
Bi tp 5.1
Vit chng trnh cho php nhp n s v in ra theo th t ngc li. V d nhp 3,
5, 7 th in ra 7, 5, 3.
a.Hng dn:
- Dng bin n lu lng s cn nhp.
- Dng mng lu cc s va nhp.
- Cho i chy t n v 1 in cc s va nhp.
b.M chng trnh:
Program mang_1;
uses crt;
var n, i: integer;
M: array[1..100] of real;
Begin
write('Nhap so n: ');readln(n);
for i:=1 to n do
Begin
write('M[',i,']='); readln(M[i]);
end;
for i:= n downto 1 do write(m[i], ,);
readln
end.
Trang 36
Bi tp 5.2
Vit chng trnh nhp dy n s v in ra tng cc s l trong dy s va nhp.
a. Hng dn:
Thc hin cng dn cc s l bng lnh:
if M[i] mod 2 =1 then tong:=tong+M[i]
b. M chng trnh:
Program Mang_Tong_Le;
uses crt;
var i,n:byte;
M:array[1..100] of integer;
tong:longint;
begin
write('Nhap so phan tu cua day: ');readln(n);
for i:=1 to n do
begin
write('M[',i,']'); readln(M[i]);
end;
tong:=0;
for i:=1 to n do if M[i] mod 2 =1 then
tong:=tong+M[i];
write('Tong cac so le trong day la: ',tong);
readln
end.
c. Nhn xt: Vi yu cu ca bi ton th khng cn s dng bin mng vn gii c.
Hy th nh.
Bi tp 5.3
Vit chng trnh nhp n s, xo s th k trong n s va nhp.In ra n-1 s cn li.
n= 10 (Nhp 10 phn t)
V d: Nhp 2, 3, 4, 5, 6, 8, 7, 6, 5, 4.
k= 8 (Xo phn t th 8).
In ra: 2, 3, 4, 5, 6, 8, 7, 5, 4.
a. Hng dn:
Xo phn t k bng cch ghi phn t th k+1 ln n.
b. M chng trnh:
Program Xoa_mang;
uses crt;
var m:array[1..100] of integer;
n,i,k:byte;
begin
Write('So phan tu cua day: ');readln(n);
for i:=1 to n do
Begin
write('M[',i,']=');
Trang 37
readln(M[i]);
end;
write('Nhap phan tu can xoa: ');readln(k);
for i:=k to n-1 do m[i]:=m[i+1];
for i:=1 to n-1 do write(m[i],', ');
readln
end.
c. Nhn xt: Vi yu cu ca bi tp trn ch cn kim tra ch s khi in (VD nu i = 8 th
khng in). Tuy nhin trong khi s dng mng lu d liu gii ton, nhiu khi ta c
nhu cu xa bt hoc chn thm phn t vo dy.
Bi tp 5.4
Vit chng trnh cho php nhp mt dy gm n s nguyn. Nhp thm mt s v
chn thm vo dy sau phn t k.
a. Hng dn:
- Di cc phn t t v tr k v sau mt bc.
- Nhp gi tr cn chn vo v tr k.
b. M chng trnh:
Program Mang_chen;
uses crt;
var M: array[1..100] of integer;
i,n,k:integer;
begin
clrscr;
write('Nhap : ');readln(n);
for i:=1 to n do
begin
write('M[',i,']='); readln(M[i]);
end;
write('Vi tri chen: ');readln(k);
for i:=n+1 downto k+1 do M[i]:=M[i-1];
write('Nhap so can chen: '); readln(M[k]);
for i:=1 to n+1 do write(M[i],', ');
readln
end.
Bi tp 5.5
Vit chng trnh cho php nhp n s v cho bit s nh nht trong cc s va
nhp l s th my.
a.Hng dn:
- Dng bin n lu lng s cn nhp.
- Dng mng lu cc s va nhp.
- Cho Min = M[1], j = 1 (Xem phn t u tin l b nht)
Trang 38
So snh Min vi n-1 s cn li. Trong qu trnh so snh nu Min > M[i] th gn
Min = M[i], j=i v tip tc so snh .
b.M chng trnh:
Program TIM_NHO_NHAT;
uses crt;
var n,i,nhonhat:integer;
m: array[1..100] of real;
min:real;
begin
write('Nhap n: '); readln(n);
for i:=1 to n do
begin
write('M[',i,']='); readln(m[i]);
end;
min:=m[1];
nhonhat:=1;
for i:=2 to n do if m[i] < min then
begin
min:=m[i]; nhonhat:=i;
end;
writeln('phan tu nho nhat la phan tu
thu',nhonhat);
readln
end.
Bi tp 5.6
Vit chng trnh cho php nhp n s sp xp v in ra cc s nhp theo th t
tng dn.
a. Hng dn:
b. M chng trnh:
Program Sap_xep_mang;
Var M: array[1..10] of integer;
i,j,n: byte;
tam: integer;
Begin
Write('Nhap so phan tu n:');Readln(n);
For i:=1 to n do
Begin Write('M[',i,']='); Readln(M[i]); End;
For i:=1 to n-1 do
For j:=i+1 to n do if M[j] <=M[i] then
Begin Tam:= M[i]; M[i]:=M[j]; M[j]:=tam; End;
Write('Sau khi sap xep: ');
For i:=1 to n do Write(M[i],';');
Readln;
Trang 39
End.
Bi tp 5.7:
Vit chng trnh in dy n s fibonacy.
a.Hng dn:
- S dng mng M cha dy n s fibonacy. To lp hai phn t u tin l 1, 1.
- Cho i chy t 3 n n. M [i] = M[i-1]+M[i-2].
- In n phn t u tin ca mng.
b.M chng trnh:
Program Fibonacy_mang;
uses crt;
var i,n: integer;
m:array[1..100] of longint;
begin
write('Nhap so phan tu can in:'); readln(n);
m[1]:=1;
m[2]:=1;
for i:=3 to n do m[i]:=m[i-1]+m[i-2];
for i:=1 to n do write(m[i],' ,');
readln
end.
Bi tp 5.8
Vit chng trnh in ra mn hnh tam gic Pascal. V d, vi n=4 s in ra hnh sau:
1
1
1
2
1
1
3
3
1
1
4
6
4
1
... Hng th n c xc nh t hng n-1:
- Phn t u tin v phn t cui cng u bng 1.
- Phn t th 2 l tng ca phn t th nht v th 2 ca hng n-1
- Phn t th k ca hng th n l tng ca phn t th k-1 v k ca hng th n-1.
Thut ton:
Bc 1: Khi to mt mng mt chiu n phn t c gi tr 0.
Bc 2: Khi to gi tr cho hng th nht M[1,1] = 1.
Bc 3: - i vi hng th i tnh gi tr phn t t phn t th i + 1 xung phn t th 2:
M[j]:=M[j] + M[j-1]
- In ra hng th i.
Chng trnh:
Program Tam_giac_Pascal_mot_chieu;
Var n,i,j: integer;
M: array[1..10] of integer;
Begin
Trang 40
Trang 41
CHNG VI
CHNG TRNH CON: TH TC V HM
A. L THUYT
I. KHI NIM V CHNG TRNH CON
Chng trnh con (CTC) l mt on chng trnh thc hin trn vn hay mt
chc nng no . Trong Turbo Pascal, c 2 dng CTC:
Th tc (PROCEDURE): Dng thc hin mt hay nhiu nhim v no .
Hm (FUNCTION): Tr v mt gi tr no (c kiu v hng, kiu string).
Hm c th s dng trong cc biu thc.
Ngoi ra, trong Pascal cn cho php cc CTC lng vo nhau.
II. CU TRC CHUNG CA MT CHNG TRNH C S DNG CTC
PROGRAM Tn_chng_trnh;
USES CRT;
CONST ............;
VAR
............;
PROCEDURE THUTUC[(Cc tham s)];
[Khai bo Const, Var]
BEGIN
..............
END;
FUNCTION HAM[(Cc tham s)]:<Kiu d liu>;
[Khai bo Const, Var]
BEGIN
..............
HAM:=<Gi tr>;
END;
BEGIN {Chng trnh chnh}
...................
THUTUC[(...)];
...................
A:= HAM[(...)];
...................
END.
Trang 42
Trang 43
c. Nhn xt: Chng trnh con cho php chia nh cng vic nhm n gin ho. Ngoi
ra mt cng vic no lp li nhiu ln trong chng trnh nn dng CTC v khi m
chng trnh s gn, d theo di, g ri hn.
Bi tp 6.2:
Vit chng trnh cho php nhp hai s vo hai bin, thc hin i gi tr ca hai
bin cho nhau. Yu cu dng chng trnh con thc hin chc nng i gi tr.
a. Hng dn:
b. M chng trnh:
Program CTC_1;
uses crt;
var a,b: real;
{----CTC doi gia tri----}
Procedure swap(var x,y:real);
var tam:real;
begin
tam:=x; x:=y; y:=tam;
end;
{-----Ket thuc CTC-----}
begin
clrscr;
write('Nhap so a: ');readln(a);
write('Nhap so b: ');readln(b);
swap(a,b);
write('Sau khi doi a =',a:3:1);
write('Sau khi doi b =',b:3:1);
readln
end.
b. Nhn xt:
- Nu b t var khai bo var x,y:real th chng trnh vn khng bo li nhng
chc nng i gi tr ca hai bin khng thc hin c.
Bi tp 6.3:
Tm s ln th nh trong n s c nhp t bn phm.
V d: Nhp cc s 10; 10; 9; 9; 8 th c s ln nh l 9.
Gii thut:
- Nhp 2 s, Xc nh gi tr cho hai bin Max, Nhi.
- Ln lt nhp cc s. Vi mi s c nhp xt:
- Nu So > Max th gn Nhi = Max, Max = So.
- Nu Nhi < So < Max th gn Nhi = So.
Program So_lon_nhi;
Var n,i,so, nhi,max,tam:integer;
Procedure swap(var x,y:real);
Trang 44
var tam:real;
begin
tam:=x;
x:=y;
y:=tam;
end;
Begin
Write('Nhap n: ');Readln(n);
Write('nhap so:');Readln(max);
Write('nhap so: ');Readln(nhi);
if nhi > Max then swap(Max,nhi)
For i:= 3 to n do
Begin
Write('Nhap so: ');Readln(so);
if (so>nhi) and (so<max) then nhi:=so;
if so>max then
Begin
nhi:=max;
Max:=so;
End;
End;
Write('So thu nhi la: ',nhi);
Readln
End.
Bi tp 6.3:
Vit chng trnh tnh giai tha ca s n (Vit l n!). Vi yu cu:
- Nu ngi dng nhp s n < 0 th yu cu nhp li.
- S dng chng trnh con tnh giai tha ca mt s.
n! = 1 nu n = 0;
n! = 1.2.3.4.5...n (Tch ca n tha s).
a. Hng dn:
b. M chng trnh:
Program CTC_2;
uses crt;
var n:integer;x:longint;
Procedure Giai_Thua(var GT:longint; n:byte);
begin
GT:=1;
while n>0 do
begin
GT:=GT*n;
n:=n-1;
end;
end;
Trang 45
begin
repeat
clrscr;
write('Nhap so n: ');readln(n);
if n < 0 then begin write('Nhap so n>=0');readln;
end;
until n>=0;
Giai_Thua(x,n);
writeln('Giai thua cua ',n,'la:',x);
readln
end.
Nhn xt: Lnh n:= n-1 lm thay i gi tr ca n nhng khi ra khi chng trnh con n
c gi tr khng i so vi trc khi gi chng trnh con.
Bi tp 6.4:
Vit chng trnh tnh n! vi yu cu s dng hm tnh giai tha.
a. Hng dn:
b. M chng trnh:
Program Giai_thua_Ham;
uses crt;
var n: longint;
Function Giai_Thua(n:longint):longint;
Var GT:Longint;
begin
GT:=1;
while n > 0 do
begin
GT:=GT * n;
n:=n-1;
end;
Giai_thua:=GT;
end;
begin
clrscr;
write('Nhap n: '); readln(n);
write(n,'!=',Giai_thua(n));
readln
end.
Nhn xt: Hy so snh s khc nhau khi Giai_thua c vit di hai dng Function v
Procedure.
- Khi dng Procedure cn mt bin (ton cc) lu gia gi tr ca n!. Bin ny c
truyn cho tham bin trong Procedure. Sau khi gi n cn lnh in n!
- Khi dng Function, c th s dng n nh l mt biu thc.
Trang 46
Bi tp 6.5:
Vit chng trnh cho php thc hin rt gn phn s.
a. Hng dn:
- Tm UCLN ca t s v mu s.
- Chia t v mu ca phn s cho UCLN va tm c.
b. M chng trnh:
Program Rut_gon_phan_so;
uses crt;
var tu,mau:integer;
Function UCLN(a,b:integer):integer;
var r: integer;
begin
r:= a mod b;
while r <> 0 do
begin
a:= b;
b:= r;
r:=a mod b;
end;
UCLN:=b;
end;
begin
clrscr;
write('Nhap tu: '); readln(tu);
write('Nhap mau: '); readln(mau);
write('Ket qua rut gon: ',tu,'/',mau,'=',tu div
UCLN(tu,mau),'/',mau div UCLN(tu,mau));
readln
end.
Bi tp 6.6:
Vit chng trnh cho php trn hai dy s A v B cng c s phn t l k
c dy s C theo yu cu sau:
A = a1, a2 ... ak
B = b1, b2 ... bk
c C = a1, b1, a2, b2 ... ak, bk.
a. Hng dn:
b. M chng trnh:
Program Tron_day;
uses crt;
type kieu_mang = array[1..100] of integer;
var A, B, C: Kieu_mang;
Trang 47
n,i,j: integer;
Procedure Nhap_Mang(Var X: Kieu_mang; n:byte);
var i:integer;
begin
for i:=1 to n do
begin
write('M[',i,']=');readln(X[i]);
end;
end;
Procedure In_Mang(X:kieu_mang; n:byte);
var i: byte;
begin
for i:=1 to n do write(x[i],', ');
end;
{-----------}
begin
clrscr;
write('Nhap so phan tu cua day: ');read(n);
Nhap_mang(A,n);
Nhap_mang(B,n);
i:=1;
j:=1;
while i<= n do
begin
C[j]:= A[i];
C[j+1]:=B[i];
j:=j+2;
i:=i+1;
end;
in_mang(C,2*n);
readln
end.
Bi tp 6.7:
Vit chng trnh in ra cc s nguyn t nh hn n vi yu cu dng hm kim
tra mt s c phi l s nguyn t hay khng.
a. Hng dn:
b. M chng trnh:
Program In_so_nguyen_to;
uses crt;
var n, i: integer;
{------Ham kiem tra-------}
Function kiem_tra(n:integer):boolean;
var i: integer;
Trang 48
begin
kiem_tra:=true;
for i:=2 to n-1 do if (n mod i) = 0 then
kiem_tra:=false;
end;
{------CTC----------------}
begin
clrscr;
write('Nhap n: '); readln(n);
for i:=2 to n do if kiem_tra(i) then write(i:3,
', ');
readln;
end.
Bi tp 6.8:
Vit chng trnh cho php sp xp mt dy s vi yu cu s dng cc chng
trnh con: Nhp mng, in mng, i gi tr ca hai s.
a. Hng dn:
b. M chng trnh:
Program Sap_xep_day;
uses crt;
type kieu_mang =array[1..100] of integer;
Var A: kieu_mang;
n,i,j:byte;
{---------------------}
Procedure Nhap_mang(var M:Kieu_Mang;n:byte);
Var i:byte;
begin
for i:=1 to n do
begin
write('M[',i,']=');readln(M[i]);
end;
end;
{---------------------}
Procedure In_mang(var M:Kieu_Mang;n:byte);
Var i:byte;
begin
for i:=1 to n do write(M[i]:3,', ')
end;
{---------------------}
Procedure swap(var a,b:integer);
var tam:integer;
begin
tam:=b;
Trang 49
b:=a;
a:=tam;
end;
{---------------------}
Begin
Clrscr;
write('Cho biet so phan tu cua day:
');readln(n);
nhap_mang(A,n);
for i:=1 to n-1 do
for j:= i to n do if A[i]>A[j] then
swap(A[i],A[j]);
In_mang(A,n);
readln
end.
Trang 50
CHNG VII
CHUYN CHIA HT S NGUYN T.
A. L THUYT:
-:
-:
.
-:
B. BI TON:
Bi tp 7.1 :
Nhp vo mt s nguyn dng n. Hy in ra s nguyn t nh nht ln hn n.
VD: Nhp n = 10. Kt qu in ra s 11.
Gii thut :
- Gn i := n ;
- Thc hin cho n khi i l nguyn t vic tng i ln 1.
Program Nguyen_to;
Var n,i:integer;
Function NT(n:integer):Boolean;
Var ok: Boolean;
i: integer;
Begin
ok:=true;
for i:=2 to n-1 do
if (n mod i)= 0 then ok:=ok and false;
if n < 2 then NT:=false else NT:=ok;
End;
Begin
Write('Nhap n: ');Readln(n);
i:=n;
Repeat i:=i+1;
Until NT(i);
Write('So nguyen to nho nhat lon hon ',n, 'la: ',i);
Readln
End.
Bi tp 7.2 :
Nhp vo t bn phm s t nhin n (n<1000). Hy phn tch n thnh tch cc
tha s nguyn t.
VD: Nhp vo n = 9 c 9 = 3.3
Thut ton:
Gn i := 2;
Khi n > 1 th lp:
Nu n chia ht cho i th in ra i v gn li n:= n div i. Ngc li tng i ln 1.
Trang 51
Program Phan_tich;
var n,i: integer;
Begin
Write('Nhap so can phan tich: ');Readln(n);
i:=2;
Write('Ket qua phan tich:');
Write(n,'=');
While n>1 do
Begin
if n mod i = 0 then Begin Write(i,'.'); n:= n div i End
else i:=i+1;
End;
Readln
End.
Nhn xt: Ci t trn in d mt du nhn cui. Hy chnh sa b du nhn tha
ny.
Bi tp 7.3:
Tm cc s t nhin nh hn hoc bng n m sau khi lm php phn tch ra tha
s nguyn t c nhiu nhn t nht.
V d n=9 . Cc s c nhiu nhn t nht sau khi lm php phn tch l: 8 = 2.2.2
Thut ton:
Ci t:
Program Phan_tich_nguyen_to_2;
Var n, Max, so, i:byte;
Function PTNT(n:integer):byte;
Var i,p:byte;
Begin
i:=2;
p:=0;
While n>1 do if (n mod i)=0 then Begin p:=p+1; n:=n div
i end else i:=i+1;
PTNT:=p;
End;
Procedure PT(n:integer);
Var i:byte;
Begin
i:=2;
While n>1 do
if (n mod i)=0 then
Begin Write(i,'.'); n:=n div i end else i:=i+1;
End;
Begin
Trang 52
Write('Nhap so n: ');Readln(n);
Max:=0;
For i:= 1 to n do if PTNT(i)>=Max then Begin
Max:=PTNT(i); So:=i End;
Write('So ',So,' co nhieu uoc nhat,',so,' = ');
PT(So);
Readln
End.
Bi tp 7.4:
Vit chng trnh cho php phn tch mt s ra tha s nguyn t v ghi kt qu
di dng tch cc ly tha. V d: 300 = 2^2.3.5^2
Thut ton:
Dng mt mng lu ly tha. Mng ny c gi tr cc phn t ban u u bng 0.
Nu n chia ht cho i th tng M[i] ln 1.
Khi in kim tra: Nu M[i] >0 th in i^M[i].
Ci t:
Program Phan_tich;
Var M: array[1..1000] of byte;
i: byte;
n: integer;
Begin
For i:=1 to 1000 do M[i]:=0;
Write('Nhap so n: ');Readln(n);
i:=2;
While n>1 do if (n mod i = 0) then begin M[i]:=M[i]+1;
n:=n div i End
else i:=i+1;
For i:=1 to 1000 do if M[i]>0 then Begin If M[i]>1 then
Write(i,'^',M[i],'.') else Write(i,'.') End;
Readln;
End.
Bi tp 7.5
Mi s t nhin u c th vit c di dng tng ca hai s nguyn t. Vit
chng trnh thc hin tch mt s t nhin thnh tng ca hai s nguyn t.
Thut ton:
Ci t:
Program Tong_nguyen_to;
Var i,n:integer;
Function NT(n:integer):Boolean;
Var ok: Boolean;
i:integer;
Begin
Trang 53
ok:=true;
For i:=2 to n-1 do if (n mod i) = 0 then ok:=ok and
false;
if n>=2 then NT:=ok else NT:=false;
End;
Begin
Write('Nhap so n: ');Readln(n);
For i:=2 to n div 2 do if (NT(i) and NT(n-i)) then
Writeln(n,' = ',i,' + ',n-i);
Readln
End.
Nhn xt: Hy m rng bi ton theo hng
- Xt xem trong on [n1...n2] s no cho php tch thnh tng hai s nguyn t nhiu
trng hp nht.
- Tch mt s thnh tng ba s nguyn t.
Bi tp 7.6: (Tin hc tr ton quc ln I - 1995)
Hai s t nhin A, B c coi l hu ngh nu nh s ny bng tng cc c s
ca s kia v ngc li. Lp trnh tm v chiu ln mn hnh cc cp s hu ngh trong
phm vi t 1 n 10000. (Lu : s 1 c coi l c s ca mi s cn mi s khng
c coi l c s ca chnh n).
Thut ton:
Ci t:
Program Cap_so_huu_nghi;
Var a,b,n,i:integer;
Function TU(a:integer):integer;
Var Tg,i:integer;
Begin
Tg:=0;
For i:=1 to a-1 do if (a mod i = 0) then Tg:=Tg + i;
TU:=Tg;
End;
Begin
Write('Nhap so n: ');Readln(n);
For a:=1 to n do Begin b:=TU(a); if TU(b)=a then
Writeln(a,'-',b) end;
Readln;
End.
Nhn xt: Cc s hon chnh lun l hu ngh ca chnh n.
Trang 54
CHNG VIII
CHUYN DY CON.
A. L THUYT:
- Dy con l dy cc phn t lin tc thuc mt dy c trc (dy m) tha mn mt tnh
cht no .
- qun l mt dy con cn mt ch s (ni bt u dy con) v di ca dy.
- Mt cch qun l khc l ch s u v chr s cui.
- xy dng mt dy con cn:
- Xy dng gi tr ban u.
- Duyt qua cc phn t ca dy, Nu:
- Tha iu kin, tng di thm 1 ngc li:
- Nu dy con ang xt cn lu th: Lu li di, ch s u dy, Xc nh li
di, ch s u ca dy mi.
- Nu dy con ang xt khng cn lu th: Xc nh li di, ch s u ca dy
mi.
- duyt qua tt c cc dy con ca mt dy gm n s ta dng thut ton vt cn sau:
For i:= 1 to n
For j:= 1 to n-i+1 Xt dy con bt u t v tr th i c di j.
B. BI TP:
Bi tp 1: Cho dy s gm n s. Tm dy con ln nht cc phn t tng (gim) dn.
Gii thut:
S dng k thut xy dng dy con.
Ci t:
Program Day_con1;
Var M: array[1..100] of integer;
i,n, dau,ldau, dai,Max: integer;
Begin
Write('Nhap so n: '); Readln(n);
For i:=1 to n do
Begin Write('[',i,']='); Readln(M[i]); End;
{Khoi tao gia tri dau}
i:=0;
Max:=1;
dau:=1;
dai:=1;
ldau:=1;
While i<=n do
Begin
i:=i+1;
if M[i+1]>=M[i] then dai:=dai+1 else
if dai> Max then Begin Max:=dai; ldau:=dau; dai:=0
End
else Begin dau:=i+1; dai:=1 End;
Trang 55
End.
End;
Write('Xau con dai:',max,' bat dau tu: ',ldau);
Readln
Nhn xt: Bi ton trn c th s dng gii thut vt cn dy con gii. Sau y l ci
t:
Program Day_con1b;
Type KM= array[1..100] of integer;
Var M:KM;
i,j,n, dau,ldau, dai,Max: integer;
Function KT(A:KM;m,l:byte):boolean;
Var ok:Boolean;
i:byte;
Begin
ok:=True;
For i:=m to m+l-1 do if A[i]>A[i+1] then ok:=ok and
false;
KT:=ok;
End;
Begin
Write('Nhap so nc: '); Readln(n); Max:=0;
For i:=1 to n do Begin Write('[',i,']=');
Readln(M[i]); End;
For i:= 1 to n-1 do
For j:=1 to n-i+1 do
if KT(M,i,j) then
if j+1> Max then Begin ldau:=i; Max:=j+1
End;
Write('Xau con dai:',max,' bat dau tu: ',ldau);
Readln
End.
Bi tp 2: Cho dy s gm n s. Tm dy con ln nht cc phn t c cng du, (an
du).
Gii thut:
Thc hin ging nhu bi 1, ch thay iu kin l M[i+1]*M[i] >0
Ci t:
Program Day_con2;
Var M: array[1..100] of integer;
i,n, dau,ldau, dai,Max: integer;
Begin
Write('Nhap so nc: '); Readln(n);
Trang 56
Begin
Write('Nhap so nc: '); Readln(n);
For i:=1 to n do Begin Write('[',i,']='); Readln(M[i]); End;
Max:=M[1];dai:=1;ldau:=1;
For i:= 1 to n do
For j:=0 to n-i+1 do
if TONG(M,i,j)> Max then
Begin ldau:=i; Max:=Tong(M,i,j) ; dai:=j+1 End;
Write('Xau con co tong:',max,' bat dau tu: ',ldau, ' dai: ',dai);
Readln
End.
Nhn xt:
Trang 58
CHNG IX
CHUYN CH S, H C S.
A. L THUYT:
- Trong h c s 10: S A = an.a2a1a0 = a0 + 10a1 + +10nan nn:
ly s a0 = A mod 10; xa ch s a0 ta dng A:=A div 10.
(Tng t: ly hai s tn cng a1a0 = A mod 100; xa hai ch s a1 a0 ta dng
A:=A div 100.
- Thut ton vt cn: xt tt c cc trng hp ca s A ta xt an = 1..9; an-1.a2a1a0
=0..9
- H c s 2: Nu nh h thp phn dng 10 ch s ghi s th h c s 2 ch dng hai
ch s l 0 v 1 ghi s.
- i mt s t c s 2 sang c s 10:
- i mt s t c s 10 sang c s 2:
- H c s bt k:
- Vn cng, tr, nhn, ly tha s ln (hoc kt qu c s ln) c xem xt ring
mt chuyn (sau khi c trang b d liu kiu string).
B. BI TON:
Bi tp 8.1:
Gi abcd l mt s c 4 ch s. Hy lp chng trnh tm tt c cc s c 4
ch s tha mn biu thc: abcd=(ab + cd)2
V d: s 2025=(20 + 25)2.
Thut ton:
Kim tra tt c cc s c bn ch s theo cc cch sau;
- Tch ly hai s u, hai s sau ca s c bn ch s kim tra.
- Kim tra cc trng hp c th ca mi ch s.
Cch 1:
Program
Tach_so;
Var haisodau, haisocuoi, i : integer;
Begin
Writeln( cac so thoa man dieu kien gom co);
For i:=1000 to 9999 do
Begin
haisodau:=i Div 100;{lay 2 so dau tien ab}
haisocuoi:=i mod 100;{lay 2 so cuoi cd}
If i=SQR(haisodau + haisocuoi) then write(i:5);
End;
Readln;
End.
Cch 2:
Program
Xet_so;
Var a,b,c,d : integer;
Trang 59
Begin
Writeln( cac so thoa man dieu kien gom co);
For a:=1 to 9 do
For b:=0 to 9 do
For c:=0 to 9 do
For d:=0 to 9 do
If i=(1000*a + 100*b + 10*c+ d) = SQRT(10*a+b + 10*c+d)
then write(i:5);
Readln;
End.
Bi tp 8.2:
Vit chng trnh cho nhp hai s t nhin N v k. Hy cho bit ch s th k tnh
t tri sang phi trong s N l s my? nu k ln hn di ca N hoc k bng 0 th
thng bo khng tm c.
V d 1: Vi N v k c nhp: N = 65932, k = 4
Kt qu tm c l 3.
V d 2: Vi N v k c nhp: N = 65932, k = 10
Kt qu tm c l -1 ( k ln hn di s N).
Program Chu_so_thu_k;
Var M: array[1..10] of integer;
so: Longint;
i,k:integer;
Begin
Write('Nhap so: ');Readln(so); so:=abs(so);
Write('Nhap k: ');Readln(k);
i:=0;
While so>0 do
begin
i:=i+1;
M[i]:=so mod 10;
so:=so div 10;
end;
Write('Chu so thu ',k,'la: ',M[i-k+1]);
Readln
End.
Nhn xt : Nu bi ton yu cu tm ch s th k tnh t phi sang tri th n gin hn
nhiu. Lc ta ch cn xa k-1 ch s cui. Ri ly ch s cui.
Bi tp 8.2:
Mt s c gi l s bc thang nu biu din thp phn ca n c nhiu hn mt
ch s ng thi theo chiu t tri qua phi, ch s ng sau khng nh hn ch s
ng trc. Vit chng trnh in ra cc s bc thang trong on [n1, n2] vi n1, n2 c
nhp t bn phm.
Trang 60
Program So_bac_thang;
Var i,n1,n2: integer;
Function BT(n:integer):Boolean;
Var ok: boolean;
so:byte;
Begin
ok:=true;
While n>=10 do
Begin
so:=n mod 10;
n:=n div 10;
if so < (n mod 10) then ok:=ok and false;
End;
BT:=ok;
End;
Begin
Write('Nhap so n1: ');Readln(n1);
Write('Nhap so n2: ');Readln(n2);
For i:= n1 to n2 do if BT(i) then Write(i:4);
Readln
End.
Bi tp 8.3:
Vit chng trnh cho php i mt s t c s 10 sang c s bt k.
Thut ton:
- Dng mng CS lu cc ch s.
- Lp khi n <> vic: Chia n cho s ly phn d. Ly phn d lm ch s ly v lu
ch s. Gn n = n div s.
- Ch ch s ly sau s nm trc.
Program Doi_co_so;
Var n,s: longint;
Function D10_CS(n:longint;s:byte):string;
Var CS: array[0..100] of char;
i: integer;
ch:Char;
Tam:string;
Begin
{Khoi tao cac chu so 0 den 9}
i:=0;
ch:='0';
while i<=9 do
Begin
CS[i]:=Ch;
Trang 61
inc(i);
inc(ch);
End;
{Khoi tao cac chu so A den Z}
i:=10;
ch:='A';
While ch<'Z' do
Begin
CS[i]:=ch;
inc(i);
inc(ch);
End;
tam:='';
While n<>0 do
Begin
tam:= CS[n mod s]+ Tam;
n:=n div s;
End;
D10_CS:=Tam;
End;
Begin
Write('Nhap n:');Readln(n);
Write('Doi sang co so: ');Readln(s);
Write(D10_CS(n,s));
Readln
End.
Bi tp 8.4:
Vit chng trnh cho php i mt s t c s bt k sang c s 10.
Thut ton:
- Dng mng CS1 lu gi tr ca cc ch s <10 v mng CS2 lu gi tr ca
cc ch s ln hn 10.
- Lp li cho n khi n= vic: Ly ch s u tin ca n lm ch s xc nh gi
tr ca ch s, Gn Tong:=Tong*C s + Gi tr tng ng ca ch s; Xa ch
s u tin ca n.
Program Doi_co_so;
Var n: String;
s:byte;
Function DCS_10(st:String;s:byte):longint;
Var CS1: array['0'..'9'] of byte;
CS2: array['A'..'Z'] of byte;
ch:Char;
i:byte;
Trang 62
Tam:longint;
Begin
i:=0;
ch:='0';
while i<=9 do
Begin
CS1[ch]:=i;
inc(i);
inc(ch);
End;
i:=10;
ch:='A';
While ch<'Z' do
Begin
CS2[ch]:=i;
inc(i);
inc(ch);
End;
Tam:=0;
While st<>'' do
Begin
ch:=st[1];
if (ch>='0') and (ch<='9') then Tam:=Tam*s+CS1[ch]
else Tam:=Tam*s+CS2[ch];
Delete(st,1,1);
End;
DCS_10:=Tam;
End;
Begin
Write('Nhap n:');Readln(n);
Write('Co so cua so vua nhap: ');Readln(s);
Write(DCS_10(n,s));
Readln
End.
Bi tp 8.5: (Vnh Phc 2009-2010)
Nm 1973, nh Ton hc Neil Sloan a ra khi nim bn ca mt s nguyn
khng m N nh sau:
Nu N c mt ch s th bn ca N bng 0.
Nu N c t 2 ch s tr ln th bn ca N bng bn ca s nguyn l tch
cc ch s ca N cng 1.
Cho N, tm s b hn N c bn ln nht (0 N 2.000.000.000).
V d
Trang 63
Persist persist
.inp
.out
100
77
Gii thch
Doben(77)=Doben(49)+1=Doben(36)+1+1=Doben(1
8)+1+1+1=Doben(8)+1+1+1+1=0+1+1+1+1=4
Gii thut:
- tm bn mt s cn mt hm tnh tch cc ch s ca n TICH(n).
- Cho d = 0. Lp li iu kin n >9 vic: Tng d ln 1 thay n = TICH(n).
Program Do_ben;
uses crt;
Var n,d,i,j,max:longint;
Function TICH(n:Longint):Longint;
Var tam:integer;
Begin
if n=0 then tam:=0 else tam:=1;
While n<> 0 do
Begin
Tam:=tam*(n mod 10);
n:=n div 10;
End;
TICH:=Tam;
End;
Begin
clrscr;
Write('Nhap n:');Readln(n);
Max:=0;
For i:=1 to n do
Begin
d:=0;
j:=i;
gotoxy(1,2);
Write('Dang duyet den so: ',i);
While j>9 do
Begin
d:=d+1;
j:=TICH(j);
End;
if d>=Max then
Begin
max:=d;
gotoxy(1,3);
Writeln('So co do ben lon nhat dang la ',i,' do
ben la:',d);
End;
Trang 64
End;
Gotoxy(1,4);
Writeln('Da duyet xong');
Readln
End.
Trang 65
CHNG X
CHUYN A THC (Mt bin).
A. L THUYT:
- lu tr mt a thc ta ch cn lu cc h s (bng mt mng)v bc ca a
thc.
- Cc php ton i vi mt a thc gm cng, tr, nhn, chia hai a thc.
- Vic tnh gi tr a thc ti mt gi tr ca bin c thc hin thng qua lc
hooc n hoc tnh trc tip.
B. BI TP:
Bi tp 10.1:
Vit chng trnh cho php cng hai a thc. Kt qu in ra dng:
anx^n + ... + a1x + a0
Gii thut:
- Dng hai mng A, B lu h s ca hai a thc. C th dng mng th ba C hoc
dng li mt trong hai mng A, B lu h s ca a thc tng.
- Khi in kt qu cn kim tra h s in du cho ng.
Ci t:
Program Cong_da_thuc;
uses crt;
Type KM = array[0..10] of integer;
Var A,B: KM;
n: byte;
Procedure NhapDT(Var A: KM; n:byte);
Var i: byte;
Begin
For i:=n downto 0 do
Begin Write('M[',i,']='); Read(A[i]); End;
End;
Procedure CONG(Var A:KM;B:KM;n:byte);
Var i: byte;
Begin
For i:= 0 to n do A[i]:=A[i]+B[i];
End;
Procedure INDT(A:KM;n:byte);
Var i: byte;
Begin
if A[n] <> 0 then Write(A[n],'x^',n);
For i:=n-1 downto 0 do
if A[i] <> 0 then
if A[i] < 0 then write(A[i],'x^',i) else
Write('+',A[i],'x^',i);
End;
Trang 66
Begin
clrscr;
Write('Nhap bac n: ');Readln(n);
Writeln('Nhap da thuc A: '); NhapDT(A,n);
Writeln('Nhap da thuc B: '); NhapDT(B,n);
clrscr;
Indt(A,n); Writeln;
Indt(B,n); Writeln;
Cong(A,B,n);
Writeln('Da thuc tong: ');
Indt(A,n);
Readln;
Readln
End.
Nhn xt:
Bi tp 10.2:
Vit chng trnh cho php tnh gi tr ca a thc A(x) ti gi tr x = x0.
Gii thut:
- Dng chng trnh con tnh xn.
Ci t:
Program Gia_tri_cua_da_thuc;
Var n,i: integer;
x,a,s:real;
Function XMU(x:real; n:integer):real;
Var i: integer;
Mu: real;
Begin
Mu:=1;
For i:=1 to n do Mu:=Mu*x;
XMU:=Mu;
End;
Begin
Write('Nhap bac cua da thuc n = '); Readln(n);
Write('Tinh f(x) tai x = ');Readln(x);
S:=0;
For i:=n downto 0 do
Begin
Write('a',i,'= '); Readln(a);
S:=S+a*XMU(x,i);
End;
Writeln('F(',x:5:2,')= ',S:5:2);
Readln;
End.
Trang 67
Nhn xt:
Bi tp 10.3:
Vit chng trnh tnh gi tr ca a thc A(x) vi iu kin khng dng bin
mng.
Vit chng trnh tnh gi tr ca a thc f(x) = anxn + ... +a1x + a0 ti x = x0.
Thut ton: f(x) = anxn + ... +a1x + a0
= a0 + x(a1 + x(a2 + ... x(an-1 + x(an))...))
Lp li vic: c v cng h s ri nhn vi x t h s an n h s a0.
Chng trnh:
Program Gia_tri_da_thuc;
Var S,a,x: real;
n,i: byte;
Begin
Write('Nhap bac cua da thuc. n = '); Readln(n);
Write('Tinh f(x) tai x = ');Readln(x);
S:=0;
For i:= n downto 0 do
Begin
Write('a',i,'=');Readln(a);
S:=(S+a)*x;
End;
Write('f(',x:3:1,')=',S:5:1);
Readln
End.
Nhn xt:
Bi tp 10.4:
Vit chng trnh cho php nhn hai a thc sp xp.
Thut ton: Tch a thc A bc m vi a thc B bc n l a thc C bc m + n. Trong
: C[m] = Tng ca cc tch A[i] * A[j] sao cho i+j = m.
Program Nhan_da_thuc;
Var m,n,i,j:byte;
A, B, C: array[0..10] of real;
Begin
Write(' Nhap bac cua da thuc A: ');
Readln(m);
For i:= m downto 0 do
Begin
Write('A[',i,']= '); Readln(A[i]);
End;
Write(' Nhap bac cua da thuc B: ');
Readln(n);
For i:= n downto 0 do
Begin
Write('B[',i,']= '); Readln(B[i]);
Trang 68
End;
For i:=0 to m+n do C[i]:=0;
For i:=0 to m do
For j:=0 to n do C[i+j]:=C[i+j]+A[i]*B[j];
For i:= m+n downto 0 do if C[i]<>0 then
Write(C[i]:3:1,'x^',i,' + ');
Readln
End.
Nhn xt:
Bi tp 10.5:
Vit chng trnh cho php chia hai a thc tm a thc thng v a thc d.
Gii thut:
Ci t:
Program Chia_da_thuc;
uses crt;
Type KM = array[0..10] of real;
Var A,B,C,AB,D: KM;
i,n,cs,bc: byte;
Procedure NhapDT(Var A: KM; n:byte);
Var i: byte;
Begin
For i:=n downto 0 do
Begin Write('M[',i,']='); Read(A[i]); End;
End;
Function BAC(A:KM;n:integer):Byte;
Var i:Byte;
Begin
i:=n;
While (A[i]=0) and (i> 0) do i:=i-1;
BAC:=i;
End;
Procedure TRU(Var A:KM;B:KM;n:byte);
Var i: byte;
Begin
For i:= 0 to n do A[i]:=A[i]-B[i];
End;
Procedure NHAN(Var C:KM;A,B:KM; Var n:byte);
Var i,j:byte;
TAM:KM;
Begin
n:=Bac(A,n)+Bac(B,n);
For i:= 0 to 2*n do TAM[i]:=0;
For i:= 0 to n do
For j:=0 to n do TAM[i+j]:=TAM[i+j]+A[i]*B[j];
For i:=0 to 2*n do C[i]:=TAM[i];
Trang 69
End;
Procedure INDT(A:KM;n:byte);
Var i: byte;
Begin
if A[n] <> 0 then Write(A[n]:3:1,'x^',n);
For i:=n-1 downto 0 do
if A[i] <> 0 then
if A[i] < 0 then write(A[i]:3:1,'x^',i) else
Write('+',A[i]:3:1,'x^',i);
End;
Procedure DT_BAC(Var A:KM;Bac:byte;gt:real);
Var i:byte;
Begin
For i:=1 to n do A[i]:=0;
A[Bac]:=gt;
End;
Begin
clrscr;
Write('Nhap bac cua da thuc bi chia: ');Readln(n);
Writeln('Nhap da thuc A: '); NhapDT(A,n);
Writeln('Nhap da thuc B: '); NhapDT(B,n);
clrscr;
Write('Da thuc bi chia: ');Indt(A,n); Writeln;
Write('Da thuc chia: ');Indt(B,n); Writeln;
bc:=Bac(A,n)-Bac(B,n); {Luu bac cua da thuc C}
For i:=1 to bc do C[i]:=0;
While BAC(A,n) >= BAC(B,n) do
Begin
cs:=BAC(A,n)-BAC(B,n);
C[cs]:=A[Bac(A,n)]/B[Bac(B,n)];
Writeln('C[',cs,']=',C[cs]:3:1);
DT_BAC(D,cs,C[cs]);Writeln;
Write('Da thuc D:');
Indt(D,n);
NHAN(AB,B,D,n);Writeln;
Write('Da thuc AB:');
Indt(AB,n);Writeln;
TRU(A,AB,n);
Write('Da thuc A moi:');
Indt(A,n);
End;
Writeln('Da thuc thuong: ');
Indt(C,bc);
Readln;
Readln
End.
Trang 70
Nhn xt:
Bi tp 10.7:
Gii thut:
Ci t:
Nhn xt:
Bi tp 10.8:
Gii thut:
Ci t:
Nhn xt:
Bi tp 10.9:
Gii thut:
Ci t:
Nhn xt:
Bi tp 10.10:
Gii thut:
Ci t:
Nhn xt:
Trang 71