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

Đề thi và đáp án thi chọn học sinh giỏi tin học lớp 12, năm học 2012 2 13 (vòng 1) (2)

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 (96.93 KB, 3 trang )

Sở GD&ĐT
Quảng bình

kỳ thi CHọN học sinh giỏi cấp tỉnh lớp 12 THPT
năm học 2012 - 2013
Môn thi: tin học - Vòng i

hớng dẫn chấm

I. Phng phỏp:
- Giỏm kho to b d liu vo, tớnh toỏn kt qu. Thc hin chng trỡnh ca
hc sinh v so sỏnh kt qu.
- Giỏm kho cú th s dng chng trỡnh gi ý di õy tớnh toỏn kt qu
ca d liu vo.
- Chng trỡnh hc sinh ỳng mt b test, giỏm kho cho 0,5 im. Nh vy,
nu mt cõu cú 3 im thỡ giỏm kho phi to 6 b test.
- Vi mi cõu, giỏm kho phi to c ớt nht mt b test cú khụng gian d
liu ln.
- Riờng Cõu 1, th t sp xp ca HS cú th khỏc vi ỏp ỏn. Nu kt qu ca
hc sinh khỏc ỏp ỏn nhng vn ỳng thỡ giỏm kho vn cho im ti a.
II. Chng trỡnh gi ý:
Cõu 1: (3,0 im) Sp xp xõu
program sap;
const f1='sapxau.inp';
f2='sapxau.out';
type mm=array[1..20] of string;
var a:mm;
s,st,tg:string;
d:integer;
f:text;
procedure doc;


begin
assign(f,f1);
reset(f);
readln(f,s);
close(f);
end;
procedure xl;
var x,j,i:integer;
n:byte;
begin
n:=length(s);
while s[1]=' ' do delete(s,1,1);
while s[n]=' ' do delete(s,n,1);
x:=pos(' ',s);
while x>0 do
begin
delete(s,x,1);
x:=pos(' ',s);
end;
s:=s+' ';
for i:=1 to 20 do a[i]:='';
i:=0;
while s<>'' do
begin
i:=i+1;
a[i]:=copy(s,1,pos(' ',s)-1);
delete(s,1,pos(' ',s));
end;
d:=i;
{

for j:=1 to d do
begin
i:=1;st:='';
while (s[i]<>' ')do

1


begin
st:=st+s[i];
i:=i+1;
end;
delete(s,1,i);
a[j]:=a[j]+st;

end;}
for i:=1 to d-1 do
for j:=i+1 to d do
if length(a[i])>length(a[j]) then
begin
tg:=a[i];a[i]:=a[j];a[j]:=tg;
end;
end;
procedure xuat;
var i:integer;
begin
assign(f,f2);
rewrite(f);
for i:=1 to d do write(f,a[i],' ');
close(f);

end;
begin
doc;xl;xuat;
end.

Câu 2: (3,5 điểm) Dãy con liên tiếp

program day_con;
const fi='daycon.inp';
f0='daycon.out';
type mm=array[1..10000] of integer;
var f:text;
a:mm;
n,m:integer;
procedure doc;
var i:integer ;
begin
assign(f,fi);
reset(f);
read(f,n,m);
for i:=1 to n do read(f,a[i]);
close(f);
end;
procedure xuli;
var i,j,l:integer;
t:longint;
kt:boolean;
begin
assign(f,f0);
rewrite(f);

kt:=false;
for i:=1 to n do
begin
j:=i;
t:=0;
while (tbegin
t:=t+a[j];
j:=j+1;
end;
if t=m then
begin
kt:=true;
for l:=i to j-1 do write(f,a[l],' ');
writeln(f);

2


end;
begin

doc;

end;
end;
if kt=false then write(f,0);
close(f);
xuli;


end.

Câu 3: (3,5 điểm) Đếm nhóm bạn trong Hội trại
const

fi='nhomban.inp';
fo='nhomban.out';
maxn=100;
type mhc=array[1..maxn,1..maxn] of byte;
mmc=array[1..maxn] of byte;
var a:mhc;
b:mmc;
n,stp:integer;
f:text;
Procedure
doc;
var i,j:integer;
Begin
assign(f,fi);
reset(f);
readln(f,n);
for i:=1 to n do
begin
for j:=1 to n do read(f,a[i,j]);
readln(f);
end;
close(f);
End;
Procedure xl;
var i,j,k:integer;

Begin
for i:=1 to n do b[i]:=n+1;
stp:=0;
for k:=1 to n do
begin
if b[k]=n+1 then
begin
stp:=stp+1;
b[k]:=stp;
end;
for i:=1 to n do
begin
if b[i] = stp then
for j:=1 to n do
if (a[i,j]=1) and (b[j]=n+1) then b[j]:=stp;
end;
end;
end;
procedure xuatstp;
begin
assign(f,fo);
rewrite(f);
writeln(f,stp);
close(f);
end;
Begin
doc; xl;
xuatstp;
End.


3



×