20 bài tập Pascal có lời giải

Dù là ngôn ngữ khá cũ, ít sử dụng hơn nhưng khi bạn nắm chắc kiến thức về ngôn ngữ Pascal, bạn sẽ tiếp cận và làm việc với ngôn ngữ lập trình C dễ dàng, hiệu quả hơn. Do đó, việc bổ sung kiến thức về Pascal cung như cập nhật các bài tập Pascal từ đơn giản tới nâng cao có lời giản là điều rất cần thiết nếu như bạn muốn học trình C hiệu quả. Sau đây là 20 bài tập Pascal có lời giải, các bạn cùng tham khảo.

Tổng hợp bài tập Pascal nâng cao, đơn giản.

Bài 1: In số chẵn ra màn hình.

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 N, sao cho mỗi số chiếm 4 vị trí và 1 dòng có 15 số.

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: Tính, in tổng, hiệu, tích, thương của 2 số

Nhập 2 số nguyên dương a và b. Sau đó:

Tính và in ra màn hình tổng, hiệu, tích thương và ước chung lớn nhất 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.

Bài 3: Kiểm tra xem tam giác có cân, vuông không

Viết chương trình nhập vào độ dài các cạnh của tam giác rồi tính chu vi, diện tích, 3 đường cao của tam giác. Kiểm tra xem tam giác đó có phải là tam giác cân hay tam giá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: Giải phương trình bậc 2

Viết chương 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: Kiểm tra số chẵn lẻ, nguyên tố, hoàn hảo

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ô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>

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 vòng lặp "for i:=2 to trunc(sqrt(n)) do" bằng lệnh while..do..khi đó ta không cần biến ok nữa.

Bài 6: Tính ăn bậc n của một số

Nhập 2 số 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: Tỉnh tổng các chữ số của một số

Nhập số bất kỳ có 3 chữ số rồi tính tổng các chữ số của số đó.

Lời giải:

uses crt;

var a:integer;tong:byte;

BEGIN

clrscr;

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: Hoán vị 2 số

Nhập 2 số nguyên a, b, 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: In các bội của 3 và 5

Nhập số nguyên dương n, in ra tổng các số nguyên dương từ 1 đến n là bội của 3 hoặc 5.

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: In tổng các chữ số của một số

Nhập n bất kỳ sau đó 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

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: Kiểm tra số nguyên tố

Nhập vào một số n bất kỳ và kiểm tra xem n có phải là số nguyên tố không.

Code mẫu:

uses crt;

var n,i:integer;

BEGIN

clrscr;

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

readln(n);

if n<2>

else

begin

i:=2;

while ((i<=trunc(sqrt(n)))><>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: Kiểm tra số hoàn hảo

Nhập 1 số nguyên dương n và kiểm tra xem n có phải là số hoàn hảo không.

Lời giải:

Số hoàn hảo là số có tổng các ước (ngoại trừ nó) bằng chính nó. Ví dụ, số 6 có các ước là 1, 2, 3; số 28, 496 cũng là các số hoàn hảo.

Code mẫu:

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: Kiểm tra số chính phương

Nhập một số nguyên dương n bất kỳ và kiểm tra xem n có phải là số chính phương không.

Code mẫu:

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: Đếm nguyên âm, số trong một chuỗi

Nhập vào một chuỗi ký tự và kiểm tra xem chuỗi có bao nhiêu nguyên âm, bao nhiêu số?

Code mẫu:

uses crt;

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

BEGIN

clrscr;

write('Nhap 1 chuoi: ');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 chuoi ',s,' co ',dem1,' nguyen am va co ',dem2,' ki tu so');

readln

END.

Bài 15: Kiểm tra 3 số có là độ dài cạnh tam giác không

Nhập 3 số a, b, c bất kỳ. Kiểm tra xem 3 số có thể là độ dài 3 cạnh của một tam giác hay không và thông báo ra màn hình.

Code mẫu:

Var a, b, c: Real;

BEGIN

Writeln ('Nhap do dai 3 canh cua tam giac:');

Write ('a ='); Readln (a);

Write ('b ='); Readln (b);

Write ('c ='); Readln (c);

If (a + b > c) and (b + c > a) and (c + a > b)

and (a > 0) and (b > 0) and (c > 0) Then

Writeln ('Thoa man: Day la 3 canh cua mot tam giac')

Else

Writeln ('Khong thoa man!');

Readln;

END.

Bài 16: Đếm các số theo điều kiện và tính tổng

Nhập số N bất kỳ. Đếm các số lớn hơn 10 và nhỏ hơn 20 rồi tính tổng của chúng. Sau đó, đưa ra màn hình "So cac so >10 va <20>

Code mẫu:

Var Tong, So: Real; I, N, Dem: Integer;

BEGIN

Write ('Ban muon nhap bao nhieu so: '); Readln (N);

Tong:= 0; Dem:= 0;

For I:= 1 To N Do

Begin

Write ('So = '); Readln (So);

If (So > 10) and (So < 20)="">

Begin

Tong:= Tong + So;

Dem:= Dem + 1;

End;

End;

Writeln ('So cac so >10 va <20>

Writeln ('Tong cua chung la:', Tong);

Readln;

END.

Bài 17: Tìm giá trị lớn nhất của 4 số

Nhập 4 số a, b, c, d. Hãy tìm giá trị lớn nhất của chúng và gán giá trị đó cho biến Max.

Code mẫu:

Var Max, a, b, c, d: Real;

BEGIN

Writeln ('Nhap gia tri cua 4 so: ');

Write ('a = ') ; Readln (a);

Write ('b = ') ; Readln (b);

Write ('c = ') ; Readln (c);

Write ('d = ') ; Readln (d);

Max:= a;

If Max < b="" then="" max:="">

If Max < c="" then="" max:="">

If Max < d="" then="" max:="">

Writeln ('Gia tri lon nhat la: ', Max);

Readln;

END.

Bài 18: Xem ngày là thứ mấy trong tuần

Đọc ngày tháng năm, sau đó viết ra màn hình đó là ngày thứ mấy trong tuần.

Code mẫu:

Var Thu, Ngay, Thang: Byte;

Nam: Integer;

BEGIN

Write ('Doc Ngay Thang Nam: ');

Readln ( Ngay, Thang, Nam );

Nam:= 1900 + (Nam mod 1900);

If Thang < 3="">

Begin

Thang:= Thang + 12;

Nam:= Nam - 1;

End;

Thu:= Abs (Ngay + Thang * 2 + (Thang + 1) * 3

div 5 + Nam + Nam div 4) mod 7;

Case Thu Of

0: Writeln ('Chu Nhat');

1: Writeln ('Thu Hai');

2: Writeln ('Thu Ba');

3: Writeln ('Thu Tu');

4: Writeln ('Thu Nam');

5: Writeln ('Thu Sau');

6: Writeln ('Thu Bay');

End;

Readln;

END.

Bài 19: In phiếu báo điểm

Viết chương trình: Nhập số báo danh, nhập điểm văn, toán, Anh. In ra màn hình dưới dạng:

Phiếu Báo điểm:

Số báo danh:

Điểm văn:

Điểm toán:

Điểm ngoại ngữ:

Tổng số điểm:

Bạn đã trúng tuyển: Nếu Tổng số điểm >=20.

Bạn không trúng tuyển: Nếu Tổng số điểm <>

Uses Crt; Var SBD: Integer;

Van, Toan, Anh, Tongdiem: Real;

BEGIN

Clrscr;

Write ('So bao danh: '); Readln(SBD);

Write ('Diem toan: '); Readln(Toan);

Write ('Diem ngoai ngu: '); Readln(Anh);

Write ('Diem van: '); Readln (Van);

Tongdiem:= Toan + Van + Anh;

Clrscr;

Writeln ('Phieu Bao Diem ') ;

Writeln ('So bao danh : ', SBD);

Writeln ('Diem van : ', Van);

Writeln ('Diem toan : ', Toan);

Writeln ('Diem ngoai ngu : ', Anh) ;

Writeln ('Tong diem : ', Tongdiem);

If Tongdiem >= 15 Then

Writeln(' Ban da trung tuyen ');

Else

Writeln(' Ban khong trung tuyen ');

Readln;

END.

Bài 20: Nhập 2 số thực và tính phép tính theo yêu cầu

Viết chương trình nhập hai số thực. Sau đó hỏi phép tính muốn thực hiện và in kết quả của phép tính đó.

Nếu là "+", in tổng hai số lên màn hình.

Nếu là "-", in hiệu hai số lên màn hình.

Nếu là "/", in thương hai số lên màn hình.

Nếu là "*", in tích hai số lên màn hình.

Code mẫu:

Uses Crt;

Var a, b, kq: Real; Pt: Char;

BEGIN

Clrscr;

Write ('a ='); Readln(a);

Write ('b ='); Readln(b);

Write ('Phep tinh thuc hien la (+ - * /): ');

Readln(Pt);

If Pt = '+' Then kq := a + b;

If Pt = '-' Then kq := a - b;

If Pt = '*' Then kq := a * b;

If Pt = '/' Then kq := a / b;

Write (a, pt, b, '=', kq);

Readln;

END.

Trên đây là 20 bài tập Pascal có lời giải, các bạn cùng tham khảo để có thể nâng cao kiến thức về ngôn ngữ lập trình Pascal này.

Bạn có thể sử dụng ngôn ngữ lập trình Pascal để có thể giải bài toán hình như bài tập Pascal tính chu vi tam giác, Pascal hình tứ giác chẳng hạn, các bạn có thể viết chương trình Pascal tính chu vi hình tam giác.

Tổng hợp 20 bài tập Pascal có lời giải đáp cụ thể và chi tiết trong bài viết dưới đây, các bạn cùng tham khảo để có thể trau dồi kiến thức hiệu quả, hiểu và làm bài tập Pascal dễ dàng nhất, từ đó thi Tin học hay thực hành tốt hơn
Bộ nhớ trong Pascal
Unit, đơn vị trong Pascal
Biến kiểu Variant trong Pascal
Kiểu bản ghi trong Pascal
Chuỗi trong Pascal
Cách viết hàm (Function) trong Pascal

ĐỌC NHIỀU