1. Trang chủ
  2. » Giáo án - Bài giảng

Đề 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)

3 202 0

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 3
Dung lượng 47 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Phương pháp: - Giám khảo tạo bộ dữ liệu vào, tính toán kết quả.. Thực hiện chương trình của học sinh và so sánh kết quả.. - Giám khảo có thể sử dụng chương trình gợi ý dưới đây để tính t

Trang 1

Së GD&§T kú thi CHäN häc sinh giái cÊp tØnh líp 12 THPT Qu¶ng b×nh n¨m häc 2012 - 2013

M«n thi: tin häc - Vßng i

híng dÉn chÊm

I Phương pháp:

- Giám khảo tạo bộ dữ liệu vào, tính toán kết quả Thực hiện chương trình của học sinh và so sánh kết quả.

- Giám khảo có thể sử dụng chương trình gợi ý dưới đây để tính toán kết quả của dữ liệu vào.

- Chương trình học sinh đúng một bộ test, giám khảo cho 0,5 điểm Như vậy, nếu một câu có 3 điểm thì giám khảo phải tạo 6 bộ test.

- Với mỗi câu, giám khảo phải tạo được ít nhất một bộ test có không gian dữ liệu lớn.

- Riêng Câu 1, thứ tự sắp xếp của HS có thể khác với đáp án Nếu kết quả của học sinh khác đáp án nhưng vẫn đúng thì giám khảo vẫn cho điểm tối đa.

II Chương trình gợi ý:

Câu 1: (3,0 điểm) Sắp xếp 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

Trang 2

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 (t<m )and (j<=n) do

begin

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);

Trang 3

end;

end;

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

close(f);

end;

begin

doc; 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

Ngày đăng: 11/10/2015, 13:18

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w