Cộng đồng chia sẻ tri thức Lib24.vn

Đề thi học sinh giỏi lớp 9 môn Tin Học năm 2011-2012

Gửi bởi: 2019-08-12 14:25:02 | Được cập nhật: 2021-02-20 10:48:31 Kiểu file: 4 | Lượt xem: 1111 | Lượt Download: 30

Nội dung tài liệu

Tải xuống
Link tài liệu:


Có thể bạn quan tâm


Thông tin tài liệu

KỲ THI HỌC SINH GIỎI LỚP 9 CẤP HUYỆN NĂM HỌC 2011-2012 Môn: Tin học - Lớp 9 Thời gian làm bài: 150 phút (Không kể thời gian giao đề) UBND HUYỆN QUẾ SƠN PHÒNG GD&ĐT ĐỀ CHÍNH THỨC - VÒNG I Bài 1 (2,0 điểm): Tam giác vuông ABC (Â=900) có AH là đường cao. Viết chương trình cho phép nhập BH và CH từ bàn phím rồi thực hiện: a. Tính cạnh AB của tam giác. b. Tính diện tích tam giác ABC. Ví dụ: Dữ liệu vào Nhap BH: 2 Nhap CH: 2 Nhap BH: 0 Nhap CH: 2 Dữ liệu ra AB = 2.83 Dien tich tam giac ABC: 4.00 Nhap BH: (Yêu cầu nhập lại BH >0) Bài 2(3,0 điểm): Viết chương trình cho phép nhập một dãy gồm n số nguyên (Số n và các phần tử của dãy được nhập từ bàn phím). Thực hiện: a. Cho biết giá trị lớn nhất của dãy. b. In ra các phần tử của dãy là số chính phương. c. Dãy đan dấu là dãy có tính chất: không có hai phần tử cạnh nhau có dấu giống nhau. Cho biết dãy vừa nhập (không chứa phần tử 0) có đan dấu không? Ví dụ: Dữ liệu vào Nhap so phan tu: 4 Nhap day: -4; 3; -2; 1 Nhap so phan tu: 5 Nhap day: -4; 3; 2; -1; 5 Dữ liệu ra Gia tri lon nhat: 3 Cac phan tu chinh phuong la: 1 Day dan dau Gia tri lon nhat: 5 Cac phan tu chinh phuong la: Day khong dan dau Bài 3(3,0 điểm): Viết chương trình cho phép nhập số nguyên dương N rồi thực hiện: a. In ra tất cả các ước số nguyên dương của N. b. In ra số ước số nguyên dương của số N c. In ra số M nhỏ nhất thỏa: 0 < M  N có nhiều ước số nguyên dương nhất. Ví dụ: Dữ liệu vào Nhap so N: 10 Nhap so N: 30 Dữ liệu ra Cac uoc cua N la: 1; 2; 5; 10 So uoc cua N la: 4. So M la: 6 Cac uoc cua N la: 1; 2; 3; 5; 6; 10; 15; 30 Nhap so N: 0 So uoc cua N la: 8 So M là: 24 Nhap so N: (Yêu cầu nhập lại số N) Bài 4 (2,0 điểm): Xét các chữ số từ 0 đến 9. Nếu chữ số có một đường khép kín thì ta gọi chữ số đó có 1 lỗ hổng, có hai đường khép kín thì ta g ọi s ố đó có 2 l ỗ h ổng, và không có đường khép kín nào thì ta gọi chữ số đó có 0 lỗ h ổng. V ậy các ch ữ s ố 0, 4, 6, 9 có 1 lỗ hổng, chữ số 8 có 2 lỗ hổng và các ch ữ s ố 1, 2, 3, 5, 7 có 0 l ỗ hổng. Số lỗ hổng của một số tự nhiên N là tổng số lỗ hổng của các ch ữ s ố c ủa nó. Hãy viết chương trình cho phép đếm số lỗ hổng của một số tự nhiên N (0 ≤ N ≤ 2147483647). Ví dụ: Dữ liệu vào Nhap N: 388247 Nhap N: 0 Nhap N: 123 Dữ liệu ra So lo hong la: 5 So lo hong la: 1 So lo hong la: 0 ==HẾT== UBND HUYỆN QUẾ SƠN PHÒNG GD&ĐT KỲ THI HỌC SINH GIỎI LỚP 9 CẤP HUYỆN NĂM HỌC 2011-2012 Môn: Tin học - Lớp 9 Thời gian làm bài: 150 phút (Không kể thời gian giao đề) ĐỀ CHÍNH THỨC - VÒNG II Bài 1 (2,5 điểm): Viết chương trình nhập vào từ bàn phím một số nguyên dương n (n≤1000), sau đó tính và in lên màn hình giá trị c ủa các biểu thức sau (kết qu ả lấy đến 6 chữ số thập phân): a. T= 1  2  ....  n (có n dấu căn bậc hai) 1 1 1 1 + +... + 1 1.2 1.2.3 1.2...n b. S = + Bài 2: (2,5 điểm) Tìm tất cả các số có bốn chữ số thỏa mãn tính chất: Nếu chọn xóa đi m ột chữ số thích hợp nào đó của nó thì số đó giảm đi 9 lần. Ví dụ: Số 1350 khi chọn và xóa đi số 3 ta được 150. Vì 150 . 9 = 1350 nên 1350 là số cần tìm. Bài 3: (2,5 điểm) Viết chương trình cho phép nhập ngày, tháng, năm và in ra ngày, tháng, năm của ngày hôm sau. Biết rằng: Các tháng 1, 3, 5, 7, 8, 10, 12 có 31 ngày. Các tháng 4, 6, 9, 11 có 30 ngày. Tháng 2: - Năm nhuận có 29 ngày - Năm không nhuận có 28 ngày Năm nhuận là năm chia hết cho 4 nhưng không chia hết cho 100. Ví dụ: Dữ liệu vào Ngay: 10 - Thang: 1 - Nam: 2012 Ngay: 31 - Thang: 12 - Nam: 2011 Ngay: 28 - Thang: 2 - Nam: 2000 Ngay: 28 - Thang: 2 - Nam: 2012 Dữ liệu ra 11/1/2012 1/1/2012 1/3/2001 29/2/2012 Bài 4: (2,5 điểm) Số tự nhiên N có k chữ số được gọi là số AmStrong nếu N b ằng t ổng các lũy thừa bậc k của các chữ số của nó: Ví dụ: Số 153 có 3 chữ số và 153 = 13 + 53 + 33 nên nó là số AmStrong. Hãy viết chương trình in ra các số Amstrong nhỏ hơn hoặc bằng n với n được nhập từ bàn phím. ==HẾT== KỲ THI HỌC SINH GIỎI LỚP 9 CẤP HUYỆN NĂM HỌC 2011-2012 Môn: Tin học - Lớp 9 Thời gian làm bài: 150 phút (Không kể thời gian giao đề) UBND HUYỆN QUẾ SƠN PHÒNG GD&ĐT HƯỚNG DẪN CHẤM - VÒNG I Bài 1: (2,0 điểm) Khai báo Program Bai1; Nhập dữ liệu Tính AB Tính diện tích Var BH,CH,AB,AC:Real; Begin Repeat Write('Nhap BH: ');Readln(BH); Until BH>0; Repeat Write('Nhap CH: ');Readln(CH); Until CH>0; AB:=sqrt(BH*(BH+CH)); Writeln('AB = ',AB:4:2); AC:=sqrt(CH*(BH+CH)); Writeln('Dien tich tam giac ABC: ',AB*AC/2:4:2); Readln; End. 0,50 0,50 0,50 0,50 Cụ thể: - Khai báo: Nếu khai báo kiểu số nguyên thì cho 0,25 điểm. - Nhập dữ liệu: Nhập mỗi dữ liệu (BH, CH) cho 0,25 điểm. - Tính và in: Do có rất nhiều cách tính khác nhau nên GK cần xem xét phương pháp mỗi cách tính để định điểm theo khung trên. Nếu in không định dạng (Ví dụ: thiếu:4:2 trong lệnh in) trừ 0,25 điểm cho cả hai câu. Bài 2:(3,0 điểm) Program Bai2; Khai báo Nhập mảng Tìm phần tử lớn nhất Tìm các phần tử chính phương Kiểm tra tc đan dấu In ra kết luận Var n,i,max:integer; M:array[1..20] of integer; ok:boolean; Begin Write('Nhap so phan tu:');Readln(n); For i:=1 to n do Begin Write('M[',i,']=');Readln(M[i]); End; max:=M[1]; For i:=2 to n do if M[i]>Max then Max:=M[i]; Writeln('Gia tri lon nhat la: ',Max); Write('Cac phan tu chinh phuong la: '); For i:=1 to n do if (M[i]>=0) and (sqr(int(sqrt(M[i])))=M[i]) then write(M[i],';'); ok:=true; For i:=1 to n-1 do if M[i]*M[i+1]>0 then ok:=false; if ok then Writeln('Day dan dau') else Writeln('Day khong dan dau'); Readln End. Chi tiết: - Tìm các phần tử chính phương: + Cần kiểm tra M[i]>0 nếu không có trừ 0,25 điểm. + Có thể thay int bằng trunc. + Nếu không có phần tử chính phương nào thì in 'Cac phan tu chinh phuong la: ' rồi để trống. 0,50 0,50 0,50 0,75 0,50 0,25 - Kiểm tra t/c đan dấu: Có thể thay For i:=1 to n-1 do if M[i]*M[i+1]>0 bằng For i:=2 to n do if M[i]*M[i-1]>0 - In ra kết luận: if ok có thể thay if ok = true. Bài 3:(3,0 điểm) Program Bai3; Khai báo Nhập N Tìm các ước của N Tìm số ước Duyệt các số J<=N Tìm ước của mỗi số J So sánh với Max để lưu lại số có nhiều ước nhất In ra M Var N,M,i,j,SU,Max:integer; Begin Repeat Write('Nhap so N: ');Readln(N); Until N>0 Write('Cac uoc cua N la: '); For i:=1 to N do if N mod i = 0 then Write(i,';'); Writeln; SU:=0; For i:=1 to N do if N mod i = 0 then SU:=SU+1; Writeln('So N co ',SU,' uoc so'); Max:=0; For j:=1 to N do Begin SU:=0; For i:=1 to j do if j mod i = 0 then SU:=SU+1; if SU > Max then Begin Max:=SU; M:=j; End; End; Write('So ',M,' co nhieu uoc nhat va so uoc la ',max); Readln End. 0,25 0,25 0,50 0,50 0,25 0,50 0,50 0,25 Cụ thể: Trong trường hợp có nhiều số có số ước nhiều nhất bằng nhau thì chỉ yêu cầu in ra một số. Ví dụ: Với N = 32 thì có hai số M th ỏa là 24 và 30 đ ều có s ố ước nhi ều nh ất b ằng nhau là 8. Lúc đó có thể in ra 24 hoặc 30 hoặc cả hai số. Bài 4: (2,0 điểm) Khai báo Program Bai4; Nhập N, khởi tạo lh Lấy chữ số cuối Kiểm tra để tính và cộng số lỗ hổng Xóa chữ số cuối ĐK lặp In ra lh Var N: longint; cs,lh:integer; Begin Write('Nhap so N: ');Readln(N); lh:=0; Repeat cs:=N mod 10; if cs = 8 then lh:=lh+2 else if (cs=0) or(cs=4) or(cs=6) or(cs=9) then lh:=lh+1; N:=N div 10; until N = 0; Writeln('So N co ',lh,' lo hong'); Readln End. Chi tiết: -Khai báo: Cần khai báo biến N kiểu Longint mới thỏa giới hạn N của đề Tìm lh: Nếu dùng vòng lặp while N>0 do ... thì trường hợp N = 0 sẽ tính lh = 0 trong khi kết quả đúng là 1. Trường hợp này trừ 0,25 điểm. 0,25 0,25 0,25 0,50 0,25 0,25 0,25 KỲ THI HỌC SINH GIỎI LỚP 9 CẤP HUYỆN NĂM HỌC 2011-2012 Môn: Tin học - Lớp 9 UBND HUYỆN QUẾ SƠN PHÒNG GD&ĐT HƯỚNG DẪN CHẤM - VÒNG II Bài 1: (2,5 điểm) Khai báo Program Tinh_B_Thuc; Nhập dữ liệu Gán GT đầu Tính T Var n,i:integer; T,S,PS:real; Begin Write('Nhap n: ');Readln(n); T:=0; In S End. For i:=1 to n do Begin PS:=PS/i; S:=S+PS; End; Write('S = ',S:10:8); Readln Bài 2: (2,5 điểm) Khai báo Program Xoa_so; Duyệt qua tất cả các số có bốn chữ số Lập các số Xét điều kiện In các số thỏa mãn. 0,25 0,25 For i:=n downto 1 do T:=SQRT(T+i); Writeln('T = ',T:10:8); PS:=1; S:=0; In T Gán GT đầu Tính S 0,25 Var a,b,c,d:byte; So4,So31,so32,so33,so34:integer; Begin For a:=1 to 9 do For b:=0 to 9 do For c:= 0 to 9 do For d:=0 to 9 do 0,50 0,25 0,25 0,50 0,25 0,25 0.50 Begin So4:=a*1000+b*100+c*10+d; So31:=b*100+c*10+d; So32:=a*100+c*10+d; So33:=a*100+b*10+d; So34:=a*100+b*10+c; if (So4=So31*9) or (So4=So32*9) or (So4=So33*9) or (So4=So34*9) then 1.00 0,50 Writeln(So4:6,So4 div 9:6); End; Readln; 0,25 End. Cụ thể: - Khai báo: Có thể sử dụng các kiêu dữ liệu nguyên khác để khai báo. - Đối với các vòng lặp: Biến a chạy từ 1 đến 9; các biến b,c,d chạy từ 0 đến 9. Nếu sai cho mỗi trường hợp a: -0,25 điểm; b,c,d: -0,25 điểm. Bài 3: (2,5 điểm) Program Ngay_Hom_Sau; Khai báo; Var Ngay,Thang,Nam:integer; Nhập dữ Begin liệu Write('Ngay: ');Readln(ngay); Tăng ngay Write('Thang: ');Readln(thang); Write('Nam:');Readln(nam); ngay:=ngay+1; 0,25 0,25 lên 1 Tháng đủ, ngày > 31 thì sang ngày 1 tháng tiếp theo Nếu tháng >12 thì sang tháng 1 năm tiếp theo Case thang of 1,3,5,7,8,10,12: if ngay > 31 then Begin ngay:=1; thang:=thang+1; if thang>12 then Begin thang:=1; nam:=nam+1; End; End; 4,6,9,11: if ngay > 30 then Begin ngay:=1; thang:=thang+1; End; 2: if (nam mod 4 = 0) and (nam mod 100 <>0) then Begin if ngay > 29 then Begin ngay:=1; thang:=thang+1; End; end else if ngay > 28 then Begin ngay:=1; thang:=thang+1; End; End; Writeln('Ngay hom sau: ', ngay,'/',thang,'/',nam); Readln Tháng thiếu ngày >30 thì sang ngày 1 tháng tiếp theo Năm nhuận, ngày >29 Năm không nhuận, ngày >28 In kết quả End. Bài 4: (2,5 điểm) Program So_AmStrong; Khai Var k:byte; báo M:array[1..10] of byte; Hàm tính lũy thừa Nhập dữ liệu Tách lấy các chữ số và tìm số chữ số Lập giá trị biểu thức Xét điều n,i,ii,S:longint; Function Mu(a,b:integer):Longint; Var T:Longint;i:byte; Begin T:=1; For i:=1 to b do T:=T*a; Mu:=T End; Begin Write('Nhap so n: ');Readln(n); {Duyet qua cac so tu 1 den n} For i:=1 to n do {Tach lay cac chu so } Begin k:=0; ii:=i; while ii<> 0 do Begin k:=k+1; m[k]:=ii mod 10; ii:=ii div 10 End; {lap so va xet} S:=0; For ii:=1 to k do S:=S +Mu(M[ii],k); if S = i then writeln(i); 0,50 0,25 0,25 0,50 0,25 0,25 0,25 0,50 0,25 0,75 0,50 0,25 kiện và in kết quả End; Readln; End.