Giúp các bạn ôn luyện phần lập trình pascal cho học sinh trung học cơ sở, chuẩn bị cho các kì thi học sinh giỏi môn tin học. Đây là tập hợp các bài tập cơ bản được soạn bởi thầy giáo uy tín với kinh nghiệm nhiều năm đào tạo đội tuyển tin học của Đồng Nai. Tài liệu đi từ dễ tới khó, cấu trúc chặt chẽ, trình bày rõ ràng logic. Hy vọng giúp bạn đọc phát triển kiến thức lập trình.
30 BÀI TẬP ÔN LUYỆN THI HSG TIN LỚP Bài Tính tổng TINHTONG Nhập số nguyên dương n Tính tổng s = + + + … + 2n Ví dụ: Input Output Giải thích 10 Tong S la: 110 Chương trình const fi='tinhtong.inp';fo='tinhtong.out'; var n:longint;s:real; begin assign(input,fi);reset(input); assign(output,fo);rewrite(output); readln(n); s:=(2+2*n)*n/2; write('Tong la ',s:0:0); close(input);close(output); end Bài Tính cạnh kề CANHKE (3 điểm) Nhập độ dài cạnh huyền cạnh kề tam giác vuông Tính độ dài cạnh kề lại Làm tròn chữ số thập phân Ví dụ: Input Output 4.00 Test Input Output 10 20 15 13.23 200 150 132.29 1234 987 740.67 65432 23456 61083.24 Giải thích Chương trình const fi='canhke.inp';fo='canhke.out'; var a,b:longint;c2,c:real; begin assign(input,fi);reset(input); assign(output,fo);rewrite(output); readln(a,b); c2:=a*a-b*b; c:=sqrt(c2); writeln('Canh ke lai la ',c:0:2); close(input);close(output); end Bài Tính diện tích DTHT (2 điểm) Cho cạnh hình vuông, tính diện tích hình tròn hình sau Kết làm tròn chữ số thập phân Sử dụng số pi = 3.14 Ví dụ: Input Output Giải thích Dien tich hinh tron la 39.25 Test Input Output Nhap canh hinh vuong Dien tich hinh tron la: 39.25 10 157 123 23752.53 4321 29313534.37 12345 239266469.25 Giải thích Chương trình var c,r2,s:real; begin write('nhap canh hinh vuong:'); readln(c); r2:=c*c/2; s:=3.14*r2; writeln(s:0:2); readln; end Bài Kiểm tra số phương CPHUONG Số phương bình phương số nguyên Nhập số tự nhiên n Cho biết n có phải số phương hay không? Input Output 10 la so chinh phuong 10 khong la so chinh phuong Chương trình Test const fi='cphuong.inp';fo='cphuong.out'; var n:longint; begin assign(input,fi);reset(input); assign(output,fo);rewrite(output); readln(n); if sqrt(n) = trunc(sqrt(n)) then write(n,' la so chinh phuong') else write(n,' khong la so chinh phuong'); close(input);close(output); end Bài Kiểm tra tam giác KTTG Mẹ Bi cho Bi số que gỗ đố Bi chọn que để xếp thành hình tam giác Bi biết độ dài que gỗ lấy không xếp thử trước Yêu cầu: giúp bé Bi kiểm tra xem que gỗ lấy có xếp thành tam giác hay không? Input: độ dài que gỗ Output: kết luận có xếp không Ví dụ: Input Output Giải thích 2 duoc khong Gợi ý: để đoạn xếp thành tam giác tổng hai đoạn phải lớn đoạn lại Chương trình const fin='kttg.inp'; fon='kttg.out'; var a,b,c:real; begin assign(input,fin);reset(input); assign(output,fon); rewrite(output); read(a, b, c); if (a+b>c) and (a+c>b) and (b+c>a) then writeln('duoc') else writeln('khong'); close(input);close(output); end Bài Tính tiền internet NET1 Một dịch vụ tính phí Internet sau: Từ phút thứ đến phút thứ 60 tính 80 đ/1 phút Từ phút thứ 61 đến phút thứ 120 tính 50 đ/1 phút Từ phút thứ 121 trở tính 30 đ/1 phút Viết chương trình nhập vào số phút truy cập người in số tiền phải trả người Ví dụ: Input Output Giải thích 150 9300 60*80 + 60*50+ 30*30 = 8700 Chương trình Const Fin='NET1.INP'; var Fon='NET1.OUT'; n,t,cs:word; tien:real; begin Assign(input,fin);Reset(input); Assign(output,fon);Rewrite(output); readln(input,cs); if cs 60 if n[...]... assign(output,fon);rewrite(output); solve; close(input);close(output); End Bài 26 Giải mã tin nhắn TINNHAN Có một tin nhắn được mã hóa và giấu trong một xâu văn bản trước khi gửi đi Quy tắc mã hóa tin nhắn là thay mỗi chữ cái trong tin nhắn thành một chữ cái đứng cách nó k vị trí trong bảng chữ cái tiếng Anh theo quy tắc xoay vòng, các ký tự không phải chữ cái thì không thay đổi Trong xâu có thể có nhiều tin. .. nhiều tin nhắn, giữa các tin nhắn được ngăn cách nhau bởi dấu # Biết rằng tin nhắn có độ dài lớn nhất là tin nhắn cần tìm Nếu có nhiều tin nhắn có cùng chiều dài thì tin nhắn đầu tiên tìm thấy là tin nhắn cần giải mã Yêu cầu: Cho trước một xâu S dài không quá 255 ký tự và một số nguyên dương k Hãy tìm và giải mã tin nhắn được giấu trong xâu S Input: Cho trong tệp văn bản có tên TINNHAN.INP gồm hai dòng:... xuất “YES” nếu cách đặt ngoặc đúng, ngược lại xuất “NO” Chương trình TEST Const fi='ngoac.inp';Fo='ngoac.out'; var n,i:longint; s:string; function solve(s:string):boolean; var dong,mo,i:longint; begin dong:=0;mo:=0; for i:=1 to length(s) do begin if s[i]=')' then inc(dong) else inc(mo); if dong>mo then exit(false); end; if dong=mo then exit(true) else exit(false); end; BEGIN assign(input,fi);reset(input);... Input Output 2 4 AABDDC 11 NANGKHIEUTINHOC Chương trình Const Finame='test.inp'; Foname='test.out'; var s:string; function dem(s:string):longint; var co:array['A' 'Z'] of boolean; i,d:longint; c:char; begin for c:='A' to 'Z' do co[c]:=false; for i:=1 to length(s) do co[s[i]]:=true; d:=0; for c:='A' to 'Z' do if co[c] then inc(d); exit(d); end; procedure xuli; var i,n:longint; dx:boolean; begin readln(n);... tương ứng trong input Chương trình const fin=''; fon=''; var n,d:longint; procedure count; var i,j:longint; begin d:=0; for i:=2 to trunc(sqrt(2*n)) do begin if 2*n mod i0 then continue; j:=2*n div i; if (n/i-(i-1)/2)=int(n/i-(j-1)/2) then inc(d); if ji then if (n/j-(j-1)/2)=int(n/j-(j-1)/2) then inc(d); end; end; procedure xuli; begin assign(input,fin); reset(input); assign(output,fon); rewrite(output);... Dòng thứ hai: số nguyên dương k Ouput: Xuất ra tệp văn bản có tên TINNHAN.OUT gồm hai dòng: − Dòng đầu: số lượng tin nhắn tìm được; − Dòng thứ hai: nội dung tin nhắn cần tìm đã được giải mã Ví dụ Input Output ABC#QBTDBM#123HGF 2 1 PASCAL Chương trình Const fi='TINNHAN.INP'; fo='TINNHAN.OUT'; var k:longint; procedure giaima(s:string); var i:longint; begin for i:=1 to length(s) do begin if ('A'