//
you're reading...
100 bài tập Pascal cơ bản, Bài tập huấn luyện, Dùng cho cấp THCS

Bài tập Pascal theo tuần

Các bài tập cơ bản


    • Bài 1: Viết chương trình giải và biện luận phương trình bậc hai dạng tổng quát.
    • Bài 2: Viết chương trình giải phương trình trùng phương.
    • Bài 3: Viết chương trình tính chu vi và diện tích hình chữ nhật với độ dài các cạnh nhập từ bàn phím và các giá trị không vượt quá 100.
    • Bài 4: Viết chương trình nhập vào tỉ giá USD so với VND và số USD hiện có, tính ra tiền đồng Việt Nam quy đổi được.
    • Bài 5: Trong một học kỳ mỗi học sinh có 1 cột kiểm tra miệng hệ số 1, 3 cột kiểm tra 15 phút hệ số 1, 3 cột kiểm tra 1 tiết hệ số 2 và nột cột kiểm tra học kỳ hệ số 3. Viết chương trình tính điểm trung bình học kỳ của học sinh với các điểm số không âm và không vượt quá 10. Kết quả làm tròn lấy 1 số thập phân.
    • Bài 6: Viết chương trình đổi một ký tự sang mã ASCII của nó.
    • Bài 7: Viết chương trình đổi một mã ASCII sang ký tự tương ứng.
    • Bài 8: Viết chương trình giải hệ phương trình bậc nhất 2 ẩn dạng:
      Ax +By = C
      A’x + B’y = C’
    • Bài 9: Viết chương trình nhập vào 4 số, in ra số lớn nhất (nhỏ nhất). Mở rộng bài toán cho n số bất kỳ.
    • Bài 10: Viết chương trình tính tổng n số tự nhiên đầu tiên với n nhập từ bàn phím và không vượt quá 255.
    • Bài 11 Viết chương trình tính n giai thừa (n!) với n nhập từ bàn phím và không vượt quá 14.
    • Bài 12: Viết chương trình tìm bội chung nhỏ nhất và ước chung lớn nhất của 2 số nguyên dương.
    • Bài 13: Viết chương trình tính giá trị của đa thức: P(x) = a0 + a1.x^1 + a2.x^2 + … + an.x^n, với n là số tự nhiên, x là số thực nhập từ bàn phím.
    • Bài 14: Có các loại giấy bạc 500 đồng, 1000 đồng, 2000 đồng, 5000 đồng, 10000 đồng, 20000 đồng, 50000 đồng, 100000 đồng, 200000 đồng và 500000 đồng. Nhập vào một số tiền từ bàn phím. Tìm cách chi trả số tiền đã cho sao cho số tờ giấy bạc phải trả là ít nhất. Mở rộng bài toán trong trường hợp cho ra tất cả các cách chi trả có thể được.
    • Bài 15: Viết chương trình in ra n số nguyên tố đầu tiên.
    • Bài 16: Viết chương trình xây dựng tam giác Pascal có chiều cao n, nới n nguyên dương không vượt quá 20.
    • Bài 17: Viết chương trình nhập vào mảng một chiều A có n phần tử. Đếm số lượt các phần tử dương, âm, bằng 0 có trong mảng A đó.
    • Bài 18: Viết chương trình xác định giá trị x có phải là phần tử của một mảng A cho trước hay không, nếu có đếm số lần xuất hiện của x và in ra các vị trí mà tại đó x xuất hiện. Tương tự cho mảng 2 chiếu.
    • Bài 19: Viết chương trình in ra dãy con tăng (giảm) dài nhất trích từ các phần tử của mảng A có n phần tử nhập trước.
    • Bài 20: Viết chương trình nhập vào mảng A có n phần tử. In ra các phần tử của mảng A theo chiều tăng dần (giảm dần).
    • Bài 21: Viết chương trình đếm số lần xuất hiện của từng loại ký tự trong chuỗi ký tự đã nhập trước.
    • Bài 22: Viết chương trình tách từng từ của một chuỗi ký tự nhập từ bàn phím, Mỗi từ cách nhau một khoảng trắng.
    • Bài 23: Viết chương trình làm chuỗi có độ dài n chuyễn động bằng cách như sau: Lần lượt lấy một ký tự cuối của chuỗi cũ ghép vào (n-1) ký tự đầu của dãy cũ rồi in ra. Thực hiện nhiều lần thao tác này cho đến khi toàn bộ dãy cũ bị đảo ngược. Ví dụ: ABCD, DABC, CDAB, BCDA, ABCD.
    • Bài 24: Viết chương trình nhập vào một chuỗi, in ra toàn bộ chuỗi gồm toàn các chữ in (tương tự gồm toàn các chữ thường).
    • Bài 25: Viết chương trình nhập vào một chuỗi. In ra từ có nhiều ký tự nhất có trong chuỗi.
    • Bài 26: Viết chương trình nhập vào một chuỗi rồi chuẩn hóa chuỗi đó theo nguyên tắc: (i) Ký tự đầu của mỗi từ là ký tự chữ in, (ii) Giữa 2 từ bất kỳ chỉ có duy nhất một khoảng trắng; (iii) Không có khoảng trắng nào ở đầu và cuối của chuỗi.
    • Bài 27: Viết chương trình nhập vào một chuỗi, xét xem chuỗi đó có phải là chuỗi đối xứng hay không? Chuỗi s độ dài n đối xứng theo nghĩa s[i] = s[n-i+1], với mọi i không vượt quá (n div 2).
    • Bài 28: Viết chương trình nhập vào số thứ tự của tháng, số thứ tự của năm theo dương lịch. In ra số ngày của tháng thuộc năm đó, Chú ý xét các điều kiện của năm nhuận.
    • Bài 29: Viết chương trình nhập vào ngày, tháng, năm lần 1 và ngày, tháng, năm lần 2. Tính số ngày là khoảng cách giữa 2 ngày đã nhập.
    • Bài 30: Viết chương trình nhập vào số thứ tự năm từ 1900 đến 2099. Cho biết tên năm theo âm lịch của nó (từ Giáp Tý tới Quý Hợi).
    • Bài 31. Viết chương trình in ra tất cả các số tự nhiên có 4 chữ số thỏa mãn các điều kiện: hai chữ số đầu trùng nhau, hai chữ số cuối trùng nhau và là một số chính phương.
    • Bài 32: Viết chương trình đếm các số có 5 chữ số sao cho tổng các chữ số của số đã nhập bằng M, với M nah65p từ bàn phím.
    • Bài 33: Viết chương trình nhập các giá trị số nguyên và lưu vào một tập tin dạng text.
    • Bài 34: Viết chương trình in ra các giá trị số nguyên đã lưu vào một tập tin dạng text.
    • Bài 35: Viết chương trình thực hiện các việc sau: (i) Nhập các giá trị từ bàn phím và lưu vào một tập tin, (ii) Sắp các số chẳn vào đầu tập tin, số lẻ vào cuối tập tin; (iii) In kết quả sau khi đã sắp xếp.
    • Bài 36: Viết chương trình nhập vào một số tự nhiên trong hệ thập phân. In ra kết quả sau khi chuyển đổi số đó thành số trong hệ nhị phân, bát phân, thập lục phân.

Đề bài tập tuần – Lớp 10


      • Bài tập tuần 01
      • Bài tập tuần 02
      • Bài tập tuần 03: Sử dụng lệnh lặp FOR
      • Bài tập tuần 04
      • Bài tập tuần 05
      • Bài tập tuần 06
      • Bài tập tuần 07
      • Bài tập tuần 08
      • Bài tập tuần 09
      • Bài tập tuần 10
      • Bài tập tuần 11
      • Bài tập tuần 12
      • Bài tập tuần 13
      • Bài tập tuần 14
      • Bài tập tuần 15

Đề bài tập học sinh giỏi



          • Bài tập 03.01: Tính tổng các số từ 1 đến 100.
          • Bài tập 03.02: Tính tổng các số chẵn từ 2 đến n (n được nhập từ bàn phím).
          • Bài tập 03.03: Viết chương trình tính tổng các lũy thừa bậc ba của n số nguyên dương đầu tiên (n được nhập từ bàn phím).
          • Bài tập 03.04: Viết chương trình tìm tất cả các ước của số tự nhiên n (n được nhập từ bàn phím).
          • Bài tập 03.05: Viết chương trình tính tổng nghịch đảo của n số nguyên dương đầu tiên (n được nhập từ bàn phím).
          • Bài tập 03.06: Viết chương trình tính tổng bình phương của n số nguyên dương đầu tiên (n được nhập từ bàn phím).

      • Bài tập tuần 04
      • Bài tập tuần 05
      • Bài tập tuần 06
      • Bài tập tuần 07
      • Bài tập tuần 08
      • Bài tập tuần 09
      • Bài tập tuần 10 – Kiểu dữ liệu xâu (string)

Bài: Giả sử có đoạn chương trình sau:
VAR
Name : String[80];
Name1: String;
BEGIN
Name:=’NGUYEN THI THU THAO’;
Nam1:= Name + ‘A’;
Writeln(length(Name));
Writeln(length(Name1));
Writeln(Name[0]);
Writeln(ORD(length(Name[0])));
readln;
END.
Giải thích các kết quả xuất ra màn hình.

Bài :Lập chương trình nhập vào chuỗi S và ký tự c. Xuất ra màn hình số lần xuất hiện của ký tự c trong chuỗi S. Chú ý: số lần xuất hiện là 0 nếu chuỗi S không chứa ký tự c.

Bài :Ta gọi một từ trong chuỗi S là tập hợp gồm các ký tự liên tiếp nhau không phải là khoảng trắng (space). Lập chương trình nhập vào một chuỗi S và xuất ra số từ có trong chuỗi S.

Bài :Lập chương trình nhập vào một chuỗi St và tách các từ của St sao cho mỗi từ hiện ra trên một dòng.

Uses Crt;
Var St:String;
Procedure XoaTrangThua(Var St:String);
Begin
{Xóa các ký tự trắng ở đầu xâu}
While St[1]=#32 Do Delete(St,1,1);
{Xóa các ký tự trắng ở cuối xâu}
While St[Length(St)]=#32 Do Delete(St,Length(St),1);
{Xóa các ký tự trắng ở giữa xâu}
While POS(#32#32,St)0 Do Delete(St,POS(#32#32,St),1);
End;

Begin
Write(‘Nhap xau St: ‘); Readln(St);
XoaTrangThua(St);
St:=St+#32;
Writeln(‘Liet ke cac tu trong xau: ‘);
While POS(#32,St)0 Do
Begin
Writeln(Copy(St,1,POS(#32,St)));
Delete(St,1,POS(#32,St));
End;
Readln;
End.

Bài: Lập chương trình nhập vào một chuỗi S, tách lấy từ cuối cùng của S ghép ngược từ này vào đầu của chuỗi S. In tuần tự các kết quả ra màn hình.

Bài :Lập chương trình nhập vào một chuỗi S và in ra màn hình từ có độ dài nhất có trong S. Nếu có nhiều từ cùng có độ dài dài nhất thì in ra tất cả các từ đó.

Bài :Lập chương trình nhập vào một chuỗi S và xuất ra màn hình số các chữ số và số các chữ cái có trong chuỗi S.

Bài: Viết chương trình nhập vào một xâu ký tự từ bàn phím. Đổi xâu ký tự đó sang chữ in hoa rồi in kết quả ra màn hình.
Ví dụ :Xâu abcdAbcD sẽ cho ra xâu ABCDABCD.

Uses Crt;
Var St:String;
i:Byte;
Begin
Write(‘Nhap xau St: ‘);
Readln(St);
For i:=1 to length(St) do St[i]:=Upcase(St[i]);
Write(‘Xau ket qua: ‘, St);
Readln;
End.

Bài: Viết chương trình nhập vào một xâu ký tự từ bàn phím. Đổi xâu ký tự đó sang chữ thường rồi in kết quả ra màn hình.
Ví dụ :Xâu abCdAbcD sẽ cho ra xâu abcdabcd.

Uses Crt;
Var St:String;
i:Byte;
Begin
Write(‘Nhap xau St: ‘);
Readln(St);
For i:=1 to length(St) do
If St[i] IN [‘A’..’Z’] Then St[i]:=CHR(ORD(St[i])+32);
Write(‘Xau ket qua: ‘, St);
Readln;
End.

Bài: Viết chương trình đếm số ký tự chữ số trong một xâu ký tự được nhập vào từ bàn phím.

Uses Crt;
Var St:String;
i,d:Byte;
Begin
Write(‘Nhap xau St: ‘);
Readln(St);
For i:=1 to length(St) do
If St[i] IN [‘0’..’9’] Then d:=d+1;
Write(‘So ky tu chu so trong xau: ‘, d);
Readln;
End.

Bài: Viết chương trình nhập một xâu từ bàn phím. In ra xâu đó sau khi xóa hết các ký tự trắng thừa trong xâu. (Ký tự trắng thừa là các ký tự trắng đầu xâu, cuối xâu và nếu ở giữa xâu có 2 ký tự trắng liên tiếp nhau thì có 1 ký tự trắng thừa).

Uses Crt;
Var St:String;

Procedure XoaTrangThua(Var St:String);
Begin
{Xóa các ký tự trắng ở đầu xâu}
While St[1]=#32 Do Delete(St,1,1);
{Xóa các ký tự trắng ở cuối xâu}
While St[Length(St)]=#32 Do Delete(St,Length(St),1);
{Xóa các ký tự trắng ở giữa xâu}
While POS(#32#32,St)0 Do Delete(St,POS(#32#32,St),1);
End;

Begin
Write(‘Nhap xau St: ‘);
Readln(St);
XoaTrangThua(St);
Write(‘Xau sau khi xoa cac ky tu trang thua: ‘, St);
Readln;
End.

Bài: Viết chương trình nhập vào một xâu ký tự từ bàn phím. Tìm xâu đảo ngược của xâu đó rồi in kết quả ra màn hình theo 2 cách: Đệ qui và không đệ qui.
Ý tưởng:
– Nếu xâu St có 1 ký tự thì xâu đảo = St.
– Ngược lại: Xâu đảo = Ký tự cuối + Đệ qui(Phần còn lại của xâu St).

Uses Crt;
Var St:String;
{Giải thuật không đệ qui}
Function XauDao(St:String):String;
Var S:String;
i:Byte;
Begin
S:=’’;
For i:=Length(St) DowTo 1 Do S:=S+St[i];
XauDao:=S;
End;

{Giải thuật đệ qui}
Function DeQui(St:String):String;
Begin
If Length(St)0 Then Writeln(ch,’ : ’,dem[ch]);
Readln;
End.

Bài: Viết chương trình xóa các ký tự chữ số trong một xâu ký tự được nhập vào từ bàn phím.

Uses Crt;
Var St:String;
{Hàm POSNUM kiểm tra xem trong xâu St có ký tự chữ số hay không? Nếu có, hàm trả về vị trí đầu tiên của ký tự chữ số, ngược lại hàm trả về giá trị 0}

Function POSNUM(St:String):Byte;
Var OK:Boolean;
i:Byte;
Begin
OK:=False;
i:=1;
While (i<=Length(St)) AND (Not OK) Do
If St[i] IN [‘0’..’9’] Then OK:=True
Else i:=i+1;
If OK Then POSNUM:=i Else POSNUM:=0;
End;

Begin
Write(‘Nhap xau St: ‘);
Readln(St);
While POSNUM(St)0 Do Delete(St,POSNUM(St),1);
Write(‘Xau sau khi xoa: ‘,St);
Readln;
End.

Bài: Viết chương trình để mã hoá và giải mã một xâu ký tự bằng cách đảo ngược các bit của từng ký tự trong xâu.

Uses crt;
Var st:string;
{Hàm đảo bit ký tự c}

Function DaoBit(c:char):char;
Var n,i,s,bitcuoi,Mask:byte;
Begin
{Đổi ký tự sang số}
n:=ORD(c);
{s: kết quả đảo bit, Mask: mặt nạ dùng để bật bit thứ i}
s:=0;
Mask:=128;
For i:=1 To 8 Do {duyệt qua 8 bit của n}
Begin
{Lấy bit cuối cùng của n: bit cực phải}
bitcuoi:=n AND 1;
n:=n shr 1; {loại bỏ bit cuối cùng: n:=n DIV 2}
{Bật bit thứ i lên: từ trái sang phải}
if bitcuoi=1 then s:=s OR Mask;
Mask:=Mask shr 1; { Mask:= Mask DIV 2}
End;
DaoBit:=CHR(s);
End;

Function MaHoa(st:string):string;
Var i:Byte;
Begin
{Đảo bit từng ký tự trong xâu st}
For i:=1 To Length(st) Do st[i]:=DaoBit(st[i]);
Mahoa:=st;
End;

Begin
Write(‘Nhap xau: ‘); Readln(st);
st:=MaHoa(st);
Writeln(‘Xau sau khi ma hoa: ‘,st);
Readln;
st:=MaHoa(st);
Writeln(‘Xau sau khi giai ma: ‘,st);
Readln;
End.

Bài: Viết chương trình thực hiện phép cộng 2 số tự nhiên lớn (không quá 255 chữ số).

Uses crt;
Var so1,so2,kqua:string;

Procedure LamDayXau(Var st1,st2:string);
{Them so 0 vao truoc xau ngan}

var i:Byte;
Begin
If Length(st1)>Length(st2) Then
For i:=1 To Length(st1)-Length(st2) Do st2:=’0’+st2
Else
For i:=1 To Length(st2)-Length(st1) Do st1:=’0’+st1;
End;

Function Cong(st1,st2:string):string;
Var i,a,b,c,sodu:Byte;
code:integer;
st,ch:string;
Begin
st:=”; sodu:=0;
LamDayXau(st1,st2);
{Lấy từng số của 2 xâu: từ phải sang trái}
For i:=Length(st1) DownTo 1 Do
Begin
{Đổi ký tự sang số nguyên}
Val(st1[i],a,code);
Val(st2[i],b,code);
{Tính tổng của 2 số a,b vừa lấy ra cho vào biến c}
c:=(a+b+sodu) MOD 10;
{Lấy phần dư của tổng a+b}
sodu:=(a+b+sodu) DIV 10;
{Đổi số nguyên c sang xâu ký tự ch}
str(c,ch);
{Cộng xâu ch vào bên trái xâu kết quả st}
st:=ch+st;
End;

{Xử lý trường hợp số dư cuối cùng >0}

If sodu>0 Then
Begin
str(sodu,ch);
st:=ch+st;
End;
Cong:=st;
End;

Begin
Write(‘Nhap so thu nhat: ‘); Readln(so1);
Write(‘Nhap so thu hai: ‘); Readln(so2);
kqua:=Cong(so1,so2);
Writeln(‘Tong= ‘,kqua);
Readln;
End.

Bài tập tuần

Bài tập tuần

Bài tập tuần

Bài tập tuần

Bài tập tuần

Bài tập tuần

Bài tập tuần

Bài tập tuần

Bài tập tuần

Bài tập tuần

Bài tập tuần

Bài tập tuần

Bài tập tuần

Bài tập tuần

Bài tập tuần

Bài tập tuần

Bài tập tuần

Bài tập tuần

Bài tập tuần

Bài tập tuần

Bài tập tuần

Bài tập tuần

Bài tập tuần

Bài tập tuần

Bài tập tuần

Bài tập tuần

Bài tập tuần

Bài tập tuần

Advertisements

About pascalteacher

Trang thông tin Toán học và Tin học

Thảo luận

Không có bình luận

Trả lời

Mời bạn điền thông tin vào ô dưới đây hoặc kích vào một biểu tượng để đăng nhập:

WordPress.com Logo

Bạn đang bình luận bằng tài khoản WordPress.com Log Out / Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Log Out / Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Log Out / Thay đổi )

Google+ photo

Bạn đang bình luận bằng tài khoản Google+ Log Out / Thay đổi )

Connecting to %s

Các tác giả

Chuyên mục

Tháng Chín 2015
H B T N S B C
« Th8   Th10 »
 123456
78910111213
14151617181920
21222324252627
282930  

NCT Computer

Flickr Photos

Geese Resort

Toulouse Sunset

Monolith

More Photos

Thống kê

  • 115,743 lượt xem

pascalteacher.nct@gmail.com


Trang huấn luyện học sinh giỏi Tin học

%d bloggers like this: