Pascal là ngôn ngữ khá cũ, trong thực tế nó không còn được sử dụng phổ biến như trước nữa. So với các ngôn ngữ lập trình script hiện đại thì Pascal khá dài dòng, mức độ trừu tượng cao và cách code khá giống với ngôn ngữ lập trình C. Hầu hết các chương trình C đều có thể dịch được sang Pascal mà chỉ bị thay đổi về cú pháp chứ không làm thay đổi cấu trúc. Mà C thì là một trong những ngôn ngữ lập trình rất phổ biến, do đó nắm được Pascal bạn sẽ tiếp cận C tốt hơn. Nó cũng buộc bạn phải luôn nghĩ về kiểu dữ liệu, điều này sẽ giúp các lập trình viên mới học được một thói quen tuyệt vời khi code.
Và vì không có nhiều giá trị thương mại, Pascal được sử dụng chủ yếu để dạy nhập môn lập trình hoặc dành cho những người yêu thích Pascal tìm tòi. Nếu bạn thích lập trình, mới học nhưng không “hấp thụ” được Pascal có thể thử Python nhé.
- Trắc nghiệm Pascal 25 câu có đáp án
- Tổng hợp câu hỏi trắc nghiệm Pascal có đáp án
Dưới đây là tổng hợp một số bài tập Pascal từ cơ bản đến phức tạp mà Quantrimang.com đã tổng hợp lại, hy vọng việc học của bạn sẽ dễ dàng hơn đôi chút.
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 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 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 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: 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 la:” và “Tong cua chung la:”.
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) Then Begin Tong:= Tong + So; Dem:= Dem + 1; End; End; Writeln (‘So cac so >10 va <20 la: ‘, Dem); 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:= b; If Max < c Then Max:= c; If Max < d Then Max:= d; 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 Then 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:
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.
Bài 21: Sắp xếp 2 dãy số tăng dần
Viết chương trình nhập vào 2 dãy các số nguyên. Sau đó tạo dãy thứ 3 gồm tất cả các phần tử của 2 dãy trên được sắp xếp theo thứ tự tăng dần.
Code mẫu:
program SapXepDaySo; const MAX = 1000; var arr1, arr2, arr3: array[1..MAX] of integer; n1, n2, n3, i, j, k: integer; begin // Nhập dãy số nguyên thứ nhất write(‘Nhap so luong phan tu cua day 1: ‘); readln(n1); writeln(‘Nhap cac phan tu cua day 1:’); for i := 1 to n1 do readln(arr1[i]); // Nhập dãy số nguyên thứ hai write(‘Nhap so luong phan tu cua day 2: ‘); readln(n2); writeln(‘Nhap cac phan tu cua day 2:’); for i := 1 to n2 do readln(arr2[i]); // Trộn hai dãy tren thành dãy 3 i := 1; j := 1; k := 0; while (i <= n1) and (j <= n2) do begin if (arr1[i] < arr2[j]) then begin k := k + 1; arr3[k] := arr1[i]; i := i + 1; end else begin k := k + 1; arr3[k] := arr2[j]; j := j + 1; end; end; // Thêm phần tử còn lại của dãy thứ nhất vào dãy mới while (i <= n1) do begin k := k + 1; arr3[k] := arr1[i]; i := i + 1; end; // Thêm phần tử còn lại của dãy thứ hai vào dãy mới while (j <= n2) do begin k := k + 1; arr3[k] := arr2[j]; j := j + 1; end; // Sắp xếp dãy mới theo thứ tự tăng dần for i := 1 to k-1 do begin for j := i+1 to k do begin if (arr3[i] > arr3[j]) then begin n3 := arr3[i]; arr3[i] := arr3[j]; arr3[j] := n3; end; end; end; // Hiển thị dãy thứ 3 đã được sắp xếp writeln(‘Day thu 3 da duoc sap xep gom cac phan tu cua 2 day:’); for i := 1 to k do write(arr3[i], ‘ ‘); writeln; end.
Bài 22: Tính quãng đường di chuyển với 2 vận tốc khác nhau
Viết chương trình để giải bài toán sau: 1 người di chuyển trong thời gian đầu t1 (giờ) bằng xe máy với vận tốc đều là v1(km/h). Sau đó người đó đi bộ vời vận tốc đều là v2(km/h), trong t2 (phút). Hãy tính quãng đường S mà người đó đi được đi được.
Code mẫu:
program TinhQuangDuong; var t1, t2, v1, v2, S: real; begin write(‘Nhap vao thoi gian di chuyen bang xe may (h): ‘); readln(t1); write(‘Nhap vao van toc xe may (km/h): ‘); readln(v1); write(‘Nhap vao thoi gian di bo (phut): ‘); readln(t2); write(‘Nhap vao van toc di bo (km/h): ‘); readln(v2); S := t1 * v1 + t2 / 60 * v2; writeln(‘Quang duong nguoi do di duoc la: ‘, S:0:2, ‘ km’); end.
Bài 23: Vẽ hình vuông
Cách 1: Vẽ hình vuông đặc
program VeHinhVuong; var n, i, j: integer; begin write(‘Nhap vao chieu dai canh hinh vuong: ‘); readln(n); for i := 1 to n do begin for j := 1 to n do write(‘* ‘); writeln; end; end.
Cách 2: Vẽ hình vuông rỗng
program VeHinhVuong2; var n, i, j: integer; begin write(‘Nhap vao chieu dai canh hinh vuong: ‘); readln(n); for i := 1 to n do begin for j := 1 to n do begin if (i = 1) or (i = n) or (j = 1) or (j = n) then write(‘* ‘) else write(‘ ‘); end; writeln; end; end.
Danh sách bài tập này sẽ được cập nhật thêm, bạn lưu lại để làm thêm bài mới nhé.
Xem thêm:
- Bài tập C++ có lời giải (code mẫu)
- Bài tập Java cơ bản, có lời giải code mẫu
- Hơn 100 bài tập Python có lời giải (code mẫu)