Bài tập pascal cơ bản dành cho hs-svthiết kế bởi: Vũ Đức Quang
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; readlnEND.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;
Trang 2write('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.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;
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');
readlnEND.Bài 4:
Lập trình giải phương trình bậc 2:Lời giải:
uses crt;
Trang 3var 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
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 -kiểm tra xem có phải là số hoàn hảo khôngLời giải:
uses crt;
var n,i:integer;ok:boolean;BEGIN
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');
Trang 4end; readlnEND.
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.
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
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
tong:=tong+a mod 10;
Trang 5writeln('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>bLờ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ừ 1nLời giải:
uses crt;
var n,tong,i:integer;BEGIN
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
Trang 6clrscr;
write('Nhap n: ');readln(n); tong:=0;m:=n;
while m>0 do 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
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; readlnEND.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
Trang 7clrscr;
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: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');
readlnEND.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
Trang 8Bài 15:
Lập trình giải bài toán cố sau
Vừa gà vừa chóBó lại cho tròn Ba mưoi sáu conMột trăm chân chẵnLời giải:
uses crt;var cho:byte;BEGIN clrscr;
Nhập 1 số nguyên dương n <1000 cho biết có bao nhiêu số nguyên tố từ 0nLờ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 begin
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ủanó có là bội của 6 không
Lời giải:uses crt;
var n,m,tong:integer;BEGIN
Trang 9tong:=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');
readlnEND.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
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: S1= 1+3+5+7+…+(2*n+1)
Lời giải:uses crt;
var i,n,s1:integer;BEGIN
Trang 10clrscr;
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;
Trang 11s3:= tu div mau;
writeln('to hop chap ',m,' cua ',n,' la: ',s3); readln
END.Bài 22:
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;
Trang 12end;
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
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; readlnEND.Bài 25:
Trang 13Cho 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à 321Lờ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;
readlnEND.Bài 26:
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]);
Trang 14end;
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
write(a[i]:4); readln
Tương tự với bài sắp xếp với dãy giảm dần.
Trang 15Bài 28:
Cho 2 dãy số a1, ,an; b1, ,bm đã được sắp xếp theo thứ tự tăng dần Lập trình để từ 2 dãy trên xây dựng 1 dãy mới cũng theo thứ tự tăng dần.
Lời giải:Bài 29:
Nhập số nguyên dương n và dãy số a1,a2,…,an.Hãy tính và in ra màn hình tổng các số lẻ trong dãy
9 10 10 11Lời giải: