Đề thi học sinh giỏi cấp huyện môn Tin học Lớp 9 - Năm học 2016-2017 - Phòng GD và ĐT Krông Ana (Có đáp án)

Bài 2 (5 điểm)
“Ta biết trong một tam giác tổng độ dài 2 cạnh lớn hơn cạnh còn lại và hiệu độ dài hai cạnh bé hơn cạnh còn lại”. Hãy viết chương trình bằng ngôn ngữ lập trình Pascal kiểm tra bộ ba số dương khi nhập từ bàn phím có phải là độ dài ba cạnh của một tam giác không?
doc 7 trang Hải Đông 05/02/2024 10969
Bạn đang xem tài liệu "Đề thi học sinh giỏi cấp huyện môn Tin học Lớp 9 - Năm học 2016-2017 - Phòng GD và ĐT Krông Ana (Có đáp án)", để tải tài liệu gốc về máy hãy click vào nút Download ở trên.

File đính kèm:

  • docde_thi_hoc_sinh_gioi_cap_huyen_mon_tin_hoc_lop_9_nam_hoc_201.doc

Nội dung text: Đề thi học sinh giỏi cấp huyện môn Tin học Lớp 9 - Năm học 2016-2017 - Phòng GD và ĐT Krông Ana (Có đáp án)

  1. PHÒNG GD&ĐT KRÔNG ANA KỲ THI HỌC SINH GIỎI CẤP HUYỆN NĂM HỌC 2016 - 2017 ĐỀ CHÍNH THỨC Đề thi môn: Tin học 9 Thời gian làm bài: 150 phút (không kể thời gian giao đề) (Đề thi này gồm có 02 trang) Bài 1: (6,0 điểm) – Thao Tác Với Mảng Viết chương trình cho phép nhập một dãy gồm n số nguyên từ bàn phím (0<n<=100), gồm các phần tử A a1,a2 , aN  và thực hiện: a) Sắp xếp và in dãy số vừa nhập theo thứ tự giảm dần. b) In ra phần tử có giá trị tuyệt đối lớn nhất trong dãy. In kết quả ra màn hình theo cấu trúc như sau: - Dòng 1: Ghi dãy sau khi đã sắp xếp theo thứ tự giảm dần. - Dòng 2: Ghi phần tử có giá trị tuyệt đối lớn nhất. Ví dụ: Dữ liệu nhập từ bàn phím Kết quả in ra màn hình n = 6 Day Sx theo thu tu giam dan: 4 1 -2 -2 - 2 -5 A = {-5 -2 1 -2 4 -2} Gia tri tuyet doi lon nhat: -5 Dữ liệu nhập từ bàn phím Kết quả in ra màn hình N = 4 Day Sx theo thu tu giam dan: 7 4 3 2 A = {3 2 4 7} Gia tri tuyet doi lon nhat: 7 Lưu bài 1 với tên tệp tin: E:\HSG\SBDxxx\Bai1.pas (xxx là SBD của thí sinh). Bài 2 (5 điểm) “Ta biết trong một tam giác tổng độ dài 2 cạnh lớn hơn cạnh còn lại và hiệu độ dài hai cạnh bé hơn cạnh còn lại”. Hãy viết chương trình bằng ngôn ngữ lập trình Pascal kiểm tra bộ ba số dương khi nhập từ bàn phím có phải là độ dài ba cạnh của một tam giác không? Ví dụ: Dữ liệu nhập từ bàn phím Kết quả in ra màn hình a = 3 Bo ba so 3 6 8 la do dai ba canh cua mot tam b = 6 giac c = 8 a = 2.8 Bo ba so 2.8 5.3 10 khong phai do dai ba canh b = 5.3 cua mot tam giac c = 10 Lưu bài 2 với tên tệp tin: E:\HSG\SBDxxx\Bai2.pas (xxx là SBD của thí sinh). Bài 3(5,0 điểm): Sắp xếp xâu. Cho hai xâu X, Y chứa các kí tự số từ 0 đến 9 và đượ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 bằng ngôn ngữ lập trình Pascal tạo ra xâu ST thoả mãn các điều kiện sau: - 1 -
  2. - 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; - Giá trị xâu ST nhận được là một số đạt giá trị lớn nhất. Dữ liệu vào cho bởi file INPUT.INP chứa giá trị xâu X và xâu Y, mỗi xâu nằm trên một dòng. Dữ liệu ra chứa ở file OUTPUT.OUT là số lớn nhất nhận được. In kết quả ra màn hình : Gia tri lon nhat cua xau Ví dụ: Xâu X= ‘45679877’; xâu Y= ‘1235689’, kết quả là ‘9865’. INPUT.INP OUTPUT.OUT ‘123456’ ‘6532’ ‘2356’ ‘5634’ ‘43’ ‘1234’ Lưu bài 3 với tên tệp tin: E:\HSG\SBDxxx\Bai3.pas (xxx là SBD của thí sinh). Bài 4 : (4.0 điểm)- Đối Xứng Viết chương trình bằng ngôn ngữ lập trình Pascal cho phép nhập từ bàn phím một số nguyên dương a và thực hiện: a) Cho biết a là số có mấy chữ số. b) Cho biết tổng các chữ số của a. c) Ta gọi số “đối xứng” với 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. Viết chương trình in ra số đối xứng của số nguyên dương a. d) Cho a và b là 2 số nguyên dương. Ta gọi tổng đối xứng của a và b là số đối xứng với tổng của số đối xứng với a và số đối xứng với b. Viết chương trình cho phép nhập hai số nguyên dương a, b và in ra tổng đối xứng của chúng. In kết quả ra màn hình theo cấu trúc như sau: - Dòng 1: So a co chu so - Dòng 2: Tong cac chu so cua a - Dòng 3: So doi xung cua a - Dòng 4: Tong doi xung cua a va b Dữ liệu nhập từ bàn phím Kết quả in ra màn hình a = 25 So a co 2 chu so b = 26 Tong cac chu so cua a la 7 So doi xung la 52 Tong doi xung cua a va b la 411 Lưu bài 4 với tên tệp tin: E:\HSG\SBDxxx\Bai4.pas (xxx là SBD của thí sinh). 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. HƯỚNG DẪN CHẤM BÀI 1: (6 điểm) - Thao Tác Với Mảng Program Bai1; Var A: array[1 100] of integer; Khai báo n,i,j,tam:integer; 0.5 xh,chinh:integer; ok: boolean; Begin Repeat Write(nhap n voi 0 0) and (n A[i] then Sắp xếp Begin 2.0 dãy số Tam:=A[i]; M[i]:=A[j]; A[j]:=Tam; End; In dãy số Write('Day so sau khi sap xep giam dan: '); 0.5 đã sắp xếp For i:=1 to n do Write(A[i]:4); Writeln; In Phần tử Write('Phan tu co gia tri tuyet doi lon nhat:'); có giá trị if abs(A[1])>abs(A[n]) then write(A[1]:4) 1.5 tuyệt đối else write(A[n]:4); lớn nhất Readln; End. 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 = 6 Day Sx theo thu tu giam dan: 10 9 8 7 5 3 A = {8 5 7 10 9 3} Gia tri tuyet doi lon nhat: 10 TEST 2: Dữ liệu nhập từ bàn phím Kết quả in ra màn hình N = 8 Day Sx theo thu tu giam dan: 9 8 7 6 5 3 2 1 A = {2 1 5 9 8 6 7 3} Gia tri tuyet doi lon nhat: 9 TEST 3: Dữ liệu nhập từ bàn phím Kết quả in ra màn hình N = 7 Day Sx theo thu tu giam dan: 12 8 7 7 6 5 4 A = {12 7 8 4 6 7 5} Gia tri tuyet doi lon nhat: 12 - 3 -
  4. Bài 2(5 điểm) PROGRAM BAI1; Uses crt; VAR a,b,c:REAL; begin clrscr; write('nhap a =');REAdln(a); write('nhap b =');REAdln(b); write('nhap c =');REAdln(c); 5 IF (a+b>c) and (b+c>a) and (a+c>b) then write('Bo ba so ',a:1:1,' ',b:1:1,' ',c:1:1,' la do dai ba canh cua mot tam giac') else write('Bo ba so ',a:1:1,' ',b:1:1,' ',c:1:1,' khong la do dai ba canh cua mot tam giac'); READLN END. Bài 3(5 điểm) - Sắp xếp Xâu Khai Báo program bai3; var i,n,m,j:integer; 0.5 f,f1:text; st,x,y:string; Xây dựng procedure hd(var m,n:char); thủ tục var tg:char; hoán vị begin tg:=m; 1.0 m:=n; n:=tg; end; Sắp xếp begin xâu assign(f,'input.inp'); reset(f); assign(f1,'output.out'); rewrite(f1); readln(f,x); readln(f,y); for i:=2 to length(x) do 2.0 for j:=1 to i-1 do if x[i]>x[j] then hd(x[i],x[j]); for i:=2 to length(y) do for j:=1 to i-1 do if y[i]>y[j] then hd(y[i],y[j]); Xóa kí tự i:=1; 1.5 - 4 -
  5. trùng và while i 0 then st:=st+y[i]; write(f1,st); close(f); close(f1); end. TEST: INPUT.INP OUTPUT.OUT ‘23232332’ ‘32’ ‘252663’ ‘5686987’ ‘9865’ ‘8965423’ ‘123456789’ ‘9865321’ ‘568912318’ - 5 -
  6. BÀI 4 (4 điểm) - Đối Xứng Program Bai4; Khai báo Var a,aa,b: longint; 0.5 cs,tong:integer; Function DX(a:integer):integer; var so: integer; Begin so:=0; Hàm tìm Repeat số đối 1.0 so:=so*10 + a mod 10; xứng a:= a div 10; Until a = 0; DX:=so; End; Begin Write('Nhap so a: '); Readln(aa); a:=aa; cs:=0; Tìm số Repeat chữ số của 1.0 cs:=cs + 1; một số a:=a div 10; until a=0; Writeln('So ', aa , ' co ', cs,' chu so'); a:=aa; Tong:=0; Tìm tổng Repeat các chữ tong:=tong + a mod 10; 1.0 số của a:=a div 10; một số until a=0; Writeln('So ' , aa , ' co tong cac chu so la: ',tong); a:=aa; In số đối Writeln('So doi xung cua so', aa , 'la: ',DX(a)); xứng và Write('Nhap so b: '); Readln(b); 0.5 tổng đối Write('Tong doi xung cua hai so a, b la:,DX(DX(a)+DX(b))); xứng Readln; End. TEST 1: Dữ liệu Kết quả in ra màn hình nhập từ bàn phím A = 34 SO 34 CO 2 CHU SO SO 34 CO TONG CAC CHU SO LA: 7 SO DOI XUNG CUA SO 34 LA: 43 B=65 TONG SO DOI XUNG CUA A VA B LA: 99 - 6 -
  7. TEST 2: Dữ liệu Kết quả in ra màn hình nhập từ bàn phím A = 15 SO 15 CO 2 CHU SO SO 15 CO TONG CAC CHU SO LA: 6 SO DOI XUNG CUA SO 15 LA: 51 B=45 TONG SO DOI XUNG CUA A VA B LA: 501 TEST 3: Dữ liệu Kết quả in ra màn hình nhập từ bàn phím A = 87 SO 87 CO 2 CHU SO SO 87 CO TONG CAC CHU SO LA: 15 SO DOI XUNG CUA SO 87 LA: 78 B=14 TONG SO DOI XUNG CUA A VA B LA: 911 - 7 -