UBND HUYỆN NINH HỒ PHỊNG GIÁO DỤC VÀ ĐÀO TẠO ĐỀ CHÍNH THỨC ĐỀ THI CHỌN HỌC SINH GIỎI CẤP HUYỆN NĂM HỌC 20092010 MÔN: TIN HỌC (Thời gian: 150 phút – không kể phát đề) Bài 1: (2đ) Tính tổng số ngun dương có chuỗi Nhiệm vụ chương trình: - Tên tập tin: Bai_1.pas - Chương trình cho phép nhập vào chuỗi gồm nhiều ký tự có số ngun dương - Xuất hình chuỗi nhập - Xuất tổng số ngun dương có chuỗi Ví dụ: Input Output abcAcb90acgH3abcb12bdcnhag Chuoi da nhap: abcAcb90acgH3abcb12bdcnhag Tong cac so co chuoi: 105 bacDgfhrthg Nhap sai! Yeu cau nhap lai: Bài 2: (2đ) Viết chương trình nhập vào hai mốc thời gian năm cho biết từ mốc thời gian thứ đến mốc thời gian thứ hai có ngày Nhiệm vụ chương trình: - Tên tập tin: Bai_2.pas - Cho phép nhập vào hai mốc thời gian năm - Kiểm tra liệu nhập sai cho nhập lại (có ý ngày hợp lệ tháng, mốc thời gian trước sau hợp lý) - Cho kết số ngày Chú ý : Năm nhuận năm chia hết cho tháng có 29 ngày Tháng 1,3,5,7,8,10,12 có 31 ngày Tháng 4,6,9,11 có 30 ngày Ví dụ: liệu vào mốc : = 29 tháng = mốc : = tháng = năm 2009 sai cho nhập lại liệu vào mốc : = 29 tháng = mốc : = 3tháng = năm 2000 ngày liệu Bài 3: (3đ) Sắp xếp số nguyên dương theo thứ tự giảm dần theo số ước chúng ThuVienDeThi.com Nhiệm vụ chương trình: - Tên tập tin: Bai_3.pas - Chương trình tạo 20 số nguyên dương ngẫu nhiên khoảng [20 100] - Xuất hình số tạo - Xuất hình số tạo sau xếp số theo thứ tự giảm dần theo số ước chúng Ví dụ: Input 47; 78; 32; 38; 30; 56; 35; 31; 51; 66; Output Cac so da tao: 47; 78; 32; 38; 30; 56; 35; 31; 51; 66; Cac so sau da sap xep giam dan theo so uoc: 78; 30; 56; 66; 32; 35; 51; 38; 47; 31; Bài 4: (3đ) Nhập vào dãy số nguyên Cho biết dãy xếp chưa tăng dần hay giảm dần Nếu dãy dã xếp cho nhập số n chèn vào dãy cho dãy bảo đảm xếp (không xếp lại sau chèn thêm) Nếu dãy chưa xếp xếp lại dãy tăng dần Nhiệm vụ chương trình: - Tên tập tin: Bai_4.pas - Dữ liệu vào dãy số nguyên - Dữ liệu dãy vừa nhập - Nếu dãy xếp xuất dãy sau chèn thêm n - Nếu dãy chưa xếp xuất dãy xếp lại Ví dụ N =6 liệu vào liệu vào liệu dãy xếp tăng dần dãy sau chèn thêm n 6 liệu dãy chưa xếp xếp lại dãy ThuVienDeThi.com Chữ ký GT1: …………………………… …………………………… Chữ ký GT2: UBND HUYỆN NINH HOÀ ĐÁP ÁN ĐỀ THI CHỌN HỌC SINH GIỎI CẤP HUYỆN PHÒNG GIÁO DỤC VÀ ĐÀO TẠO NĂM HỌC 20092010 MÔN: TIN HỌC (Thời gian: 150 phút – không kể phát đề) Bài 1: program bai1; Uses crt; Var st,s1,tam:string; i,n,e,tong:integer; kt:boolean; BEGIN clrscr; kt:=false; repeat write('Nhap chuoi gom ky tu va so: '); readln(st); for i:=1 to length(st) if st[i] in ['0' '9'] then kt:=true; if kt = false then begin write('Nhap sai! Yeu cau nhap lai: '); readln(st) end; until kt=true; s1:=st; for i:=1 to length(s1) if not(s1[i] in ['0' '9']) then s1[i]:=#32; repeat delete(s1,pos(#32#32,s1),1); until pos(#32#32,s1) = 0; if s1[1]=#32 then delete(s1,1,1); if s1[length(s1)]=#32 then delete(s1,length(s1),1); tam:=''; s1:=s1+#32; tong:=0; for i:=1 to length(s1) if s1[i]#32 then tam:=tam+s1[i] else begin val(tam,n,e); tong:=tong+n; ThuVienDeThi.com tam:=''; end; writeln('Chuoi da nhap: ',st); write('Tong cac so co chuoi: ', tong); readln end Tổng điểm: điểm Thực phần nhập theo nhiệm vụ chương trình (0,75 điểm) Tính tổng xuất kết hình (1,25 điểm) Nếu thí sinh thực phần nhập, có ý tưởng xử lí chuỗi nhập để thực tính tổng tính tổng cho kết sai (1 điểm) Bài 2: program bai2; uses crt; var ng1,th1,ng2,th2,n,son:integer; a:array[1 12]of integer; i,j:integer; kt: boolean; begin repeat kt:=true; clrscr; writeln('***tinh so ngay:*** '); write('tu ngay: '); readln(ng1); write('thang: '); readln(th1); write('den ngay: '); readln(ng2); write('thang: '); readln(th2); write('nam: '); readln(n); if (ng128) then kt:=false ; if (th2 =2) and (n mod 40) and (ng2 >28) then kt:=false ; if (th1 =2) and (n mod 4=0) and (ng1 >29) then kt:=false ; if (th2 =2) and (n mod 4=0) and (ng2 >29) then kt:=false ; if (th1>=th2) and (ng1>ng2) then kt:=false; if kt= false then begin write(' nhap sai nhan enter nhap lai'); readln ; end; until kt = true; if n mod 40 then a[2]:=28 else a[2]:=29; for i:=1 to 12 case i of 1,3,5,7,8,10,12: a[i]:=31; 4,6,9,11: a[i]:=30; end; son:=0; if th2th1 then begin ThuVienDeThi.com for i:=(th1+1) to (th2-1) son:= son+a[i]; son:=son+(a[th1]-ng1)+ng2+1; end else son:=ng2-ng1+1; write('***tu ',ng1,'/',th1,' den ',ng2,'/',th2,' nam ',n,' co ',son,' ngay***'); readln; end Tổng điểm: điểm - Nhập liệu vào có bẩy lổ nhập - Lí luận tính dúng số ngày - Viết kết (0,5 điểm) (1 điểm) (0,5 điểm) Bài 3: program bai3; Uses crt; Type Data = record n,u:integer; end; Var a:array[1 10] of Data; tam: Data; i, j, d: integer; Begin clrscr; Randomize; writeln('Cac so ngau nhien da tao: '); For i:=1 to 10 Begin a[i].n:=random(81)+20; write(a[i].n,'; '); end; d:=0; for i:=1 to 10 begin d:=0; for j:=1 to a[i].n if a[i].n mod j = then inc(d); a[i].u:=d; end; for i:=1 to for j:=i+1 to 10 if a[i].u < a[j].u then begin tam:=a[i]; a[i]:=a[j]; a[j]:=tam; end; writeln; writeln('Cac so sau da sap xep giam dan theo so uoc: '); for i:=1 to 10 write(a[i].n,'; '); readln end Tổng điểm: điểm - Thực phần nhập theo nhiệm vụ chương trình ThuVienDeThi.com (0,75 điểm) - Xác định số ước số tạo (0,75 điểm) - Sắp xếp số theo nhiệm vụ chương trình xuất kết hình (1,5 điểm) Bài 4: program bai4; uses crt; var n,i,v,j,b,p,m:integer; a:array[1 50]of integer; kt:boolean; begin clrscr; write('ban dinh nhap day so co bao nhieu phan tu: readln(n); for i:=1 to n begin write('a[',i,']='); readln(a[i]); end; write('day da nhap la:'); for i:=1 to n write(a[i]:3); writeln; kt:=true; for i:=1 to n-1 if a[i]=a[i])and(p