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

de thi thu HSG tin hoc

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 (91.96 KB, 5 trang )

Trờng THPT Nguyễn Huệ
Năm học 2008 - 2009
Đề thi chọn học sinh giỏi cấp trờng

Môn: Tin học 12
Thời gian làm bài: 150 phút
Câu 1. Viết chơng trình đọc tệp có tên là SN.Dat chứa 100 số nguyên đợc chia
thành 10 hàng 10 cột mỗi số có giá trị tuyệt đối không vợt quá 1000. Đa ra màn hình
các yêu cầu sau:
- Các số nguyên tố (nếu có trong tệp), mối hàng chỉ đợc phép in 10 số mỗi số
cách nhau 3 dấu cách.
- Các số hoàn hảo (nếu có trong tệp), mỗi hàng cũng chỉ đợc phép in 10 số mỗi
số cách nhau 3 dấu cách.
- Kết quả đa vào tệp NT.DAT nếu là các số nguyên tố, đa vào tệp HH.DAT nếu
là số hoàn hảo. Trên các tệp này mỗi dòng ghi 10 số.
(Biết rằng số hoàn hảo là số mà tổng các ớc của nó bằng chính nó VD 6 = 3+2+1
vậy số 6 là số hoàn hảo)
Câu 2. Ngời ta xâu N viên đá quý kích thớc giống nhâu thành một vòng đeo cổ
(5 N 120) , mỗi viên có một màu trong số các màu đợc đánh số từ 1 đến 9. Để tăng
tính độc đáo cho vòng trang sức quý này, ngời ta định lắp khoá đeo vào vị trí sao
cho khi mở vòng ta đợc một dây đá quý có tính chất: không phụ thuộc vào việc cầm
đầu dây nào bên tay phải và đầu kia bên tay trái, ta đều đợc một chuỗi hạt giống
nhau, tức là viên đá thứ i từ trái sang luôn có màu j không phụ thuộc vào cách cầm.
Xâu S: 2 2 2 2 2 2 3 3 5 5 3 3
2

Cách đặt khoá thứ 1:
Cách đặt khoá thứ 2:

2
5



2

2

2

2
3

2
3

3

2

3

5

3
2

2

2

5
2


3
3

2

2

5

5

3

3

3

2

2

2

2

3

3


5

Yêu cầu:
- Nhập dữ liệu vào từ bàn phím số lợng hạt kim cơng thứ tự các hạt để xâu vào
chuỗi hạt.
- Tìm vị trí có thể để đặt khoá thoả mãn yêu cầu trên.
Câu 3. Trong hệ trục toạ độ Oxy cho N đờng tròn bằng nhau có các tâm O1, O2,,
ON , bán kính R. Hệ đờng tròn trên đợc gọi là chuẩn nếu nếu các đờng tròn trên đôi
một không chồng lên nhau(hai đờng tròn có thể tiếp xúc nhau)
Viết chơng trình kiểm tra hệ đờng tròn có chuẩn hay không?
Dữ liệu: cho trong File INP.DAT
+ Dòng 1: ghi số N là số lợng đờng tròn và bán kính R.
+ N dòng tiếp theo mỗi dòng ghi hai số nguyên xi và yi là toạ độ của Oi
Dữ liệu là các số nguyên, các số nghi trên cùng một dòng cách nhau ít nhất 1 dấu
cách.
Ví dụ:
- INP.DAT
Kết quả:
- INP.DAT
Kết quả:
53
Hệ đờng tròn
4 10
Hệ không chuẩn chuẩn:
00
00
11
06
10 10
10 20

-9 7
-8 3
-2 -10
--------------------------------------- Hết -----------------------------------Giám thị không giải thích gì thêm


Học sinh làm trên máy tính mỗi câu một chơng trình và lu vào đĩa mền.


Đề thi chọn học sinh giỏi trờng
Năm học 2008 2009
--------------------------------Đáp án và biểu điểm
Câu 1. 6đ
Khai báo các biến hợp lệ, tổ chức đọc dữ liệu từ tệp đúng, song kết quả còn
sai : 1đ
Đọc tệp SN.DAT đa ra các số nguyên tố trên màn hình và ghi vào tệp NT.DAT :
2,5đ
Đọc tệp SN.DAT đa ra các số hoàn hảo trên màn hình và ghi vào tệp HH.DAT :
2,5đ
Câu 2. 7đ
Khai báo các biến hợp lệ, nhập đợc dữ liệu từ bàn phím, song kết quả còn sai :

Chỉ ra đợc các vị trí đặt khoá : 5đ
Câu 3. 7 đ
Khai báo các biến hợp lệ, tổ chức đọc dữ liệu từ tệp đúng, song kết quả còn
sai : 2đ
Thuật toán bằng NNLT Pascal thể hiện thuật toán cho kết quả đúng : 5 đ
Lời giả cụ thể cho các bài toán nh sau:
(Các bài toán đợc viêt trên NNLT Pascal)
Bài 1:

Program bai1;
Uses Crt;
Var A,b,c: Array[1..100] of integer;
N,i,j ,M,t,tong,k,l : Integer;
f1,f,f2: text;
Begin clrscr;
Assign(f,'C:\sn.dat');
reset(f);
Readln(f,N,M);
i:=0;
{$I+};
if IOresult <>0 then halt;
for i:=1 to N do
Begin
for j:=1 to M do
read(f,a[(i-1)*N+j]);
readln(f);
End;
close(f);
Assign(f1,'C:\HH.dat');
rewrite(f1);
t:=0;
WRITELN('KET QUA DOC TEP:');
For i:=1 to N do
Begin
for j:=1 to M do
Begin tong:=0;
write(A[(i-1)*N+j]:3);
for k:=1 to A[(i-1)*N+j]-1 do
if A[(i-1)*N+j] mod k =0 then tong:=tong+k;



if tong=A[(i-1)*N+j] then
begin
t:=t+1;
c[t]:=A[(i-1)*N+j] ;
write(f1,c[t]:5);
if t mod 10 =0 then writeln(f1);
end;
end;
writeln;
End;
Writeln('CAC SO HOAN HAO LA');
Assign(f2,'C:\NT.dat');
rewrite(f2);
for i:=1 to t do
begin
Write(c[i]:3);
if i mod 10 = 0 then writeln;
end; l:=0;
For i:=1 to N do
Begin
for j:=1 to M do
if abs(A[(i-1)*N+j])>1 then
Begin
t:=2;
k:= TRUNc(SQRT(A[(i-1)*N+j]));
While (A[(i-1)*N+j] mod t<>0)and (t<=k) do
t:=t+1;
if t>k then

begin
l:=l+1;
B[l]:=A[(i-1)*N+j] ;
write(f2,B[l]:2);
if l mod 10 =0 then writeln(f2);
end;
end;
End;
Writeln('CAC SO NGUYEN TO LA:');
for i:=1 to L do
begin
write(b[i]:3);
if i mod 10 = 0 then writeln;
end;
close(f1);
close(f2);
Readln
End.
Bµi 2.
Program cau2;
Uses crt;
Var A:array[1..50] of string;
ct:array[1..9]of byte;
i,j,n:byte; s,p:string[120]; h:string[240];
Begin
clrscr;


write('So vien da quy: '); readln(n);
write('So chi thi mau: '); readln(s);

h:=s+s;
for i:=1 to 2*n do
begin a[i]:=copy(h,i,n);
h:=s+s; end;
writeln('cac vi tri co then lap:');
for j:=1 to 2*n do
begin p:='';
for i:=n downto 1 do p:=p+a[j][i];
if p=a[j] then writeln('giua ',j-1,' va ',j);
end;
readln
end.
Bµi 3.
Program bai_3;
Uses Crt;
Var n: Byte;
R,i,j : Integer;
C: Array[1..2,1..100] of integer;
Procedure nhap;
Var f: text;
Begin
Assign(f, ‘INP.Dat’);
Reset(f);
Readln(f,n,R);
Fillchar(C,sizeOf(C),0);
For i:=1 to N do
Readln(f, C[1,i], C[2,i]);
Close(f);
End;
Funtion Kiemtra: Boolean;

Begin
Clrscr;
Kiemtra:=false;
If sqr(C[1,i] – C[2,i]) + sqr(C[1,i] – C[2,j])<4*R*R then exit;
Kiemtra:=true;
End;
Begin
Nhap;
IF kiemtra then Writeln(‘He duong tron chuan’)
Else Writeln(‘He duong tron khong chuan’);
Readln;
End.
-------------------------------------------------------------------------------------------------------------------



Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×