Bài tập 1. Dùng thủ tục chuyển một số tự nhiên n cho trước sang hệ cơ số 2. Procedure Change ( n : integer ; Var St : String ) ;
b : Array[0.. 1] Of Char = ('0', '1') ; Var
du, So : Integer ; S : String ; Begin
S :='' ; {tao xau rong} So :=n ; Repeat Du:= So mod 2 ; So:=So div 2 ; S:=b[du] + s ; Until So = 0 ; St :=S ; End ;
Bài tập 2: Dùng thủ tục giải phương trình bậc hai ax2 + bx + c = 0
Uses Crt ;
Var a, b, c, x1, x2 : real;
{================================}
Procedure Nhapabc(var aa,bb,cc : real); Begin
Write('a='); Readln(aa); Write('b='); Readln(bb); Write('c='); Readln(cc);
End;
{=================================}
Procedure GPTB2; Var Delta : real;
Begin
Delta :=sqr(b)-4*a*c;
If Delta<0 then Writeln('Phuong trinh vo nghiem.')
Else
If Delta=0 then Begin
Write('Phuong trinh co nghiem kep : '); Write('x1,2=',-b/(2*a) : 8 : 2); End Else Begin x1 :=(-b+sqrt(Delta))/(2*a); x2 :=(-b-sqrt(Delta))/(2*a);
Writeln('Phuong trinh co 2 nghiem phan biet la : '); Writeln('X1=',x1 : 8 : 2, 'X2=',x2 : 8 : 2); End; End; {============================================} BEGIN { CT chính } Clrscr;
Writeln(' Giai Phuong Trinh Bac Hai Voi Cac He So : '); Nhapabc(a,b,c);
If a<>0 then GPTB2
Else Writeln(' Khong phai phuong trinh bac hai '); Readln ;
END.
Bài tập 3: Viết chương trình thực hiện lần lượt các công việc sau :
• Lập thủ tục nhập ba số thực dương a, b, c từ bàn phím.
• Lập thủ tục kiểm tra xem ba số trên có lập thành ba cạnh của tam giác hay không ?
• Viết thủ tục tính diện tích của tam giác.
• Viết thủ tục tính các trung tuyến của tam giác.
• Viết hoàn thiện chương trình chính.
Program Chuong_trinh; Uses Crt; (adsbygoogle = window.adsbygoogle || []).push({});
Var a, b, c : real ;
{================================} Procedure Nhap(Var a, b, c : real);
Procedure input (Var a : real; tenbien : Char); Begin
Repeat
Write('Nhap ' + tenbien+' = '); Readln(a); Until (a>=0); End; Begin Input(a, 'a'); Input(b, 'b'); Input(c, 'c'); End;
Begin
If (a<b+c) And (b<a+c) And (c<a+b) then
Writeln(a :0 :2, ', ', b : 0 : 2, ' va ', c : 0 : 2, ' lap thanh ba canh cua tam giac ') Else Writeln('Khong lap thanh ba canh cua tam giac') ;
End;
Procedure Trung_tuyen (a, b, c : Real); Var ma, mb, mc : real;
Begin
ma :=sqrt((2*sqr(b)+2*sqr(c)-sqr(a))/4); mb :=sqrt((2*sqr(a)+2*sqr(c)-sqr(b))/4); mc :=sqrt((2*sqr(a)+2*sqr(b)-sqr(c))/4);
Writeln('Cac trung tuyen cua tam giac la : ') ;
Writeln('ma=', ma : 0 : 2, ' mb=', mb : 0 : 2, ' mc=', mc : 0 : 2); End;
{================================} Procedure Dientich (a, b, c : real); Var p, S : real; Begin p :=(a+b+c)/2; S :=sqrt(p*(p-a)*(p-b)*(p-c)); Writeln('Dien tich =', S : 0 : 2); End; {================================} BEGIN Clrscr; Nhap(a, b, c); Kiemtra(a, b, c);
Dientich(a, b, c); Trung_tuyen(a, b, c); Readln;
END.
Bài tập 4 : Số Hoàn Hảo là số có tổng các ước của nó (trừ nó) bằng chính nó
Ví dụ : 6 = 1 + 2 + 3
a. Viết chương trình kiểm tra xem 1 số có là số hoàn hảo không
b. Liệt kê tất cả số hoàn hảo từ 1..2000 và đếm xem có bao nhiêu số
Program So_hoan_hao; uses crt;
var n,i,d,k,j : integer;
Procedure hoanhao; Begin
d :=0;
for i :=1 to n-1 do
if n mod i=0 then d :=d+i;
if d=n then writeln(' So vua nhap la so hoan hao') else writeln(' So vua nhap khong la so hoan hao'); end;
Procedure Viet_len; Begin
write(' Day so hoan hao tu 1-->2000 : '); k :=0; (adsbygoogle = window.adsbygoogle || []).push({});
for i :=1 to 2000 do Begin d :=0; for j :=1 to i-1 do if i mod j=0 then d :=d+j; if d=i then Begin write(i : 5); k :=k+1; End; End; writeln;
writeln(' Trong day 1-->2000 co ',k,' so hoan hao'); End;
Begin
clrscr;
write(' Nhap n='); readln(n); hoanhao;
vietlen; readln; End.
Bài 5 : Nhập vào 1 số nguyên gồm 4 chữ số viết chương trình con thực hiện
• Kiểm tra tình chắn lẻ
• Kiểm tra xem có phải là số nguyên tố không
• Kiểm tra xem có phải là số chính phương không
Sau đó trên chương trình chính kiểm tra và trả lời số vừa nhập thuộc số nào? Program chuong_trinh;
uses crt;
var i,n,k,d : integer; ok : boolean;
Function chanle(n : integer) : boolean;
Begin
ok :=true;
if n mod 2<>0 then ok :=false; chanle :=ok;
End;
Function nguyento(n : integer) : boolean;
Begin
ok :=true; d :=0; for i :=2 to n-1 do
if n mod i=0 then d :=d+1; if d<>1 then ok :=false; nguyento :=ok;
Function chinhphuong(n : integer) : boolean; Begin ok :=true; k :=trunc(sqrt(n)); if sqr(k)<>n then ok :=false; chinhphuong :=ok; End; Begin clrscr;
write(' Nhap n=');readln(n);
if chanle(n) then writeln(' So vua nhap la chan') else writeln(' So vua nhap la so le');
if nguyento(n) then writeln(' So vua nhap la nguyen to') else writeln(' So vua nhap khong phai la so nguyen to');
if chinhphuong(n) then writeln(' So vua nhap la so chinh phuong') else writeln(' So vua nhap khong la so chinh phuong');
readln; End.
Bài 6. Viết chương trình con tính a Giai Thừa với a nhập từ bàn phím Program giaithua;
uses crt; (adsbygoogle = window.adsbygoogle || []).push({});
var a : integer;
Var s : Longint; i : byte; Begin s :=1; For i :=2 to n do s :=s*i; gt :=s; End; Begin clrscr;
write ('Nhap so can tinh giai thua : ');readln(a);
if a :=0 or a :=1 then writeln('Giai thua cua ',a,' = 1') else writeln('Giai thua cua',a,' =', gt(a) );
End.
Bài 7. Nhập vào 1 mảng gồm n số nguyên (2<n<20). In ra các số nguyên tố có trong mảng.
Program Mang; uses crt;
var a : array [ 1..20] of byte; i,n,d,j,k : integer;
Procedure nhap; Begin
for i :=1 to n do Begin
write(' a[',i,']='); readln(a[i]); End;
End;
Procedure nguyento; Begin
k :=0;
for i :=1 to n do Begin d :=0;
for j :=1 to a[i]-1 do if a[i] mod j=0 then d :=d+1; if d=1 then Begin write(' ',a[i]); k :=k+1; End; End; if k=0 then
write(' khong co so nao') else
begin writeln;
writeln(' Trong day co ',k,' so nguyen to'); End;
End; Begin clrscr; repeat
write(' Nhap n='); readln(n); until (2<n)And(n<20);
nhap; nguyento; readln;