Đề thi học sinh giỏi văn hóa môn Tin học Lớp 9 - Năm học 2017-2018 - Phòng giáo dục và đào tạo Cam Lộ (Có đáp án)

docx 7 trang thaodu 4541
Bạn đang xem tài liệu "Đề thi học sinh giỏi văn hóa môn Tin học Lớp 9 - Năm học 2017-2018 - Phòng giáo dục và đào tạo Cam Lộ (Có đáp án)", để 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:

  • docxde_thi_hoc_sinh_gioi_van_hoa_mon_tin_hoc_lop_9_nam_hoc_2017.docx

Nội dung text: Đề thi học sinh giỏi văn hóa môn Tin học Lớp 9 - Năm học 2017-2018 - Phòng giáo dục và đào tạo Cam Lộ (Có đáp án)

  1. PHÒNG GD&ĐT CAM LỘ ĐỀ THI HỌC SINH GIỎI VĂN HÓA LỚP 9 NĂM HỌC 2017- 2018 ĐỀ CHÍNH THỨC Môn thi : TIN HỌC Khóa ngày 27/10/2017 Thời gian làm bài : 120 phút( Không kể thời gian giao đề) Em hãy dùng ngôn ngữ lập trình Pascal hoặc Free Pascal để lập trình giải các bài toán sau: Bài 1: (4, 0 điểm) Tính tổng BAI1.PAS Viết chương trình nhập từ bàn phím số tự nhiên n sao cho 5<n 100, nếu nhập sai yêu cầu nhập lại khi nào nhập đúng thì tính tổng Sn. 1.2 2.3 3.4 n.(n 1) S n 3.4 4.5 5.6 (n 2)(n 3) Bài 2: (4,0 điểm) Xử lý xâu BAI2.PAS Trong kỳ thi học sinh giỏi lớp 9, do sơ xuất khi nhập dữ liệu nên dữ liệu về họ và tên của thí sinh không đúng theo quy cách của văn bản, vì vậy rất khó khăn trong việc tìm kiếm thông tin thí sinh. Để khắc phục tình trạng đó, ban tổ chức yêu cầu bộ phận thư ký chỉnh sửa lại dữ liệu đúng chuẩn. Em hãy giúp bộ phận thư ký lập trình thực hiện công việc với yêu cầu như sau: Nếu có nhiều kí tự trắng ở trong xâu thì xóa và chỉ để lại một kí tự trắng ở giữa mỗi từ, kí tự đầu tiên của họ, họ lót, tên được chuyển thành chữ in hoa, tất cả các kí tự còn lại được chuyển thành chữ thường. Dữ liệu vào: Cho bởi file text XAU.INP trong đó gồm một dòng chứa xâu dài không quá 255 kí tự, là họ và tên thí sinh. Kết quả ra: Ghi ra file text XAU.OUT gồm một dòng chứa kết quả xâu đã xử lý. Ví dụ: XAU.INP XAU.OUT NguYEn THI ThuY nhung Nguyen Thi Thuy Nhung Bài 3: (6,0 điểm) Phần thưởng BAI3.PAS Trong cuộc thi học sinh giỏi văn hóa cấp Huyện môn Tin học mỗi học sinh đều có số điểm tích lũy riêng của mình. Số điểm tích lũy của mỗi học sinh là một số nguyên dương K (0 < K ≤ 2 10 9). Đội tuyển của phòng giáo dục và đào tạo Huyện Cam Lộ có N học sinh tham gia dự thi (2 ≤ N ≤ 100). Tại buổi gặp mặt trước kỳ thi cấp tỉnh, thầy trưởng phòng giáo dục quyết định thưởng cho các học sinh trong đội tuyển Q triệu đồng, biết rằng điểm tích lũy của mỗi học sinh đều chia hết cho Q. Yêu cầu: Hãy tìm số nguyên dương Q lớn nhất. Dữ liệu vào: Số nguyên dương N là số lượng học sinh được nhập từ bàn phím.
  2. Nhập lần lượt điểm tích lũy của N học sinh, các số được ghi cách nhau ít nhất một dấu cách. Dữ liệu ra: Ghi số nguyên dương Q tìm được. Ví dụ: PT.INP PT.OUT 5 3 15 24 45 36 27 Bài 4: ( 6 điểm) Sinh xâu ký tự BAI4.PAS Cho hai xâu X, Y gồm các ký tự số từ 0 đến 9 được biểu diễn như sau: X=x1, x2, x3 xn; Y= y1, y2,y3 ym (n,m<250). Hãy viết chương trình sinh ra xâu ST thỏa mãn các điều kiện sau : - ST gồm các ký tự số vừa có mặt ở xâu X, vừa có mặt ở xâu Y. - Các ký tự số trong xâu ST chỉ xuất hiện duy nhất một lần - Xâu ST nếu đổi ra số sẽ nhận được một số đạt giá trị lớn nhất Dữ liệu vào : Cho bởi file text SINHXAU.INP chứa xâu X và xâu Y, mỗi xâu nằm trên một dòng Kết quả : Ghi ra màn hình là số lớn nhất nhận được. SINHXAU.INP SINHXAU.OUT X= “19012304” 43210 Y= “034012” X= “2468” Khong co Y= “3579” HẾT Yêu cầu: - Các tệp bài làm được lưu theo tên bài. Ví dụ: BAI1.PAS. - Tất cả các tệp đều được lưu trong thư mục theo đường dẫn: D:\SBD*. (* là số báo danh của thí sinh). Ví dụ: Thí sinh có SBD là 03 thì lưu theo đường dẫn D:\SBD03.
  3. HƯỚNG DẪN CHẤM HỌC SINH GIỎI MÔN TIN HỌC NĂM HỌC 2017 - 2018 Bài 1: (4 điểm ) Tính tổng TEST Nhập n từ bàn phím Kết quả trên màn hình Điểm 1 8 3.74 1đ 2 6 2.46 1đ 3 100 87.11 1đ 4 150 Nhập lại N 1đ Chương trình tham khảo program tinhtong; uses crt; var n,i:integer; s:real; begin clrscr; repeat write('nhap n:');readln(n) until (5<n) and (n<=100); s:=0; for i:=1 to n do s:=s+((i*(i+1))/((i+2)*(i+3))); write('Tong la:',s:2:2); readln; end. Bài 2: (4,0 điểm) Xử lý xâu Test XAU.INP XAU.OUT Điểm 1 NguYEn thi THUY nhung Nguyen Thi Thuy Nhung 1,0 2 Le thi nhu na Le Thi Nhu Na 1,0 3 Hoang THI TUYET Hoang Thi Tuyet 1,0 4 TRUONG HO NHAT ANH Truong Ho Nhat Anh 1,0 Chương trình tham khảo Program chuanhoaxau; var st:string; i:integer; f1,f2:text; Begin assign(f1,'xau.inp');reset(f1); assign(f2,'xau.out');rewrite(f2); read(f1,st);
  4. 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); for i:=1 to length(st) do if st[i] in ['A' 'Z'] then st[i]:=chr(ord(st[i])+32); st[1]:=upcase(st[1]); for i:=1 to length(st) do if st[i]=' ' then st[i+1]:=upcase(st[i+1]); writeln(f2,st); close(f1); close(f2); end. Bài 3: (6,0 điểm) Phần thưởng TEST PT.INP PT.OUT Điểm 1 5 3 1đ 15 24 45 36 27 2 3 4 1đ 8 4 12 3 5 5 1đ 20 25 30 15 40 4 6 4 1đ 16 24 28 8 40 4 5 8 1 1đ 20 12 15 10 22 26 30 13 6 10 8 1đ 8 16 80 32 64 160 320 640 24 4000 Chương trình tham khảo Program Phan_thuong; Const fi='PT.INP'; fo='PT.OUT'; Type mmc=Array[0 101] of Longint; Var N:Longint; A:mmc; Function UCLN(x,y:Longint):Longint; Var sodu:Word; Begin sodu:=x mod y; While sodu<>0 do Begin x:=y; y:=sodu;
  5. sodu:=x mod y; End; UCLN:=y; End; Procedure Read_Data; Var f:text; i:Longint; Begin Assign(f,fi); Reset(f); Readln(f,N); For i:=1 to N do Read(f,A[i]); Close(f); End; Function USC:Longint; Var f:text; i,mUSC:longint; Begin mUSC:=UCLN(A[1],A[2]); for i:= 3 to N do mUSC:=UCLN(mUSC,A[i]); USC:=mUSC; End; Procedure Write_Data; Var f:Text; Begin Assign(f,fo); Rewrite(f); Write(f,USC); Close(f); End; BEGIN Read_Data; Write_Data; End. Bài 4: (6 điểm) SINH XÂU KÍ TỰ Mỗi test đúng được 2 điểm Test SINHXAU.INP SINHXAU.OUT 1 X= “19012304” 43210 Y= “034012” 2 X= “2468” Khong co xau sinh ra
  6. Y= “3579” 3 X= “abc19012304” 9321 Y= “b9123” Chương trình tham khảo program sinh_xau_ki_tu; var s1,s2,s11,s22, xauchung: string; tam:char; dem,i,j:integer; f1,f2:text; BEGIN assign(f1,'SINHXAU.INP') ; reset(f1); assign(f2,'SINHXAU.OUT') ; rewrite(f2); dem:=0; s11:='';s22:='';xauchung:=''; while (dem=0) and not eof(f1) do begin readln(f1,s1); readln(f1,s2); s11:=s11+s1; s22:=s22+s2; i:=1; while i 0) and (pos(s11[i],xauchung)=0) then xauchung:=xauchung+s11[i]; inc(i); end; If xauchung=’ ’ then write (f2, ‘khong co xau sinh ra’); end; If xauchung >’ ’ then begin for i:=1 to length(xauchung) do for j:=i+1 to length(xauchung) do if xauchung[i]<xauchung[j] then begin tam:=xauchung[i]; xauchung[i]:=xauchung[j]; xauchung[j]:=tam; end;
  7. writeln(f2, 'xau sinh ra', xauchung); end; close(f1); close(f2); readln; END.