Đề thi học sinh giỏi lớp 9 môn Tin Học năm 2011-2012
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.