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 (2
a. 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;
1
phâ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)
1ì
› 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
Lư
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 j
end;
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])andq
k:=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