Đáp án HSG Tin học lớp 9 Quảng Bình 2017-2018 - Học Toàn Tập

4 17 0
Đáp án HSG Tin học lớp 9 Quảng Bình 2017-2018 - Học Toàn Tập

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

Thông tin tài liệu

- Nếu chương trình của học sinh đưa ra kết quả khác với đáp án của giám khảo nhưng vẫn đúng thì giám khảo cho điểm tối đa của bộ test đó.. - Với mỗi câu, giám khảo phải tạo ít nhất một [r]

(1)

1/3

SỞ GD&ĐT QUẢNG BÌNH KỲ THI CHỌN HỌC SINH GIỎI CẤP TỈNH NĂM HỌC 2017 - 2018

HƯỚNG DẪN CHẤM LỚP - THCS Môn thi: TIN HỌC

(Khóa thi ngày 22 tháng 03 năm 2018)

Thời gian làm bài: 150 phút (không kể thời gian giao đề) I- Phương pháp:

- Giám khảo tạo liệu vào, tính tốn kết Thực chương trình học sinh so sánh kết

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

- Chương trình học sinh test, giám khảo cho 0,5 0.25 điểm Như vậy, câu có điểm giám khảo phải tạo test

- Nếu chương trình học sinh đưa kết khác với đáp án giám khảo nhưng giám khảo cho điểm tối đa test

- Với câu, giám khảo phải tạo test có liệu lớn

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

Câu 1: (3.0 điểm) Đếm ký tự chữ số COUNT.PAS

const fi='countkt.inp'; fo='countkt.out'; var i,j,n,dem:integer; f:text;

xau:string; Procedure doc; begin

assign(f,fi); reset(f); read(f,xau);

close(f); end;

Procedure xuly; begin

assign(f,fo); rewrite(f);

for i:=1 to length(xau) if (xau[i] in ['0' '9']) then inc(dem);

write(F,dem); close(f); end;

BEGIN DOC; XULY; END

Câu 2: (3,0 điểm): Tổng nguyên tố SPRIME.PAS

Program Tong_nguyen_to; const fi='SPRIME.inp'; fo='SPRIME.out'; Var i,n:integer;

f,g:text;

Function NT(n:integer):Boolean; Var ok: Boolean;

(2)

2/3 ok:=true;

For i:=2 to n-1 if (n mod i) = then ok:=ok and false; if n>=2 then NT:=ok else NT:=false;

End; Begin

Assign(f,fi); Reset(f); Read(f,n); Assign(g,fo); Rewrite(g);

For i:=2 to n div if (NT(i) and NT(n-i)) then Writeln(g,n,' = ',i,' + ',n-i);

Close(f); Close(g); End

Câu (2.0 điểm): Bộ tộc CLAN.PAS

{$MODE OBJFPC} {$R+$B-}

const

fi = 'clan.inp'; fo = 'clan.out'; nm = 1000000; var

a : array[1 nm] of longint; n : longint;

f : text; procedure Input; var i:longint; begin

assign(f,fi); reset(f); readln(f,n);

for i:=1 to n read(f,a[i]); close(f);

end;

procedure quick_sort(dau,cuoi:longint); var chot,i,j,tg:longint;

begin

if dau>=cuoi then exit; i:=dau;

j:=cuoi;

chot:=a[(dau+cuoi) div 2]; repeat

while a[i]<chot inc(i); while a[j]>chot dec(j); if i<=j then

begin

tg:=a[i]; a[i]:=a[j]; a[j]:=tg; inc(i); dec(j); end;

until i>j;

quick_sort(dau,j); quick_sort(i,cuoi); end;

(3)

3/3 var i,kq,d:longint;

begin input;

quick_sort(1,n); kq:=0;

d:=1;

for i:=1 to n if a[i]=d then begin

inc(kq); d:=1; end

else inc(d);

assign(f,fo); rewrite(f); writeln(f,kq);

close(f); end;

BEGIN

PROCESS; END

Câu (2.0 điểm): Chữ số thứ N NUMBER.PAS

Const fi ='number.inp'; fo ='number.out';

cs:array[1 8] of longint = (9, 180, 2700, 36000, 450000, 5400000, 63000000, 720000000);

Var n : longint; f,g :text;

Function num(n:longint):char; var k, so, mu : longint; s : string;

Begin

k:=1; mu:=1;

while (k<9)and(cs[k]<n) begin

n:=n-cs[k];

inc(k); mu:=mu*10; end;

if mu=1 then so:=n div k

else so:=n div k+mu+ord(n mod k>0)-1; str(so,s);s:=s[k]+s;

num:=s[n mod k+1]; End;

BEGIN

assign(f,fi); reset(f); assign(g,fo); rewrite(g); while not seekeof(f) begin

readln(f,n);

writeln(g,num(n)); end;

(4)

Ngày đăng: 23/02/2021, 22:29

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan