Tải bản đầy đủ (.doc) (5 trang)

Đề thi đáp án thi học sinh giỏi tin học 9

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (93.9 KB, 5 trang )

UBND HUYỆN THANH SƠN

PHÒNG GD&ĐT
ĐỀ CHÍNH THỨC

ĐỀ THI CHỌN HỌC SINH GIỎI LỚP 9 - THCS CẤP HUYỆN
NĂM HỌC 2012 - 2013
Môn: Tin học

(Thời gian làm bài 150 phút không kể thời gian giao đề )

( Đề thi có 01 trang )

Bài 1 (4,0 điểm). Khởi động chương trình PASCAL, viết chương trình nhập 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:
Sn =

1.2 2.3 3.4
n.(n + 1)
+
+
+ ... +
3.4 4.5 5.6
(n + 2)(n + 3)

- Lưu bài với tên tệp tin: D:\THIHUYEN\B1SBDxxx.pas (trong đó xxx là số
báo danh của thí sinh).
Bài 2 (6,0 điểm). Viết chương trình trên ngôn ngữ lập trình PASCAL, nhập vào hai số
tự nhiên x, y sao cho chương trình chỉ cho nhập các số tự nhiên x, y thỏa mãn 4 ≤ x
< 53 và 59 < y ≤ 121.


- In ra màn hình các số lẻ chia hết cho 3 trong khoảng từ x đến y và đếm có bao
nhiêu số như vậy?
- In ra màn hình các số chính phương m sao cho x < m < y và đếm có bao
nhiêu số m?
- Lưu bài với tên tệp tin: D:\THIHUYEN\B2SBDxxx.pas (trong đó xxx là số
báo danh của thí sinh).
Bài 3 (4,0 điểm). Lập chương trình PASCAL thực hiện yêu cầu sau:
Anh Việt đi chợ mua một mặt hàng có giá trị là N đồng. Trong túi anh Việt có
nhiều tờ tiền với mệnh giá là 100 đồng, 200 đồng và 1000 đồng. Anh Việt có thể có
nhiều cách trả tiền để mua mặt hàng đó (anh Việt chỉ dùng các tờ tiền mà anh có sẵn.
Anh không đưa thừa tiền cho người bán vì người bán không có tiền trả lại).
Yêu cầu: nhập vào từ bàn phím số N (N nguyên và 2hình tất cả các cách trả tiền của anh Việt thỏa mãn. (Mỗi cách trả tiền trên một dòng,
nếu không có cách trả tiền thì không cần thông báo gì; ch¬ng tr×nh kh«ng cÇn
kiÓm tra d÷ liÖu vµo tõ bµn phÝm).
- Lưu bài với tên tệp tin: D:\THIHUYEN\B3SBDxxx.pas (trong đó xxx là số
báo danh của thí sinh).
Bài 4 ( 6,0 điểm). Khởi động chương trình PASCAL, viết chương trình nhập vào một
dãy số nguyên n phần tử, n nhập từ bàn phím.
- In ra màn hình dãy số vừa nhập xếp theo thứ tự tăng dần.
- In ra màn hình các số nguyên tố trong dãy số vừa nhập và đếm xem đã nhập vào bao
nhiêu số nguyên tố.
- Lưu bài với tên tệp tin: D:\THIHUYEN\B4SBDxxx.pas (trong đó xxx là số
báo danh của thí sinh).
––––––––––––––––––– Hết ––––––––––––––––––––
Họ và tên thí sinh ........................................................................... SBD.......
Chú ý: Cán bộ coi thi không giải thích gì thêm


PHÒNG GD&ĐT THANH SƠN

HƯỚNG DẪN CHẤM THI CHỌN HSG LỚP 9 - THCS CẤP HUYỆN
NĂM HỌC 2012 – 2013

Môn: Tin học
Yêu cầu chung:
Yêu cầu chương trình chạy thông suốt.
( 2-3 điểm)
+ Hoàn thành đúng phần khai báo các biến:
(0,25 điểm)
+ Viết đúng chương trình nhập mảng:
(0,25 điểm)
+ Viết đúng thuật toán (cách giải) tính tổng:
(1-2 điểm)
+ Viết đúng thủ tục tạo và ghi kết quả vào tệp:
(0,5 điểm)
- Chương trình chạy cho kết quả đúng (có thể làm theo cách khác đáp án):
khai báo đầy đủ, trình bày có cấu trúc rõ ràng cho điểm tối đa. Không khai báo
mỗi biến trừ 0.25 điểm.
- Chương trình cho kết quả sai: Chỉ chấm phần các ý chính của thuật toán,
mỗi ý đúng cho điểm không vượt quá 40% số điểm của câu.
Bài 1 (4,0 điểm). Khởi động chương trình PASCAL, viết chương trình nhập 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:
Sn =

1.2 2.3 3.4
n.(n + 1)
+
+
+ ... +

3.4 4.5 5.6
(n + 2)(n + 3)

Chương trình tham khảo
Uses Crt;
Var
n,i:Integer;
s:Real;
BEGIN
ClrScr;
Write(‘Nhap so tu nhien n=');Readln(n);
While ((n<=5) OR (n>100) do
Begin
Write(‘Nhap lai n thoa man 5 < n <=100, n = ');Readln(n);
end;
s:=0;
For i:=1 to n do s:=s+i*(i+1)/((i+2)*(i+3));
Write(‘s=’,s:4:3);
Readln
END.
Bộ Test thư
n nhập vào
Kết quả thông báo hoặc kết quả S trên màn hình
4
Nhap lai n thoa man 5 < n <=100, n =
5
1.879
6
2.462
2


Điểm
0,5

1

1,5
0,5
0,5


Bài 2 (6,0 điểm). Viết chương trình trên ngôn ngữ lập trình PASCAL, nhập vào
hai số tự nhiên x, y sao cho chương trình chỉ cho nhập các số tự nhiên x, y thỏa
mãn 4 ≤ x < 53 và 59 < y ≤ 121.
- In ra màn hình các số lẻ chia hết cho 3 trong khoảng từ x đến y và đếm
có bao nhiêu số như vậy.
- In ra màn hình các số chính phương m sao cho x < m < y và đếm có
bao nhiêu số m.
Chương trình tham khảo
Điểm
Uses Crt;
var x,y,i,d:longint;
0,5
BEGIN
ClrScr;
d:=0;
Write(‘Nhap so tu nhien x, y =');Readln(x,y);
0,5
While ((x<4) OR (x>=53) OR ( y<=59) OR (y>121) ) do
Begin

Write(‘Nhap lai x, y thoa man 4<=x< 53 va 590,5
Readln(n);
end;
0,5
writeln(‘Cac so le chia het cho 3 thoa man la:');
for i:=x to y do
0,5
if (i mod 2<>0)and(i mod 3=0) then
begin
0,5
write(i:6);
d: = d+1; end;
0,5
writeln;
writeln('Co tat ca:',d,' so le chia het cho 3');
0,5
writeln('Cac so chinh phuong lon hon’, x:4,’va nho hon’, y:4, ‘la: ‘);
d:=0;
0,5
For i: = x +1 to y -1 do
IF sqr(trunc(sqrt(i))) = i then
0,5
Begin write (I: 7); d:=d+1; end;
writeln; writeln(‘ Co tat ca ‘,d:6,’ so chinh phuong’);
0,5
readln;
End.
0,5
Bộ Test thư

Dữ liệu vào
Dữ liệu ra
3 64
Nhap lai x, y thoa man 4<=x< 53 va 594 64
Cac so le chia het cho 3 thoa man la:
9 15 21 27 33 39 45 51 57 63
Co tat ca: 10 so le chia het cho 3
Cac so chinh phuong lon hon 4 va nho hon 64 la:
9 16 25 36 49
Co tat ca 5 so chinh phuong
3


Bài 3 (4,0 điểm). Lập chương trình thực hiện yêu cầu sau:
Anh Việt đi chợ mua một mặt hàng có giá trị là N đồng. Trong túi anh
Việt có nhiều tờ tiền với mệnh giá là 100 đồng, 200 đồng và 1000 đồng. Anh
Việt có thể có nhiều cách trả tiền để mua mặt hàng đó (anh Việt chỉ dùng các tờ
tiền mà anh có sẵn. Anh không đưa thừa tiền cho người bán vì người bán không
có tiền trả lại).
Yêu cầu: nhập vào từ bàn phím số N (N nguyên và 2màn hình tất cả các cách trả tiền của anh Việt thỏa mãn. (Mỗi cách trả tiền trên
một dòng, nếu không có cách thì không cần thông báo gì)
Lưu bài với tên tập tin: D:\THI\CAPHUYEN\Bai3.pas
Chương trình tham khảo
Program tinhtien;
Var N,K,a,b,c:Longint;
Begin
Write('Vao N='); Readln(N);
K:=0;

If N mod 100=0 Then
For a:=0 to N div 1000 do
For b:=0 to (N-1000*a) div 200 do
Begin c:=(N-1000*a-200*b) div 100;
Writeln(c,' x 100 +',b,' x 200 + ',a,' x 1000');

Điểm
0,5
0.5
0,5
0,5
0,5
1,0
0,5

End;
readln;
End.
Bộ Test thư
Vao N=1000
10 x 100 + 0 x 200 + 0 x 1000
8 x 100 + 1 x 200 + 0 x 1000
6 x 100 + 2 x 200 + 0 x 1000
4 x 100 + 3 x 200 + 0 x 1000
2 x 100 + 4 x 200 + 0 x 1000
0 x 100 + 5 x 200 + 0 x 1000
0 x 100 + 0 x 200 + 1 x 1000

Bài 4 ( 6,0 điểm). Khởi động chương trình PASCAL, viết chương trình nhập vào
một dãy số nguyên n phần tử, n nhập từ bàn phím

- In ra màn hình dãy số vừa nhập xếp theo thứ tự tăng dần.
- In ra màn hình các số nguyên tố trong dãy số vừa nhập và đếm xem đã nhập
vào bao nhiêu số nguyên tố.
Lưu bài với tên tập tin: D:\THI\CAPHUYEN\Bai4.pas
Chương trình tham khảo
Điểm
Uses crt;
Var
4


A: Array[1..100] of Integer;
n,i,j,dem: Byte;
0,5
tg: Integer;
function NT(n:longint):boolean;
var i:longint;
Kt:boolean;
begin
Kt:=true;
1,5
for i:=2 to round(sqrt(n)) do
if n mod i=0 then
Kt:=false;
NT:=Kt;
end;
Begin
Write('Hay nhap vao so phan tu cua mang:');
Readln(n);
For i:= 1 to n do

Begin
0,5
Write('Nhap a[',i,']= '); Readln(a[i]);
End;
For i:= 1 to n-1 do
For j:= i to n do
If a[i]>a[j] then
Begin
1,5
tg:= a[i];
a[i]:=a[j];
a[j]:= tg;
End;
Writeln('Mang sau khi da sap xep la');
For i:= 1 to n do Write(a[i]:6);
Writeln;dem:=0;
0,5
Writeln('Nhung so nguyen to trong mang la');
For i:=1 to n do
If (a[i]>=2) and NT(a[i]) then
Begin
0,5
Write(a[i]:7); dem:= dem+1;
End;
0,5
Writeln; Writeln('so phan tu la so nguyen to trong mang la:',dem) ;
Readln;End.
0,5
Ghi chú: Học sinh có thể không sử dụng chương trình con nhưng chạy đúng
kết quả test vẫn cho điểm tối đa.

Bộ Test thư
N = 6;a[1]=3; a[2]=-12; a[3]=-789; a[4]=71; a[5]=8; a[6]=3456;
Mang sau khi sap xep: -789 -12
3 8 71
3456
Nhung so nguyen to trong mang
3
71
So phan tu la so nguyen to trong mang la: 2

5



×