Đề thi học sinh giỏi cấp trường môn Tin học – Khối 11 – Trường THPT Nguyễn Huệ

doc 4 trang thienle22 17441
Bạn đang xem tài liệu "Đề thi học sinh giỏi cấp trường môn Tin học – Khối 11 – Trường THPT Nguyễn Huệ", để 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:

  • docde_thi_hoc_sinh_gioi_cap_truong_mon_tin_hoc_khoi_11_truong_t.doc

Nội dung text: Đề thi học sinh giỏi cấp trường môn Tin học – Khối 11 – Trường THPT Nguyễn Huệ

  1. SỞ GD&ĐT PHÚ YÊN ĐỀ THI HỌC SINH GIỎI CẤP TRƯỜNG NĂM HỌC: 2019-2020 TRƯỜNG THPT NGUYỄN HUỆ Môn: Tin học Khối: 11 Thời gian: 150 phút (không kể thời gian phát đề) Đề thi gồm 3 bài, thí sinh ghi vào 3 files với tên Bai1.pas, Bai2.pas, Bai3.pas Sử dụng ngôn ngữ lập trình Pascal, lập trình giải các bài tập sau : Bài 1 : (7 điểm) Một số tự nhiên n được gọi là số Amstrong (số tự mãn) khi có tổng lập phương các chữ số bằng với chính nó. Ví dụ : 153 = 13 + 53 + 33 153 là số Amstrong Yêu cầu: Cho trước một số nguyên dương n bất kỳ. Hãy viết chương trình cho biết n có phải là số Amstrong hay không? Dữ liệu vào: Từ tệp văn bản AMSTRONG.INP chứa số nguyên dương n (1≤ n ≤10000) bất kỳ. Kết quả: Ghi vào tệp văn bản AMSTRONG.OUT dòng thông báo n là số Amstrong hoặc n không phải số Amstrong. Ví dụ : AMSTRONG.INP AMSTRONG.INP Test 1: 153 153 la so Amstrong Test 2: 370 370 la so Amstrong Test 3: 506 506 khong phai so Amstrong Bài 2: (7 điểm) Đầu năm học để quản lý tình trạng sức khỏe của học sinh, nhà trường tổ chức cho học sinh các lớp cân trọng lượng cơ thể. Mỗi học sinh được ghép vào một nhóm trọng lượng khác nhau. Yêu cầu: Từ kết quả cân trọng lượng cơ thể học sinh của một lớp, hãy viết chương trình cho biết số học sinh theo từng nhóm trọng lượng. Dữ liệu vào: Từ tệp văn bản SUCKHOE.INP gồm 2 dòng: - Dòng đầu chứa một số nguyên dương n (n ≤ 50) là số lượng học sinh của một lớp. - Dòng 2, chứa lần lượt n số nguyên, mỗi số có giá trị 20≤ x i ≤ 100 là trọng lượng của một học sinh, giữa các giá trị ngăn cách ít nhất là một ký tự trống.
  2. Kết quả: Ghi vào tệp văn bản SUCKHOE.OUT gồm nhiều dòng. Mỗi dòng cho biết nhóm trọng lượng cùng với số học sinh. Ví dụ SUCKHOE.INP SUCKHOE.OUT 10 30 kg co 1 hoc sinh 30 45 50 65 70 65 40 50 45 50 45 kg co 2 hoc sinh 50 kg co 3 hoc sinh 65 kg co 2 hoc sinh 70 kg co 1 hoc sinh 40 kg co 1 hoc sinh Bài 3 (6 điểm) Cho trước một xâu kí tự, trong đó có ít nhất 4 chữ số. Yêu cầu: Hãy viết chương trình loại bỏ một số kí tự ra khỏi xâu sao cho 4 kí tự cuối cùng còn lại theo đúng thứ tự đó tạo nên một số lớn nhất. Dữ liệu vào: Từ tệp văn bản STRING.INP chứa một xâu bất kỳ bao gồm kí tự chữ cái và kí tự số xen kẽ nhau. Kết quả: Ghi vào tệp văn bản STRING.OUT là số lớn nhất chỉ còn lại 4 kí tự theo đúng thứ tự ban đầu. Ví dụ: STRING.INP STRING.OUT Test 1: 32ab7e6f8hg39 7839 Test 2: 24d5n4r05f704n652z393 7693 HẾT –
  3. SỞ GD & ĐT PHÚ YÊN ĐÁP ÁN ĐỀ THI HỌC SINH GIỎI CẤP TRƯỜNG TRƯỜNG THPT NGUYỄN HUỆ KHỐI 11 - NĂM HỌC 2019-2020 MÔN: TIN HỌC Bài 1: (7 điểm) program Amstrong; uses crt; var g,f: text; n, m, s:integer; kq:boolean; begin clrscr; assign(f, 'Amstrong.inp'); reset(f); assign(g, 'Amstrong.out'); rewrite(g); readln (f,m); n:=m; if n=0 then kq:=false else begin s:=0; while n<>0 do begin s:= s+(n mod 10)*(n mod 10)*(n mod 10); n:=n div 10; end; if s=m then kq:=true else kq:= false; end; if kq=true then writeln(g,m,' la so Amstrong') else writeln (g,m,' khong phai so Amstrong'); close(f); close(g); readln; end. Bài 2: (7 điểm) program bai_2; uses crt; var g,f: text; A: array[1 50] of integer; n, i, j, dem, k :integer; kt:boolean; begin clrscr; assign(f, 'Suckhoe.inp'); reset(f); assign(g, 'Suckhoe.out'); rewrite(g); readln (f,n); for i:=1 to n do read(f,A[i]); dem:=0;
  4. for i:=2 to n do begin kt:= true; for j:=1 to i-1 do if a[i]=a[j] then kt:=false; if kt=true then begin dem:=0; for k:=1 to n do if a[i]=a[k] then inc(dem); writeln(g, a[i],' kg co ', dem, ' hoc sinh'); end; end; close(f); close(g); readln; end. Bài 3: (6 điểm) program xau; uses crt; var s:string; g,f: text; c: char; n,i,j,k:integer; begin clrscr; assign(f, ‘string.inp'); reset(f); assign(g, ‘string.out'); rewrite(g); readln (f,s); i:=1; repeat if (s[i] in ['0' '9']) then inc(i) else delete(s,i,1); until i>length(s); for i:=1 to 4 do begin k:=i; for j:=i to length(s)+i-4 do if (s[k] i then delete(s,i,k-i); end; if length(s)>4 then delete(s, 5, length(s)-4); write(g,s); close(f); close(g); readln; end.