Đề thi tin học trẻ tỉnh Sóc Trăng năm 2011 khối: THCS - Phần lập trình
Bài 2: (4 điểm)
Program CHUAN_HOA;
uses crt;
var i,n:integer;
s:string;
Function chuan_hoa1(ch:string):string;
{Xóa bỏ các ký tự trắng dư thừa trong câu văn}
var j:integer;
c1:string;
Begin
HỘI THI TIN HỌC TRẺ TỈNH SÓC TRĂNG NĂM 2011 KHỐI: THCS - PHẦN LẬP TRÌNH THỜI GIAN LÀM BÀI: 90 phút Bài 1: (3 điểm) Người ta gọi với a,b Z, b khác 0 là một phân số, hãy mô tả kiểu dữ liệu đối với phân số và viết chương trình cho phép nhập vào hai phân số, thực hiện các phép tính liên quan đến phân số như: Nhân, chia, nghịch đảo phân số. Bài 2: (4 điểm) Trong soạn thảo văn bản, qui định khoảng cách giữa các từ là một ký tự trắng, các dấu chấm, dấu phẩy, dấu chấm phẩy phải đi liền với chữ trước nó, sau dấu chấm, dấu phẩy, dấu chấm phẩy thì có một ký tự trắng. Trong một đoạn văn nếu không tính tới các lỗi sai về chính tả mà chỉ tính các lỗi sai nêu trên. Hãy viết chương nhập từ bàn phím một đoạn văn có lỗi với độ dài không quá 255 ký tự và sữa lỗi đó. Ví dụ: Nhập vào: ma hoa x , y ,z . Mat thu . Xuất ra: ma hoa x, y, z. Mat thu. -------------HẾT----------- HỘI THI TIN HỌC TRẺ TỈNH SÓC TRĂNG NĂM 2011 KHỐI: THCS – ĐÁP ÁN PHẦN LẬP TRÌNH Bài 1: (3 điểm) Program NhanchiaPhanso; Uses Crt; Type Phanso=record Tu:integer; Mau:integer; end; Var Fanso1,Fanso2,kq:phanso; {} Function Uscln(a,b:integer):integer; Begin If b=0 then Uscln:=a Else Uscln:=Uscln(b,a mod b); End; {} Procedure Nhan(p1,p2:phanso;var p:phanso); Var x:Integer; Begin With p do Begin tu:=p1.tu*p2.tu; mau:=p1.mau*p2.mau; X :=Uscln(tu,mau); {gian luoc phan so} Tu:=tu div x; Mau:=mau div x; End; End; {} Procedure Chia(p1,p2:phanso;var p:phanso); Var x:Integer; Begin With p do Begin tu:=p1.tu*p2.mau; {Nhan nghich dao phan so thu hai} mau:=p1.mau*p2.tu; X :=Uscln(tu,mau); Tu:=tu div x; Mau:=mau div x; End; End; {} Procedure NgDao(var p:phanso); Var tam:integer; Begin tam:=p.tu; p.tu:=p.mau; p.mau:=tam; End; {Main program} Begin WriteLn(' CHUONG TRINH XU LI PHAN SO'); Write('Nhap vao phan so thu nhat :'); Readln(Fanso1.tu,Fanso1.mau); Write('Nhap vao phan so thu hai :'); Readln(Fanso2.tu,Fanso2.mau); Writeln('Ket qua la: '); Nhan(fanso1,fanso2,kq); Writeln('ket qua nhan hai phan so: ',kq.tu,'/',kq.mau); Chia(fanso1,fanso2,kq); Writeln('ket qua chia hai phan so: ',kq.tu,'/',kq.mau); Ngdao(fanso1); Writeln('ket qua nghich dao cua phan so 1 : ',fanso1.tu,'/',fanso1.mau); End. {of main program} -Test: (3 điểm) Nhập vào: 1/2, 4/5 Xuất ra: +Nhân:4/10 hoặc 2/5 (1 điểm) +Chia: 5/8 (1 điểm) +Nghịch đảo: 2/1 hoặc 5/4 (1 điểm) Bài 2: (4 điểm) Program CHUAN_HOA; uses crt; var i,n:integer; s:string; Function chuan_hoa1(ch:string):string; {Xóa bỏ các ký tự trắng dư thừa trong câu văn} var j:integer; c1:string; Begin j:=1; c1:=''; while j<=length(ch) do begin if (ch[j]' ') or (ch[j+1]' ') then c1:=c1+ch[j]; j:=j+1; end; if c1[1]=' ' then delete(c1,1,1); if c1[length(c1)]=' ' then delete(c1,length(c1),1); chuan_hoa1:=c1; End; Function chuan_hoa2(ch:string):string; {Sửa lại vị trí của các dấu phẩy, chấm, chấm phẩy trong câu văn} var i:integer; Begin i:=1; while i<= length(ch) do Begin if (ch[i]='.') or (ch[i]=',') or (ch[i]=';') then Begin while ch[i-1]=' ' do begin i:=i-1; delete(ch,i,1); end; while ch[i+1]' ' do insert(' ',ch,i+1); end; i:=i+1; end; chuan_hoa2:=ch; End; BEGIN {Chuong trinh chinh} clrscr; write('Hay nhap doan van (nho hon 256) ky tu:'); readln(s); writeln('Ket qua sau khi chuan hoa:',chuan_hoa2(chuan_hoa1(s))); readln; END. -Test1:(3 điểm) Nhập vào: ma hoa x , y ,z . Mat thu . Xuất ra: ma hoa x, y, z. Mat thu. -Test2: (1 điểm) Nhập vào: ma hoa x, y, z. Mat thu. Xuất ra: ma hoa x, y, z. Mat thu. ---HẾT---
File đính kèm:
- DE_LAP_TRINH_THCS+day+du+dap+an.doc