PHÒNG GD&ĐT HẠ HÒA Đề chính thức KÌ THI HỌC SINH GIỎI LỚP 9 Năm học: 2015 – 2016 Môn: TIN HỌC Ngày thi: 4 tháng 12 năm 2015 Thời gian: 150 phút (không kể thời gian giao đề) (Đề thi có 2 trang) * Các file chương trình và file dữ liệu được đặt tên chính xác như sau: Bài File bài làm Dữ liệu vào Dữ liệu ra Time Bài 1: Bai1.Pas BAI1.INP BAI1.OUT 2s Bài 2: Bai2.Pas BAI2.INP BAI2.OUT 2s Bài 3: Bai3.Pas BAI3.INP BAI3.OUT 2s Bài 4: Bai4.Pas BAI4.INP BAI4.OUT 2s Thí sinh tạo thư mục và lưu các bài làm theo đường dẫn D:\Thi HSG Bài 1 (4,0 điểm). Khởi động chương trình PASCAL, viết chương trình đọc vào một số tự nhiên n từ tệp “BAI1.INP” sao cho 4 < n ≤1000000, tính tổng sn: và in lên tệp “BAI1.OUT”, nếu dữ liệu nhập sai in số 0.. Bài 2.(4,0 điểm) Viết chương trình kiểm tra một số tự nhiên n (n<10000) được nhập vào từ tệp “BAI2.INP” Kiểm tra xem có phải là số hoàn chỉnh hay không? In lên tệp “BAI2.OUT” số 1 nếu n là số hoàn chỉnh và số 0 nếu n không phải là số hoàn chỉnh. Biết rằng số hoàn chỉnh là một số có tổng các ước nhỏ hơn nó bằng chính nó. Ví dụ: Số 6 có các ước nhỏ hơn nó là 1, 2, 3. Tổng các ước 1 + 2 + 3 = 6. Vậy 6 được gọi là số hoàn chỉnh. Bài 3. (7,0 điểm) Viết chương trình nhập từ tệp “BAI3.INT” hai số nguyên dương a, b cách nhau một dấu cách và thực hiện in lên tệp đầu ra “BAI3.OUT”: a) Dòng 1 in ra số đối xứng của số nguyên dương a và đối xứng của số nguyên dương b Cách nhau một dấu “ ;”. b) Dòng 2 in ra tổng của số đối xứng với a và số đối xứng với b Biết rằng ta gọi số “đối xứng” với số a là số nguyên dương thu được từ a bằng cách đảo ngược thứ tự các chữ số của a. Ví dụ: nhập số a = 12, số b = 23 cho kết quả: a) Số đối xứng với số a = 12 là 21; Số đối xứng với số b = 23 là 32. b) Tổng của số đối xứng với a = 12 và số đối xứng với b = 23 là: 21 + 32 = 53. Bài 4.(5,0 điểm) Cho một chuỗi gồm n2 ký tự từ tệp “BAI4.INP”. Người ta cắt chuỗi từ trái sang phải thành n chuỗi con, mỗi chuỗi con có đúng n ký tự. Viết mỗi chuỗi con thành một cột, ta có một bảng gồm n hàng và n cột ký tự. Yêu cầu: Viết chương trình nhập vào một chuỗi gồm n2 ký tự (4 £ n2 £ 255) In lên tệp “BAI4.OUT”. a) In các hàng có tổng mã ASCII của các ký tự là lớn nhất mỗi hàng trên một dòng. b) Dòng tiếp theo in giá trị tổng ở câu a. Ví dụ: BAI4.INP Bảng BAI4.OUT abcdefghi a d g b e h c f i c f i 306 -------Hết------ Họ và tên thí sinh: ...................................................... SBD......................... Cán bộ coi thi không phải giải thích gì thêm. HƯỚNG DẪN CHẤM THI - CHỌN HỌC SINH GIỎI LỚP 9 CẤP HUYỆN NĂM HỌC 2015 – 2016 Môn: Tin học Chấm theo bộ Test thử, đúng test nào giám khảo cho điểm test đó. Bài 1. (4,0 điểm) Bộ Test thử Test BAI1.INP BAI1.OUT 1 4 0 2 5 1.879 3 1000 978.044 4 1000000 1018115.610 Bài 2. (4,0 điểm) Test BAI2.INP BAI2.OUT Điểm 1 2 0 1,0 đ 2 6 1 1,0 đ 3 496 1 1,0 đ 4 8128 1 1,0 đ Bài 3. (7,0 điểm) Test BAI3.INP BAI3.OUT Điểm Số đối xứng số a Số đối xứng số b Tổng của hai số đối xứng a,b 1 12 23 21 32 53 1,5 đ 2 123 456 321 654 975 1,5 đ 3 1357 2468 7531 8642 16173 2,0 đ 4 2809 2014 9082 4102 13184 2,0 đ Bài 4. (5,0 điểm) Test BAI4.INP BAI4.OUT Điểm 1 abcdefghi c f i 0,5 306 0,5 2 HOCSINHGIOILOPCHINCAPTINH O H L I T 0,5 384 0,5 3 ABCDEFGHIJKLJAAA A E I J D H L A 0,5 0,5 281 0,5 4 asdfghjklzxcvbqm s h z b d j x q 0.5 0,5 439 0,5 Hướng dẫn chấm trên giấy. Bài Chương trình Điểm 1 (4,0đ) Điểm Uses Crt; Var n,i:Integer; s:Real; 0,5 BEGIN ClrScr; Write(‘Nhap so tu nhien n=');Readln(n); While ((n100) do Begin Write(‘Nhap lai n thoa man 5 < n <=100, n = ');Readln(n); end; 1 s:=0; For i:=1 to n do s:=s+i*(i+1)/((i+2)*(i+3)); 1,5 2 (4,0đ) Write(‘s=’,s:4:3); 0,5 Readln END. 0,5 s:= 0; For i:= 1 to n - 1 do If n mod i = 0 then s:= s + i; 1,5 đ If s = n then writeln(n, ‘ : la so hoan chinh ’) Else writeln(n, ‘ : khong la so hoan chinh ’) Readln END. 1,0 đ 3 (7,0đ) Program Bai3; Uses crt; Var a, b: Longint; 1,0 đ Function DX(a: integer):integer; Var so: Integer; Begin so:= 0; Repeat so:= so*10+a mod 10; a:= a div 10; Until a = 0; DX:= so; end; 2,0 đ BEGIN Clrscr; Write(' Nhap so a= '); readln(a); Write(' Nhap so b= '); readln(b); 1,0 đ Writeln('So doi xung so ',a,' la: ',DX(a)); Writeln('So doi xung so ',b,' la: ',DX(b)); 2,0 đ Writeln('Tong cua hai so doi xung la: ',DX(a)+DX(b)); readln; END. 1,0 đ 4 (5,0đ) Program Bai4; Uses crt; Var a:Array[1..1000] of Integer; i, n: Byte; j, k: Integer; kt:boolean; 2,0 đ BEGIN clrscr; Write(' Nhap kich thuoc N cua mang: '); Readln(n); a[1]:= 2; For i:= 2 to n do Begin j:= a[i-1]; Repeat Inc(j); kt:= True; For k:= 2 to j div 2 do If j mod k = 0 then kt:= False; Until kt; 2,0 đ a[i]:= j; End; Writeln(' Mang N so nguyen to dau tien: '); For i:=1 to n do Write(a[i]:4); Readln; END. 1,0 đ * Lưu ý: Học sinh có nhiều cách giải khác nhau, nếu đúng giám kháo cho điểm tương ứng của phần đó.
Tài liệu đính kèm: