Tải bản đầy đủ (.pdf) (11 trang)

De thi HSG Tin THCS cap tinh Lao Cai 2018

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 (579.15 KB, 11 trang )

SO GIAO DUC VA DAO TAO LAO CAI

_

|ĐÈ CHÍNH THỨC]

KI THI CHON HOC SINH GIOI CAP TINH THCS

NAM 2018

Môn thi: Tin học

(Thời gian làm bài 150 phút không kể thời gian giao đề)
Dé thi gôm: 03 trang, 04 câu

TONG QUAN BAI THI
Cau

Tệp chương trình | Tép dữ liệu vào | Tệp dữ liệu ra | Điểm | Giới hạn

la

CAUIA.SB2

3,0

1b

CAUIB.SB2

2,0



2

CAU2.PAS

CAU2.INP

CAU2.OUT

5,0

0.05s

3

CAU3.PAS

CAU3.INP

CAU3.OUT

6,0

0.05s

4

CAU4.PAS

CAU4.INP


CAU4.OUT

4,0

0.05s

Câu 1 (5,0 điểm).
a. (3,0 điểm) Sử dụng ngơn ngữ lập trình Scratch tạo chương trình vẽ hình khối sau:

b. (2,0 điểm) Sử dụng ngơn ngữ lập trình Scratch xây dựng Game Hứng bóng
theo mơ tả sau:
Game gồm 2 nhân vật một quả bóng và một thanh ngang đỡ bóng (như hình
dưới). Bắt đầu trị chơi băng cách nhấn phím dấu cách.

- Người chơi điều khiến thanh ngang hứng bóng băng các phím mũi tên trái, phải.

- Mỗi lần đỡ được bóng thì được tính 10 điểm (quả bóng biến mắt khi chạm
Trang 1/3


thanh ngang hoặc cạnh dưới sân khẩu).

- Bóng rơi thăng 20 lần liên tiếp từ vị trí bất kì ở cạnh trên sân khấu, sau 20 lần
rơi thì kết thúc trò chơi. Khi kết thúc trò chơi, nếu người chơi được từ 100 điểm trở lên
thì thơng báo người chơi đã thắng, ngược lại thông báo người chơi đã thua.

Câu 2 (5,0 điểm). Cho số nguyên dương N (2a. Hãy đếm số lượng số nguyên tố trong đoạn từ I đến N.
b. Số nguyên dương a được gọi là số hồn hảo nếu tổng các ước thực sự của nó


(trừ a) băng chính nó (Ví dụ: Số 6 là số hồn hảo vì 6 có 3 ước thực sự là 1, 2, 3 và
I+2+3=6). Tính tổng các số hồn hảo trong đoạn từ 1 đến N.
Dữ liệu vào: File vào ghi một số nguyên dương N.
Dữ liệu ra: File ra ghi 2 số nguyên dương được viết cách nhau bởi một dấu cách
là số lượng số nguyên tổ và tổng các số hồn hảo trong đoạn từ 1 đến N.
Ví dụ:

CAU2.INP

CAU2.OUT

10

46

Câu 3. (6,0 điểm)
Viết chương trình nhập họ và tên của một người và thực hiện các yêu cầu sau:
a. Xóa các kí tự trắng thừa trong xâu họ tên (kí tự trắng thừa là kí tự trắng ở đầu,
cuối họ tên và nhiều hơn một kí tự trắng giữa hai từ trong họ tên)

b. Đôi các chữ cái đầu từ trong họ tên thành chữ in hoa

c. Hãy cho biết từ dài nhất trong họ và tên của người đó, nếu có nhiều từ có độ
dai bang nhau thi in ra từ đầu tiên.
d. Cho biết tên được tạo nên từ bao nhiêu chữ cái Tiếng

Anh (không phân biệt

chữ hoa chữ thường)

* Dữ liệu vào: Đọc từ tập tin CAU3.INP có cấu trúc như sau:
- Một dịng ghi họ tên của một người
* Kết quả: Ghi ra tệp văn bản CAU3.OUT với cấu trúc như sau:

- Dong 1: In họ tên sau khi đã xóa hết các kí tự trắng thừa và các chữ cái đầu từ
trong họ tên được viết in hoa;

- Dong 2: In ra tir dai nhat dau tién trong ho tén;

Trang 2/3


- Dòng 3: In ra số lượng chữ cái Tiếng Anh khác nhau được dùng trong họ tên.
Ví dụ:

CAU3.INP
nguyen thi

thu

CAU3.OUT

huong

Nguyen Thi Thu Huong
Nguyen
9

Câu 4 (4,0 điểm)
Cho


mảng

số

nguyên

A

gdm

các

phần

tử

ai,aa,as...am

với

(Ú<=a¡<=9;

1phân tử của mảng A và B có thể giống nhau. Sử dụng ngơn ngữ lập trình Pascal viết
chương trình thực hiện:

a. Tìm số nguyên C nhỏ nhất được ghép từ tất cả các phần tử của mảng A. Biết
số có số khơng (0) đứng đầu không được gọi là số nguyên C. Nếu mảng A chỉ gồm


tồn số 0 thi C=0.
b. Tìm số nguyên D lớn nhất được ghép từ tất cả các phần tử khác nhau lẫy từ
mang A và B (các chữ số của D khác nhau).
* Dữ liệu vào: Đọc từ tép van ban CAU4.INP

- Dong 1: sé phan của mảng A;
- Dòng 2: số phân tử của mang B;
- Dòng 3: giá trị các phần tử của mang A mỗi phần tử cách nhau một kí tự trống
- Dịng 4: giá trị các phần tử của mảng B mỗi phần tử cách nhau một kí tự trống
* Kết quả: Ghi ra tệp văn bản CAU4.OUT với cấu trúc như sau:
- Dòng I: số nguyên C
- Dòng 2: số nguyên D
CAU4.INP
8
II
25740530
23396657955

Họ và tên thí sinh

CAU4.OUT
20034557
987654320

................................----.
ccc- << cccs SBD..............

Lưu ý: - Thí sinh chỉ được sử dụng máy vi tính khơng có kêt nơi mạng khi làm bài.
- Cán bộ coi thi khơng giải thích gì thêm.
Trang 3/3



- SỞ GIÁO DỤC VÀ ĐÀO TẠO _ KÌ THI CHON HOC SINH GIOI CAP TINH THCS
LÀO CAI

NĂM 2018

Môn thỉ: Tin học

- DAP AN DE THI CHINH
THUC

I. Hướng dẫn chấm
1. Phần lập trình Scratch:
- Giám khảo chạy chương trình của thí sinh, so sánh kết quả với chương
trình mẫu và chấm điểm theo thang điểm
Câu

Noi dung

Diem

Xác định được hình cơ sở cân vẽ là hình thoi và vẽ được hình

0.5

thoi co so

la


Xác định đúng được góc quay để vẽ các hình thoi lặp

0,5

Xác định đúng độ dài bước di chuyên

025

để vẽ được đường trịn

trong cùng

|

Xác định được đúng vị trí đặt bút vẽ đâu tiên đê ln vẽ đúng

`
Keay:
`
được hình mơi khi chạy chương trình

Vẽ đúng được hình theo u câu
Tổng điểm câu 1a

0,25
1,5
3,0

Đặt đúng lệnh nhân phím dấu cách để băt đầu chương trình
Thém duoc bién dé tinh diém cho ngudi choi


0,25
0,25

Xác định đúng lệnh để bóng rơi ở vị trí ngẫu nhiên

0,25

Việt đúng lệnh di chuyền giá đỡ băng phím mũi tên bên phải

0,25

Viết đúng đoạn lệnh lặp cho mỗi lân bóng rơi
Ib_ | Viết đúng lệnh tính điểm cho người chơi
Viết đúng lệnh thông báo kết quả chơi

Viết đúng lệnh di chuyển giá đỡ băng phím mũi tên bên trái
Tổng điểm câu 1b

0,25
0,25
0,25
0,25
2,0

2. Phân lập trình Pascal
Cách 1: Giám khảo cho chạy chương trình của thí sinh với lần lượt file input và
so sánh với file out của đáp án, đúng thì cho điểm theo thang điểm khơng đúng
thì khơng cho điểm.
Cách 2: Copy bài thí sinh vào chương trình chấm tự động THEMIS có sẵn

trong đĩa CD, chạy chương trình chấm.

- Chú ý kiểm tra những bài luôn cho một kết quả và những bài bị 0 điểm.

Câu 2: Có 10 test = 0.5 x 10 = 5 điểm
Câu 3: Có 10 test = 10 x 0.6 =6 điểm
Câu 4: Có 10 test = 10 x 0.4 = 4 điểm

Trang 4/3


LÍ. Chương trình tham khảo
Câu 1.

b.

a.

- Đoạn lệnh lập trình cho quả bóng:

when

chcked
when

go to x: Oy: ©
point

ín direcHion cy


space

set

diem

set

dem

key

pressed

es] 0
bes]l0Ị

repeat L20;)

set

pen

color

to

go

repeat Ef)

move

@&

F)

x:

pick

random

@ Zi}

to [2407

¥:

change

dem

repeat

unt

sd L1)

k


steps



turn

to



€T) degrees

touching

gia_do

7?

or

touching

change y by @T)

ó

id

touching
change


define
pen

then

id

- Doan lệnh lập trình cho giá đỡ:

2)


› 6Á

100

steps

s

turn

diem

?

hthoi

down


repeat

gia_do

ca:

60]

degrees

-

move

@&ey

khi

nhấn

phím

phím cách

nhảy tới x:

y: €

steps


"

turn La:

degrees

mũi tên phải

được

nhấn?

thì

x một lượng
mũi tên trải

được

nhấn?

x một lượng

- Đoạn lệnh thông báo:
when

space

key


pressed

forever

if

diem

<

Pt

yg Rat tiéc! Ban thua roi! PCO €) =ec=
eta

Chic mung! Ban đã thẳng

Trang 5/3

T28

thì

edge




Cau 2.

{$MODE OBJFPC}
const fi='CAU2.INP’;
fo=CAU2.OUT;
var N, dem, tong_hh: integer;
f:text;
function NT(a:integer):boolean;

var integer;
begin

ok:boolean;

if (a<2) then ok:=false
else if (a<4) then ok:=true
else

begin

ok:=true;
for 1:=2 to trunc(sqrt(a)) do
if (a mod 1=0) then

begin

end;

ok:=false;
break;

end;


NT:=ok;

end;

function HH(a:integer):boolean;
var 1,tong:integer;
begin
tong:=1;
for 1:=2 to trunc(sqrt(a)) do
if (a mod 1=0) then

tong:=tong+i+(a div 1);
if tong=a then HH:=true

else HH:=false;
end;

procedure doc;
begin

end;

assign(f,fi);
reset(f);
readIn(f,N);
close(f);

procedure xull;
var j:integer;

begin
dem:=0;

Trang 6/3


tong_hh:=0;
for j:=2 to N do
begin

if (NTQG)) then dem:=dem+1;

end;

end;

1ƒ (HH()) then tong_hh:=tong_ hh+];

procedure ghi;
begin

assign(f,fo);
rewrite(f);
write(f,dem,' ',tong_hh);
close(f);

end;
BEGIN
doc;
xuli;


ghi;

END.
Cau 3.
{$MODE OBJFPC}

program CAU3;
uses crt;
var s,s 1:string;

dem:array['A’..'Z'| of byte;

tumax:string[20];
1,],d: byte;
kt:boolean;
ch:char;
fi,fo:text;
BEGIN

assign(fi,, CAU3. INP’);

reset(fi);

read(fi,s);

close(f);

assienfđo,CAU3.OUT);


rewrite(fo);
{chuan hoa}
while s[1]=' ' do delete(s,1,1);

while s[length(s)]=' ' do delete(s,length(s),1);
while pos(_ ',s)<>0 do delete(s,Pos(’ ',s),1);
s[1]:=upcase(s[1]):

for i:=1 to length(s) do

if (s[iJ=' ') and (s[i+1]<>") then s[i+1 ]:=upcase(s[i+1])
Trang 7/3


writeln(fo,s);
{tu max}
Sl:=st+'';

while pos(#32,s1)<>0O do
begin

if (pos(#32,s1)>length(tumax)) then
tumax:=copy(s1,1,pos(#32,s1));
delete(s1,1,Pos(#32,s1));

end;
writeln(fo,tumax);
{dem so ki tu khac nhau}
d:=0;
for ch:='A' to 'Z' do dem[ch]:=0;


for j:=1 to length(s) do s[j]:=upcase(s[j]);
for j:=1 to length(s) do

if s[j] in ['A’..'Z'] then dem[s[j]]:=dem[s[j]]+1;
for ch:='A' to 'Z' do
if (dem[ch]>0) then d:=d+1;
writeln(fo,d);
close(fo);

end.
Cau 4.
{$MODE OBJFPC}

type mang=array[1..1001] of byte;
const fi='CAU4. INP’;
fo=CAU4.OUT;
var m,n,1:integer;
a, b:mang;

d:array[1..10] of byte;
f:text;

procedure doc;
begin

end;

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

readIn(f,m);
readIn(f,n);
for 1:=1 to m do read(f,a[i]);
readln(f);
for 1:=1 to n do read(f,b[1]);
close(f);

procedure Qsort1 (1,r:integer);
var j,k:integer;
Trang 8/3


begin

x,tg:byte;
x:=a[(+r)div 2];

poh

k:=r;

repeat

while a[j]while a[k]>x do k:=k-1;

if }<=k then
begin

tg:=alj];

a[j]:=a[k];
a[k]:=tg;

J:=Jj+l:;

k:=k-1;

end;
until }>k;

if j
if k>] then Qsort1(1,k);

end;
procedure Qsort2(var c:mang;l,r:integer);

var j,k:integer;
x,tg:byte;
begin

x:=c|(l+r)dIv 2];

poh

k:=r;

repeat
while c[j]>x do j:=j+1;


while c[k]
if }<=k then
begin

tg:=clj];

c[J]:=c[k]:
c[k]:=tg;
1:=J+]:
k:=k-1;
end;

until }>k;

if jend;

if k>] then Qsort2(c,1,k);

procedure SoMin;
begin
Qsort1(1,m);
Trang 9/3


i=l;
while (a[i]=0)and(I<=m) do 1:=I+];
if 1>m then writeln(f,0)
else

if (i<>1) then

begin

al 1]:=a[i];
a[i]:=0;

end;

end;
for 1:=1 to m do write(f,a[i]);
writeln(f);

procedure SoMax;
var j,k:integer;
begin

Qsort2(a,1,m);
Qsort2(b, 1,n);

i=l;
j:=1;k:=0;

while (i<=m)and(j<=n) do

begin

while (a[i]=a[i+1])and(i
while (b[j]=b[j+1])andq


k:=k+1;
if a[i]>b[j] then

begin
end
else

d[k]:=a[Hl:

1:=I+Ï;

if a[i]
begin
end
else

d[k]:=b[j]:

J=j+l:
begin

d{k]:=a[i];

L:=i+1;

end;

J=I*l:


end;
while (i<=m) do

begin

while (a[i]Ea[i+1 ])and(Trang 10/3


k:=k+1;
d[k|:=a[1];
1:=I+];
end;

while (J<=n) do
begin
while (b[j]=b[j+1])andqk:=k+1;

d[k]:=b[j]:

J=j+l:

end;
for 1:=1 to k do write(f,d[1]);
end;

procedure ghi;
begin


assign(f,fo);
rewrite(f);
SoMin;
SoMax;
close(f);

end;
BEGIN
doc;

ghi;

END.

Trang 11/3



×