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.. Anh Việt có thể có nhiều cách trả tiền để mua mặt hàng đó anh Việt chỉ dù
Trang 1UBND HUYỆN THANH SƠN
PHÒNG GD&ĐT
( Đề thi có 01 trang )
ĐỀ 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 đề )
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:
1.2 2.3 3.4 ( 1)
3.4 4.5 5.6 ( 2)( 3)
n
n n S
+
- 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à 2<N<100 000); đưa ra mà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 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
ĐỀ CHÍNH THỨC
Trang 2PHÒ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:
- 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:
1.2 2.3 3.4 ( 1)
3.4 4.5 5.6 ( 2)( 3)
n
n n S
+
Uses Crt;
Var
n,i:Integer;
s:Real;
0,5
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;
1
s:=0;
Readln
Bộ Test thư
Trang 3Bà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
Uses Crt;
var x,y,i,d:longint;
BEGIN
ClrScr;
d:=0;
Write(‘Nhap so tu nhien x, y =');Readln(x,y);
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 59<y<=121’);
Readln(n);
end;
writeln(‘Cac so le chia het cho 3 thoa man la:');
0,5
0,5
0,5 0,5 for i:=x to y do
if (i mod 2<>0)and(i mod 3=0) then
begin
write(i:6);
d: = d+1; end;
0,5 0,5
0,5 writeln;
writeln('Co tat ca:',d,' so le chia het cho 3');
writeln('Cac so chinh phuong lon hon’, x:4,’va nho hon’, y:4, ‘la: ‘);
d:=0;
For i: = x +1 to y -1 do
IF sqr(trunc(sqrt(i))) = i then
Begin write (I: 7); d:=d+1; end;
writeln; writeln(‘ Co tat ca ‘,d:6,’ so chinh phuong’);
readln;
End.
0,5 0,5 0,5 0,5
0,5
Bộ Test thư
3 64
4 64
Nhap lai x, y thoa man 4<=x< 53 va 59<y<=121 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
Trang 4Bà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à 2<N<100 000); đưa ra mà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
Program tinhtien;
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');
End;
readln;
End.
0.5
0,5 0,5 0,5 1,0 0,5
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
Uses crt;
Var
Trang 5
A: Array[1 100] of Integer;
n,i,j,dem: Byte;
tg: Integer;
function NT(n:longint):boolean;
var i:longint;
Kt:boolean;
begin
Kt:=true;
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
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
End;
Writeln('Mang sau khi da sap xep la');
For i:= 1 to n do Write(a[i]:6);
Writeln;dem:=0;
Writeln('Nhung so nguyen to trong mang la');
For i:=1 to n do
If (a[i]>=2) and NT(a[i]) then
Begin
Write(a[i]:7); dem:= dem+1;
End;
Writeln; Writeln('so phan tu la so nguyen to trong mang la:',dem) ;
Readln;End.
0,5
1,5
0,5
1,5
0,5
0,5 0,5
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