Đề thi học sinh giỏi cấp huyện - Môn: Tin

pdf 9 trang hoaithuong97 15114
Bạn đang xem tài liệu "Đề thi học sinh giỏi cấp huyện - Môn: Tin", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • pdfde_thi_hoc_sinh_gioi_cap_huyen_mon_tin.pdf

Nội dung text: Đề thi học sinh giỏi cấp huyện - Môn: Tin

  1. PHÒNG GD&ĐT KRÔNG ANA KỲ THI HỌC SINH GIỎI CẤP HUYỆN NĂM HỌC 2015 - 2016 ĐỀ CHÍNH TH Ứ C Đề thi môn: Tin học 9 Thời gian làm bài: 150 phút Bài 1: (4,0 điểm) SỐ LƯỢNG Viết chương trình nhập vào dãy N 1 N 100 số nguyên và các phần tử A a12, a , aN  và số nguyên K nhập từ bàn phím. Hãy cho biết trong dãy vừa nhập có bao nhiêu phần tử chia hết cho K và vị trí các phần tử đó trong dãy. Kết quả in ra màn hình theo cấu trúc sau: - Dòng 1: Ghi số lượng các phần tử chia hết cho K. - Dòng 2: Ghi vị trí các phần tử chia hết cho K. Các số cách nhau 1 dấu cách. - Dòng 3: Ghi giá trị các phần tử chia hết cho K. Các số cách nhau 1 dấu cách. Nếu trong dãy không có giá trị nào chia hết cho K thì in ra thông báo: Trong dãy không có phần tử nào chia hết cho K. Ví dụ 1: Dữ liệu nhập từ bàn phím Kết quả in ra màn hình N = 5 So luong: 3 A = {2 5 8 10 9} Vi tri: 1 3 4 K = 2 Gia tri: 2 8 10 Ví dụ 2: Dữ liệu nhập từ bàn phím Kết quả in ra màn hình N = 4, A = {1 3 5 6}, K = 8 Khong co phan tu chia het cho K Bài 2: (4,0 điểm) CHUẨN HÓA XÂU Viết chương trình nhập vào 1 xâu bất kỳ từ bàn phím. Hãy chuẩn hóa xâu theo quy tắc sau: - Xóa các dấu cách ở đầu xâu nếu có. - Xóa các dấu cách ở cuối xâu nếu có. - Thay dãy nhiều dấu cách liên tiếp giữa các từ trong xâu bằng 1 dấu cách. Yêu cầu: In kết quả ra màn hình. - Xâu vừa chuẩn hóa theo quy tắc trên. - Số lượng chữ cái in thường, chữ cái in hoa và chữ số có trong xâu. Ví dụ: Dữ liệu nhập từ bàn phím Kết quả in ra màn hình Xau chuan hoa: HoC sINh89 gIoI 2016 So luong chu cai in thong : 5 HoC sINh89 gIoI 2016 So luong chu cai in hoa : 6 So luong chu so trong xau : 6 Câu 3: (6 điểm) DÃY CON CHUNG Cho dãy số nguyên A gồm N phần tử a1, a2, , aN và dãy số nguyên B gồm M phần tử b1, b2, , bM. Các phần tử trong một dãy số có giá trị khác nhau từng đôi một. Dãy C được gọi là dãy con của dãy A nếu dãy C nhận được từ dãy A bằng cách xóa đi một số phần tử và giữ nguyên thứ tự của các phần tử còn lại. - 1 -
  2. Nếu dãy C là dãy con của dãy A và cũng là dãy con của dãy B thì dãy C được gọi là dãy con chung của hai dãy A và B. Yêu cầu: Hãy tìm dãy C là dãy con chung của hai dãy A và B sao cho số lượng phần tử của dãy C là lớn nhất. Dữ liệu vào: Nhập từ bàn phím. Dữ liệu ra: Ghi ra file văn bản BAI3.OUT theo cấu trúc như sau: - Dòng 1: Ghi số nguyên dương K là số lượng phần tử của dãy C. - Dòng 2: Ghi giá trị phần tử trong dãy C, các số được ghi cách nhau một dấu cách. - Dòng 3: Ghi K số nguyên dương lần lượt là chỉ số của các phần tử trong dãy A ứng với các giá trị của phần tử đó trong dãy C, các số được ghi cách nhau một dấu cách. - Dòng 4: Ghi K số nguyên dương lần lượt là chỉ số trong dãy B tương ứng với các giá trị của phần tử đó trong dãy C, các số được ghi cách nhau một dấu cách. Ví dụ: BÀN PHÍM BAI3.OUT 7 5 8 3 1 12 6 15 4 3 12 6 15 4 6 2 4 5 6 7 3 12 7 6 15 4 1 2 4 5 6 Bài 4: (6,0 điểm) TÌM SỐ Cho số nguyên dương X, khi đảo ngược trật tự các chữ số của X ta sẽ thu được một số nguyên dương Y, Y được gọi là số đảo ngược của X. Ví dụ: X = 97 thì Y = 79 là số đảo ngược của X. Số nguyên dương Y được gọi là số nguyên tố nếu nó chỉ có hai ước số là 1 và chính nó, số 1 không phải là số nguyên tố. Cho hai số nguyên dương P và Q (1 ≤ P ≤ Q ≤ 2 107; Q - P ≤ 105). Yêu cầu: Hãy tìm tất cả các số nguyên dương X nằm thỏa mãn P ≤ X ≤ Q và số đảo ngược của số X là số nguyên tố. Dữ liệu vào: Cho trong file văn bản BAI4.INP có cấu trúc như sau: - Dòng 1: Ghi số nguyên dương P, Q. Hai số được ghi cách nhau ít nhất một dấu cách. Dữ liệu ra: Ghi ra file văn bản BAI4.OUT trên nhiều dòng, mỗi dòng ghi một số nguyên X tìm dược. Ví dụ: BAI4.INP BAI4.OUT 10 19 11 13 14 16 17 Hết (Cán bộ coi thi không giải thích gì thêm) Họ và tên thí sinh SBD Chữ ký giám thị 1 Chữ ký giám thị 2 - 2 -
  3. PHÒNG GD&ĐT KRÔNG ANA KỲ THI HỌC SINH GIỎI CẤP HUYỆN NĂM HỌC 2015-2016 ĐÁP ÁN VÀ HƯỚNG DẪN CHẤM Môn: Tin học 9 Yêu cầu chung: - Chương trình chạy cho kết quả đúng (có thể làm theo cách khác đáp án): khai báo đầy đủ, trình bày có cấu trúc rõ ràng cho điểm tối đa. Không khai báo mỗi biến trừ 0.25 điểm. - Chương trình cho kết quả sai: Chỉ chấm phần các ý hínhc của thuật toán, mỗi ý đúng cho điểm không vượt quá 50% số điểm của câu. BÀI 1(4,0 điểm): SỐ LƯỢNG Chương trình tham khảo Điểm PROGRAM BAI_1; USES CRT; 1.0 VAR A,B,C:ARRAY[1 100]OF INTEGER; N,I,J,K,L,D:INTEGER; BEGIN CLRSCR; WRITE('NHAP N= ');READLN(N);WRITELN; WRITE('NHAP GIA TRI DAY A: '); WRITELN; FOR I:=1 TO N DO BEGIN WRITE('A[',I,']= '); READLN(A[I]); 1.0 END; WRITELN; WRITE('DAY VUA NHAP: '); FOR I:=1 TO N DO WRITE(A[I]:4); WRITELN; WRITE('NHAP K= ');READLN(K); WRITELN; J:=1;L:=1;D:=0; FOR I:=1 TO N DO IF A[I] MOD K = 0 THEN BEGIN 1.0 D:=D+1; B[J]:=I; C[L]:=A[I]; J:=J+1; L:=L+1; END; IF D<>0 THEN BEGIN WRITE('SO LUONG PHAN TU CHIA HET: ',D:2); WRITELN; WRITE('VI TRI CAC PHAN TU: '); FOR I:=1 TO D DO WRITE(B[I]:3);WRITELN; WRITE('GIA TRI CAC PHAN TU: '); 1.0 FOR I:=1 TO D DO WRITE(C[I]:3);WRITELN; END ELSE WRITE('KHONG CO PHAN TU NAO CHIA HET CHO ',K); READLN END. - 3 -
  4. BỘ TEST CHƯƠNG TRÌNH: TEST 1: Dữ liệu nhập từ bàn phím Kết quả in ra màn hình N = 5 So luong: 3 A = {2 5 8 10 9} Vi tri: 1 3 4 K = 2 Gia tri: 2 8 10 TEST 2: Dữ liệu nhập từ bàn phím Kết quả in ra màn hình N = 6 So luong: 4 A = {3 12 8 15 9 7} Vi tri: 1 2 4 5 K = 3 Gia tri: 3 12 15 9 TEST 3: Dữ liệu nhập từ bàn phím Kết quả in ra màn hình N = 7, A = {12 10 8 1 3 5 6}, Khong co phan tu chia het cho K K = 7 BÀI 2(4,0 điểm): CHUẨN HÓA XÂU Chương trình tham khảo Điểm PROGRAM BAI_1; USES CRT; VAR ST:STRING; 1.0 I,D,d1,d2:INTEGER; BEGIN WRITE('NHAP XAU: '); READLN(ST); WRITELN; 0.5 WHILE ST[1]=' ' DO DELETE(ST,1,1); WHILE ST[LENGTH(ST)]=' ' DO DELETE(ST,LENGTH(ST),1); WHILE POS(' ',ST)<>0 DO DELETE(ST,POS(' ',ST),1); 1.0 WRITE('XAU CHUAN HOA: ',ST);WRITELN; - 4 -
  5. D:=0; D1:=0; D2:=0; FOR I:=1 TO LENGTH(ST) DO BEGIN IF ST[I]IN['a' 'z'] then D:=D+1; IF ST[I]IN['A' 'Z'] then D1:=D1+1; 1.0 IF ST[I]IN['0' '9'] then D2:=D2+1; end; WRITE('SO LUONG KY TU IN THUONG: ',D) ;WRITELN; WRITE('SO LUONG KY TU IN HOA : ',D1);WRITELN; 0.5 WRITE('SO LUONG KY TU CHU SO : ',D2);WRITELN; READLN END. - 5 -
  6. BỘ TEST CHƯƠNG TRÌNH: TEST 1: Dữ liệu nhập từ bàn phím Kết quả in ra màn hình Xau chuan hoa: HoC sINh89 gIoI 2016 So luong chu cai in thong : 5 HoC sINh89 gIoI 2016 So luong chu cai in hoa : 6 So luong chu so trong xau : 6 TEST 2: Dữ liệu nhập từ bàn phím Kết quả in ra màn hình Xau chuan hoa: TiN hOc Lop 9 So luong chu cai in thong : 5 TiN hOc Lop 9 So luong chu cai in hoa : 4 So luong chu so trong xau : 1 TEST 3: Dữ liệu nhập từ bàn phím Kết quả in ra màn hình Xau chuan hoa: SACH GIAO KHOA So luong chu cai in thong : 0 SACH GIAO KHOA So luong chu cai in hoa : 12 So luong chu so trong xau : 0 BÀI 3(6,0 điểm): DÃY CON CHUNG Chương trình tham khảo Điểm VAR A,B,C,D,G:ARRAY[1 100]OF INTEGER; 1.0 M,N,I,J,L,DEM,T,K:INTEGER; F:TEXT; BEGIN WRITE('NHAP N:= ');READLN(N); WRITELN; FOR I:=1 TO N DO BEGIN WRITE('A[',I,']= '); READLN(A[I]); END; WRITELN; 1.5 WRITE('NHAP M:= ');READLN(M); WRITELN; FOR I:=1 TO M DO BEGIN WRITE('B[',I,']= '); READLN(B[I]); END; WRITELN; ASSIGN(F,'BAI3.OUT');REWRITE(F); DEM:=0;T:=1;K:=1; FOR I:=1 TO N DO 1.0 BEGIN FOR J:=1 TO M DO - 6 -
  7. IF A[I]=B[J] THEN BEGIN DEM:=DEM+1; C[T]:=I; D[K]:=J; T:=T+1; 1.0 K:=K+1; END; END; WRITE(F,DEM);WRITELN(F); FOR I:=1 TO N DO BEGIN FOR J:=1 TO M DO IF A[I]=B[J] THEN WRITE(F,A[I]:3); END; 1.5 WRITELN(F); FOR I:=1 TO DEM DO WRITE(F,C[I]:3); WRITELN(F); FOR I:=1 TO DEM DO WRITE(F,D[I]:3); CLOSE(F); END. BỘ TEST CHƯƠNG TRÌNH: TEST 1: BÀN PHÍM BAI3.OUT 5 3 11 3 1 12 6 3 12 6 4 2 4 5 3 12 7 6 1 2 4 TEST 2: BÀN PHÍM BAI3.OUT 6 4 2 4 5 7 8 10 4 5 7 8 5 2 3 4 5 4 5 7 8 9 1 2 3 4 TEST 3: BÀN PHÍM BAI3.OUT 7 4 1 3 4 7 10 8 9 1 4 10 9 6 1 3 5 7 1 4 6 10 12 9 1 2 4 6 - 7 -
  8. BÀI 4(6,0 điểm): TÌM SỐ Chương trình tham khảo Điểm FUNCTION NG_TO(X:INTEGER):BOOLEAN; VAR J: INTEGER; KT: BOOLEAN; BEGIN KT:= TRUE; IF X = 1 THEN KT:= FALSE 1.5 ELSE FOR J:= 2 TO X DIV 2 DO IF X MOD J = 0 THEN KT:= FALSE; NG_TO:= KT; END; FUNCTION DAO_SO(Y: INTEGER): INTEGER; VAR S:INTEGER; BEGIN S:=0; WHILE Y<>0 DO BEGIN 1.5 S:=S*10 + (Y MOD 10); Y:= Y DIV 10; END; DAO_SO:=S; END; VAR X,Y,P,Q,I:INTEGER; F,F1: TEXT; BEGIN ASSIGN(F,'BAI4.INP'); RESET(F); 1.0 ASSIGN(F1,'BAI4.OUT');REWRITE(F1); WRITE(F1,'CAC SO CAN TIM');WRITELN(F1); READ(F,P,Q); FOR I:= P TO Q DO 1.5 IF NG_TO(DAO_SO(I))=TRUE THEN WRITELN(F1,I:3); CLOSE(F); CLOSE(F1); 0.5 END. BỘ TEST CHƯƠNG TRÌNH: TEST 1: BAI4.INP BAI4.OUT 5 20 5 7 11 13 14 - 8 -
  9. TEST 2: BAI4.INP BAI4.OUT 10 25 11 13 14 16 17 20 TEST 3: BAI4.INP BAI4.OUT 25 50 30 31 32 34 35 37 38 50 Ghi chú: - Học sinh có thể viết chương trình khác nhưng chạy đúng kết quả test vẫn cho điểm tối đa. - Nếu học sinh không đọc được dữ liệu từ file hoặc không ghi dữ liệu vào file được thì giám khảo trừ 75% số điểm của phần đó. - 9 -