Bài tập về chương trình con

Một phần của tài liệu Bài tập Pascal cơ bản đến nâng cao theo chương trình tin học lớp 11 không phân ban (Trang 36 - 45)

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;

Một phần của tài liệu Bài tập Pascal cơ bản đến nâng cao theo chương trình tin học lớp 11 không phân ban (Trang 36 - 45)