1. Trang chủ
  2. » Công Nghệ Thông Tin

Bài tập pascal cơ bản ppt

17 777 4

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 17
Dung lượng 331,2 KB

Nội dung

Bài tập pascal cơ bản dành cho hs-sv thiết kế bởi: Vũ Đức Quang Bài 1: Viết chương trình nhập vào 1 số N nguyên dương và in ra màn hình các sỗ chẵn từ 0N mỗi số chiếm 4 vị trí và 15 số

Trang 1

Bài tập pascal cơ bản dành cho hs-sv thiết kế bởi: Vũ Đức Quang

Bài 1:

Viết chương trình nhập vào 1 số N nguyên dương và in ra màn hình các sỗ chẵn từ 0N mỗi số chiếm 4 vị trí và 15 số trên 1 dòng

Lời giải:

uses crt; {khai bao' thu vien crt}

var n,i,dem:integer;

BEGIN

clrscr;{ cau lenh xoa man hinh};

write('Nhap n: ');readln(n);

dem:=0;

for i:=1 to n do

begin

if i mod 2=0 then

begin

write(i:4);

dem:=dem+1;

end;

if dem=15 then

begin

dem:=0;

writeln;{in duoc 15 so thi xuong dong};

end;

end;

readln

END

Bài 2:

Nhập vào 2 số nguyên dương a và b

+ Tính và in ra màn hình tổng, hiệu, tích, thương và UCLN của 2 số đó

+ Tính tổng các ước số dương của |a+b|

Lời giải:

uses crt;

var a,b,tg,i,tong:integer;

function tinh(x,y:integer):integer;

begin

tg:= x mod y;

if tg=0 then tinh:=y else tinh:=tinh(y,tg);

end;

BEGIN

clrscr;

write('Nhap a: ');readln(a);

write('Nhap b: ');readln(b);

tong:=1;

for i:=2 to abs(a+b) do

if (abs(a+b) mod i =0) then tong:=tong+i;

writeln('Tong 2 so la: ',a+b);

writeln('Hieu 2 so la: ',a-b);

writeln('Tich 2 so la: ',a*b);

writeln('Thuong 2 so la: ',a/b:0:4);

writeln('UCLN 2 so la: ',tinh(a,b));

writeln('Tong cac uoc cua ',a+b,' la: ',tong);

readln

END

Trang 2

Bài 3:

Lập chương trình nhập vào độ dài các cạnh của tam giác rồi thực hiện : + Tính chu vi, diện tích, 3 đường cao của tam giác

+ Kiểm tra xem tam giác đó có là tam giác cân hoặc vuông không? Lời giải:

uses crt;

var a,b,c,cv,dt,p:real;

BEGIN

clrscr;

write('Nhap do dai canh a: ');readln(a);

write('Nhap do dai canh b: ');readln(b);

write('Nhap do dai canh c: ');readln(c);

cv:=a+b+c;

p:=(a+b+c)/2;

dt:=sqrt(p*(p-a)*(p-b)*(p-c));

writeln('Chu vi tam giac la: ',cv:0:4);

writeln('Dien tich tam giac la: ',dt:0:4);

writeln('Duong cao canh thu 1 la: ',dt*2/a:0:4);

writeln('Duong cao canh thu 2 la: ',dt*2/b:0:4);

writeln('Duong cao canh thu 3 la: ',dt*2/c:0:4);

if (a=b) or (a=c) or(b=c) then writeln('Tam giac can');

if (a*a=b*b+c*c) or (b*b=a*a+c*c) or (c*c=b*b+a*a)then

writeln('Tam giac vuong');

readln

END

Bài 4:

Lập trình giải phương trình bậc 2:

Lời giải:

uses crt;

var a,b,c,x1,x2,d:real;

BEGIN

clrscr;

write('Nhap a: ');readln(a);

write('Nhap b: ');readln(b);

write('Nhap c: ');readln(c);

d:=b*b-4*a*c;

if d>0 then

begin

x1:=(-b+sqrt(d))/(2*a);

x2:=(-b-sqrt(d))/(2*a);

writeln('2 nghiem PT la: ',x1:0:2,' va: ',x2:0:2);

end

else if d=0 then

begin

x1:=(-b)/(2*a);

writeln('PT co nghiem kep la: ',x1:0:2);

end

else writeln('PT vo nghiem');

readln

END

Bài 5:

Nhập vào 1 số nguyên gồm 4 chữ số

-Kiểm tra tình chắn lể

-kiểm tra xem có phải là số nguyên tố không

Trang 3

-kiểm tra xem có phải là số hoàn hảo không

Lời giải:

uses crt;

var n,i:integer;ok:boolean;

BEGIN

clrscr;

write('Nhap n: ');readln(n);

if n mod 2=0 then writeln('So ',n,' la so chan')

else writeln('So ',n,' la so le');

if n<2 then write('So ',n,' khong la so nguyen to')

else

begin

ok:=true;

for i:=2 to trunc(sqrt(n)) do

if n mod i=0 then ok:=false;

if ok then writeln('So ',n,' la so nguyen to')

else writeln('So ',n,' khong la so nguyen to');

end;

readln

END

Có thể thay câu lệnh lặp “for i:=2 to trunc(sqrt(n)) do” bằng câu lệnh while do khi đó ta không cần biến ok nữa

Bài 6:

Nhập n,a hãy tính căn bậc n của a:

Lời giải:

uses crt;

var n:integer;a,s:real;

BEGIN

clrscr;

write('Nhap a: ');readln(a);

repeat

write('Nhap n: ');readln(n);

until (n>0);

if (n mod 2=0) and (a>=0) then

begin

s:=exp(1/n*ln(a));

writeln('Ket qua la: ',s:0:4);

end

else if (n mod 2<>0) then

begin

s:=exp(1/n*ln(abs(a)));

writeln('Ket qua la: ',s:0:4);

end

else writeln('Khong xac dinh');

readln

END

Bài 7:

Nhập số có 3 chữ số tính tổng các chữ số của nó:

Lời giải:

uses crt;

var a:integer;tong:byte;

BEGIN

clrscr;

Trang 4

write('Nhap 1 so co 3 chu so: ');readln(a);

tong:= a mod 10;

a:=a div 10;

tong:=tong+a mod 10;

a:=a div 10;

tong:=tong+a mod 10;

writeln('Tong cac chu so do la: ',tong);

readln

END

Bài 8:

Nhập 2 số nguyên, hoán vị 2 số đó khi a>b

Lời giải:

uses crt;

var a,b,tg:integer;

BEGIN

clrscr;

write('Nhap a: ');readln(a);

write('Nhap b: ');readln(b);

if a>b then

begin

tg:=a;

a:=b;

b:=tg;

end;

writeln(a,' ',b);

readln

END

Bài 9:

Nhập số nguyên dương n in ra tổng các số nguyên dương là bội của 3 hoặc 5 từ 1—>n Lời giải:

uses crt;

var n,tong,i:integer;

BEGIN

clrscr;

write('Nhap so nguyen duong n: ');readln(n);

tong:=0;

for i:=1 to n do

if (i mod 3=0) or (i mod 5=0) then

tong:=tong+i;

writeln('Tong cac so chia het cho 3 hoac 5 tu 0 > ',n,' la: ',tong);

readln

END

Bài 10:

Nhập n in ra tổng các chữ số của n:

Lời giải:

uses crt;

var n,m:longint;tong:byte;

BEGIN

clrscr;

write('Nhap n: ');readln(n);

tong:=0;m:=n;

while m>0 do

Trang 5

begin

tong:=tong+m mod 10;

m:=m div 10;

end;

writeln('Tong cac chu so cua ',n,' la: ',tong);

readln

END

Bài 11:

Số nguyên tố là số nguyên dương chỉ chia hết cho 1 và chính nó, ngoại trừ 0 và 1

Lập trình nhập vào 1 số nguyên dương n và kiểm tra xem nó có phải là số nguyên tố không?

Lời giải:

uses crt;

var n,i:integer;

BEGIN

clrscr;

write('Nhap so nguyen duong n: ');

readln(n);

if n<2 then writeln(n,' khong la so nguyen to')

else

begin

i:=2;

while ((i<=trunc(sqrt(n))) and (n mod i<>0)) do

i:=i+1;

if i>trunc(sqrt(n)) then writeln(n,' la so nguyen to')

else writeln(n,' khong la so nguyen to');

end;

readln

END

Bài 12:

Số hoàn hảo là số mà có tổng các ước của nó không kể nó bằng chính nó

VD: số 28 có các ước là: 1 2 4 7 14

số 6 có các ước là: 1 2 3

Lập trình nhập vào 1 số nguyên dương n và kiểm tra xem số đó có là số hoàn hảo không? Lời giải:

uses crt;

var n:longint;tong,i:integer;

BEGIN

clrscr;

write('Nhap so nguyen duong n: ');readln(n);

tong:=0;

for i:=1 to n div 2 do

if n mod i=0 then tong:=tong+i;

if tong=n then writeln(n,' la so hoan hao')

else writeln(n,'khong la so hoan hao');

readln

END

Bài 13:

Số chính phương là số có căn bậc 2 là 1 số nguyên

VD số 9 là số chính phương vì căn bậc 2 của 9 bằng 3

Lập trình nhập 1 số nguyên dương n từ bàn phím kiểm tra xem số đó có là số chính phương không?

Lời giải:

Trang 6

uses crt;

var n:longint;

BEGIN clrscr;

write('Nhap so nguyen duong n: ');readln(n);

if sqrt(n)=trunc(sqrt(n)) then writeln(n,' la so chinh phuong') else writeln(n,' khong la so chinh phuong');

readln END

Bài 14:

Nhập vào 1 xâu kí tự và cho biết xâu vừa nhập vào có bao nhiêu nguyên âm và bao nhiêu

kí tự số

Lời giải:

uses crt;

var s:string;dem1,dem2,i:byte;

BEGIN clrscr;

write('Nhap 1 xau: ');readln(s);

dem1:=0;dem2:=0;

for i:=1 to length(s) do begin

if s[i] in ['a','e','i','o','u','y','A','E','I','O','U','Y'] then dem1:=dem1+1;

if s[i] in ['0','1','2','3','4','5','6','7','8','9'] then dem2:=dem2+1;

end;

writeln('Trong xau ',s,' co ',dem1,' nguyen am va co ',dem2,' ki tu so');

readln END

Bài 15:

bài toán cố sau Vừa gà vừa chó

Bó lại cho tròn

Ba mưoi sáu con

Một trăm chân chẵn Lời giải:

uses crt;

var cho:byte;

BEGIN clrscr;

for cho:=1 to 25 do

if 4*cho+(36-cho)*2=100 then writeln('So ga la: ',36-cho,' so cho la: ',cho);

readln END

Bài 16:

Nhập 1 số nguyên dương n <1000 cho biết có bao nhiêu số nguyên tố từ 0 n Lời giải:

uses crt;

var n,i,j,dem:integer;

BEGIN clrscr;

write('Nhap so nguyen duong n: ');readln(n);

dem:=0;

for i:=2 to n do

Trang 7

begin

j:=2;

while ((j<=trunc(sqrt(i))) and (i mod j<>0)) do

j:=j+1;

if j>trunc(sqrt(i)) then dem:=dem+1;

end;

writeln('So luong so nguyen to trong khoang tu 0 >',n,' la: ',dem);

readln

END

Bài 17:

Nhập 1 số n kiểm tra tính chẵn lẻ, xem số đó có chia hết cho 3 không,tổng các chữ số của

nó có là bội của 6 không

Lời giải:

uses crt;

var n,m,tong:integer;

BEGIN

clrscr;

write('Nhap n: ');readln(n);

if n mod 3=0 then writeln(n,' chia het cho 3')

else writeln(n,' khong chia het cho 3');

m:=n;tong:=0;

while m>0 do

begin

tong:=tong+m mod 10;

m:=m div 10;

end;

if tong mod 6=0 then writeln('Tong cac chu so cua ',n,' la ',tong,' chia het cho 6')

else writeln('Tong cac chu so cua ',n,' la ',tong,' khong chia het cho 6');

readln

END

Bài 18:

Tính tổng n số phibonaci: F0=F1=1;Fi=Fi-1+Fi-2 (với mọi i>1)

Lời giải

uses crt;

var f,ft,ftn,tong:longint;n,i:integer;

BEGIN

clrscr;

write('Nhap n: ');readln(n);

ft:=1;ftn:=1;tong:=2;

for i:=2 to n do

begin

f:=ft+ftn;

tong:=tong+f;

ftn:=ft;

ft:=f;

end;

writeln('Tong n so hang dau day fibolaci la: ',tong);

readln

END

Có thể biến đổi đề bài của bài toán đi như: tính số phibonaci thứ n hoặc nhập vào 1 số kiểm tra xem số đó có phải là số phibonaci hay không…Các bài đó làm tương tự

Bài 19:

Nhập số nguyên dương n lập chương trình tính:

Trang 8

S1= 1+3+5+7+…+(2*n+1)

Lời giải:

uses crt;

var i,n,s1:integer;

BEGIN

clrscr;

write('Nhap n: ');readln(n);

s1:=0;

for i:=1 to 2*n+1 do

if i mod 2<>0 then s1:=s1+i;

writeln('Tong S1 la: ',s1);

readln

END

Bài 20:

Tính S2=13+23+33+…+n3 trong đó n nhập từ bàn phím

Lời giải:

uses crt;

var i,n:integer;s2:longint;

BEGIN

clrscr;

write('Nhap so n: ');readln(n);

s2:=0;

for i:=1 to n do

s2:=s2+i*i*i;

writeln('Tong S2 la: ',s2);

readln

END

Bài 21:

Nhập 2 số n,m sao cho m<n lập trình tính S3= Cnm = (n(n-1)…(n-m+1))/m! (Tổ hợp chập

m của n)

Lời giải:

uses crt;

var i,m,n,tu,mau:integer;

s3:longint;

BEGIN

clrscr;

repeat

write('Nhap n: ');readln(n);

until n>0;

repeat

write('Nhap m: ');readln(m);

until (m<=n) and (m>0);

tu:=1;mau:=1;

for i:=n-m+1 to n do

tu:=tu*i;

for i:=2 to m do

mau:=mau*i;

s3:= tu div mau;

writeln('to hop chap ',m,' cua ',n,' la: ',s3);

readln

END

Bài 22:

Trang 9

Nhập số thực dương e(e<0.01) rồi tính tổng

S4=1+1/22+1/32+…+1/n2 +… (chương trình kết thúc khi 1/n2<e)

Lời giải:

uses crt;

var s4,e:real;i:integer;

BEGIN

clrscr;

repeat

write('Nhap so thuc duong e<0.01: ');

readln(e);

until (e>0) and (e<0.01);

s4:=0;i:=1;

while 1/(i*i)>e do

begin

s4:=s4+1/(i*i);

i:=i+1;

end;

writeln('Ket qua la: ',s4:0:4);

readln

END

Bài 23:

Nhập số thực dương e(e<0.01) rồi tính tổng

S5= 1- 1/3+1/5-1/7+…+(-1)n/(2*n+1)(dừng khi 1/(2*n+1) <e)

Lời giải:

uses crt;

var s5,e:real;i:integer;

BEGIN

clrscr;

repeat

write('Nhap so thuc duong e<0.01: ');

readln(e);

until (e>0) and (e<0.01);

s5:=1;i:=1;

while 1/(2*i+1)>e do

begin

if i mod 2=0 then s5:=s5+1/(2*i+1) else s5:=s5-1/(2*i+1);

i:=i+1;

end;

writeln('ket qua la: ',s5:0:4);

readln

END

Bài 24:

Lập chương trình để nhập vào 4 dãy số a1, ,an;b1,…bn;c1,…,cn;d1,…,dn Sau đó in ra kết quả n dòng 6 giá trị theo mẫu sau:

Ai bi ci di max(ai,bi,ci,di) min(ai,bi,ci,di)

Lời giải:

uses crt;

var a,b,c,d:array[1 1000]of integer;

n,max,min,i:integer;

BEGIN

clrscr;

write('Nhap n: ');readln(n);

for i:=1 to n do

Trang 10

begin

write('Nhap A[',i,']: ');

readln(a[i]);

write('Nhap B[',i,']: ');

readln(b[i]);

write('Nhap C[',i,']: ');

readln(c[i]);

write('Nhap D[',i,']: ');

readln(d[i]);

end;

for i:=1 to n do

begin

write(a[i],' ',b[i],' ',c[i],' ',d[i],' ');

max:=a[i];min:=a[i];

if b[i]>max then max:=b[i];

if c[i]>max then max:=c[i];

if d[i]>max then max:=d[i];

write(max,' ');

if b[i]<min then min:=b[i];

if c[i]<min then min:=c[i];

if d[i]<min then min:=d[i];

writeln(min);

end;

readln

END

Bài 25:

Cho các số tự nhiên n (khai bảo longint), và cho biết: n có bao nhiêu chữ số, tổng các chữ

số của n và số đảo ngược của n

VD: số 123 có 3 chữ số, tổng các chữ số bằng 6, số đảo ngược là 321

Lời giải:

uses crt;

var m,n:longint;tong,dem:byte;

BEGIN

clrscr;

write('Nhap so n: ');readln(n);

m:=n;dem:=0;tong:=0;

while m>0 do

begin

tong:=tong+ m mod 10;

dem:=dem+1;

m:=m div 10;

end;

writeln(n,' co ',dem,' chu so va tong cac chu so cua ',n,' la: ',tong);

write('So dao nguoc cua ',n,' la: ');

m:=n;

while m>0 do

begin

write(m mod 10);

m:=m div 10;

end;

readln

END

Bài 26:

Trang 11

Nhập số nguyên dương n và dãy số a1,a2,…,an hãy in ra max, min dãy đó

Lời giải:

uses crt;

var n,i,max,min:integer;

a:array[1 1000] of integer;

BEGIN

clrscr;

repeat

write('Nhap so nguyen duong n: ');

readln(n);

until (n>0) and (n<=1000);

for i:=1 to n do

begin

write('Nhap A[',i,']: ');

readln(a[i]);

end;

max:=a[1];min:=a[1];

for i:=2 to n do

begin

if a[i]>max then max:=a[i];

if a[i]<min then min:=a[i];

end;

writeln('Max cua day so la: ',max);

writeln('Min cua day so la: ',min);

readln

END

Bài 27:

Nhập số nguyên dương n và dãy số a1,a2,…,an Hãy sắp xếp dãy đó tăng dần và in dãy

đã

được sắp xếp ra màn hình

Lời giải:

uses crt;

var n,i,j,tg:integer;

a:array[1 1000]of integer;

BEGIN

clrscr;

repeat

write('Nhap so nguyen duong n: ');

readln(n);

until (n>0) and (n<1000);

for i:=1 to n do

begin

write('Nhap A[',i,']: ');readln(a[i]);

end;

for i:=1 to n-1 do

for j:=i+1 to n do

if a[i]>a[j] then

begin

tg:=a[i];

a[i]:=a[j];

a[j]:=tg;

end;

writeln('Day sau khi duoc sap xep la: ');

for i:=1 to n do

Trang 12

write(a[i]:4);

readln

END

Tương tự với bài sắp xếp với dãy giảm dần

28 Viết chương trình Pascal tìm USCLN và BSCNN cùa 2 số nguyên dương

Program Uoc_so_chung_Boi_so_chung;

Var

so1,so2:Word;

p:LongInt;

tiep:Char;

Begin

Writeln('TINH UOC SO CHUNG LON NHAT, BOI SO CHUNG NHO NHAT'); Writeln(' Su dung vong lap Repeat Until');

Writeln(' -');

Repeat

Writeln;

Write('-Nhap so thu nhat: ');

Readln(so1);

Write('-Nhap so thu hai : ');

Readln(so2);

p:=so1 * so2;

Write('+Uoc so chung lon nhat cua ',so1,' va ',so2,' la: ');

Repeat

if so1 > so2 Then

so1:=so1 - so2

Else

so2:=so2 - so1;

Until so1=so2;

Writeln(so1);

Writeln;

Writeln('+Boi so chung nho nhat: ',P Div so1);

Writeln;

Write('-Co tiep tuc nua khong ? (C/K) ');

Readln(tiep);

Until Upcase(tiep)='K';

Writeln;

Writeln(' Bam phim <Enter> de ket thuc ');

Readln

End

29.Viết chương trình Pascal tìm các số nguyên tố từ 2 đến N

Program Tim_so_nguyen_to;

Var

n,i,j:Integer;

nguyento:Boolean;

Begin

Writeln('TIM CAC SO NGUYEN TO TU 2 DEN N');

Writeln(' -');

Write('-Nhap so N= ');

Readln(n);

For i:=2 To n Do

Begin

nguyento:=True;

j:=2;

While nguyento And (j <i) Do

Begin

If (i Mod j)=0 Then

nguyento:=False;

j:=j+1;

End;

If nguyento Then

Trang 13

Write(i:4);

End;

Writeln;

Writeln(' Bam phim <Enter> de ket thuc');

Readln

End

Viết chương trình Pascal tìm USCLN, BSCNN

Program Uoc_so_Boi_so_chung;

Var

a,b:Word;

p:LongInt;

Begin

Writeln('UOC SO CHUNG LON NHAT, BOI SO CHUNG NHO NHAT'); Writeln(' -');

Write('-Nhap so thu nhat a= ');

Readln(a);

Write('-Nhap so thu hai b= ');

Readln(b);

p:=a * b;

Write('+Uoc so chung lon nhat cua ',a,' va ',b,' la: ');

While a <> b Do

Begin

If a > b Then

a:=a - b

Else

b:=b-a

End;

Writeln(a);

Writeln;

Writeln('+Boi so chung nho nhat cua chung la: ',p Div a);

writeln;

Writeln(' Bam phim <Enter> de ket thuc');

Readln

End

30 Viết chương trình Pascal tìm các ước của số nguyên N

Program uoc_so;

Var

i,n:Integer;

Begin

Writeln('TIM CAC UOC SO CUA SO NGUYEN');

Writeln(' -');

Write('-Nhap mot so nguyen: ');

Readln(n);

Writeln;

Writeln('+Cac uoc so cua so ',n,' la: ');

Writeln;

For i:=1 To N Do

If (n Mod i) = 0 Then

Write(i:6);

Writeln;

Writeln;

Writeln(' Bam phim <Enter> de ket thuc');

Readln

End

31 Viết chương trình Pascal tính tổng nghịch đảo N số nguyê đầu tiên

Program Tong_nghich_dao;

Var

n,i:Integer;

s:Real;

Begin

Writeln('TINH TONG NGHICH DAO N SO NGUYEN DAU TIEN');

Writeln(' -');

Write('-Nhap so N= ');

Ngày đăng: 19/06/2014, 09:20

TỪ KHÓA LIÊN QUAN

w