You are on page 1of 6

PHÒNG GD & ĐT KỲ THI CHỌN HSG CẤP HUYỆN LỚP 9

HUYỆN ĐỒNG XUÂN MÔN: TIN HỌC


NĂM HỌC: 2016 - 2017
ĐỀ CHÍNH THỨC
Ngày thi: 07-12-2016
(Đề có 2 trang) Thời gian làm bài: 150 phút ( không kể thời gian phát đề)

Chú ý :
- Mỗi thí sinh tạo một Folder có tên là: HSG_<Số báo danh của thí sinh> chứa
trong D:\ và lưu các file sau vào đúng Folder vừa tạo.
- Tạo tệp tin tên BAI1.PAS; BAI2.PAS; BAI3.PAS; BAI4.PAS tương ứng với
Bài 1; Bài 2; Bài 3; Bài 4.
* Chú ý: Riêng bài 4 có 02 tệp DAYSO.INP và KETQUA.OUT vẫn lưu vào
thư mục nói trên.

Bài 1: (6 điểm)
Viết chương trình nhập từ bàn phím hai số tự nhiên A, B ( A, B  30 ). Hãy in ra
màn hình
a/ Giá trị tuyệt đối của A3  B 3
b/ Giá trị của biểu thức ( A  B) 2 .(2 A  1)
Ví dụ:

INPUT OUTPUT
Nhap so A: 3 Gia tri tuyet doi la: 189
Nhap so B: 6 Gia tri cua bieu thuc la: 405

Nhap so A: 11 Gia tri tuyet doi la: 6669


Nhap so B: 20 Gia tri cua bieu thuc la: 20181

Bài 2: (6,0 điểm)


Viết chương trình nhập từ bàn phím số nguyên N (-1000 < N < 1000). Sau đó in
ra màn hình các ước nguyên dương của N.
Ví dụ:

INPUT OUTPUT
Nhap so N: 20 1 2 4 5 10 20

Nhap so M: -45 1 3 5 9 15 45

1
Bài 3: (4,0 điểm)
Viết chương trình nhập một dãy số nguyên có n phần tử khác nhau (với n là số
tự nhiên được nhập từ bàn phím). Sau đó in ra màn hình
a. Các số vừa nhập trong dãy theo thứ tự tăng dần.
b. Hãy tìm khoảng cách lớn nhất của số m với các số trong dãy số ban đầu và vị
trí của số đó trong dãy (với m là số nguyên được nhập từ bàn phím). Trong trường hợp
khoảng cách của số m đến hai số trong dãy số bằng nhau thì chọn vị trí của số đầu tiên
Ví dụ:

INPUT OUTPUT
Nhap so n: 4
5 -7 11 9 -7 5 9 11

Nhap m: 10 Khoang cach: 17


Vi tri trong day: 2

Nhap so n: 6
3 15 9 -20 -5 20 -20 -5 3 9 15 20

Nhap m: 0 Khoang cach: 20


Vi tri trong day: 4

Bài 4: (4,0 điểm)


Cho một dãy các số tự nhiên khác 0 từ tệp DAYSO.INP. Hãy tìm các số là lập
phương của một số tự nhiên và đưa kết quả vào tệp KETQUA.OUT. Trong trường hợp
không có số nào thì ghi 0.

Ví dụ:
DAYSO.INP KETQUA.OUT
7
12 8 45 125 47 16 64 8 125 64

Giải thích:
Tệp DAYSO.INP
Dòng 1: là số phần tử của dãy.
Dòng 2: là giá trị của các phần tử.
Tệp KETQUA.OUT
Dòng 1: Các số là lập phương của số tự nhiên.

2
ĐÁP ÁN
Bài 1 (6đ) Điểm chi tiết
program Bai1;
uses crt;
var a,b: integer;
begin
clrscr;
write('Nhap hai so a='); readln(a); 2
write('Nhap hai so b='); readln(b);
{Cau a}
writeln('Gia tri tuyet doi : ',abs((a*a*a) - (b*b*b))); 2
{cau b}
writeln('Gia tri cua bieu thuc: ',((a+b)*(a+b))*(2*a-1));
readln; 2
end.
Bài 2(6đ)
program BAI2;
uses crt;
var n,i :integer;

begin
clrscr; 2
write('nhap so N = '); readln(n);

for i:=1 to abs(n) do 4


if i<>0 then
if n mod i =0 then write(i,' ');
readln;
end.
Bài 3(4đ)
program dayso; 1
uses crt;
var a,b: array[1..100] of integer;
i,j,m,n,kc: integer;
procedure nhap;

begin
for i:=1 to n do
begin
write('a[',i,']= '); readln(a[i]);
end;
end;

procedure sapxep; 1
var
3
tam: integer;
begin

for i:=1 to n do b[i]:=a[i];

for i:= 1 to n-1 do


begin
for j:= i+1 to n do
if b[i]>=b[j] then
begin
tam:= b[j];
b[j]:= b[i];
b[i]:= tam;
end;
end;

for i:= 1 to n do
write(b[i],' ');
writeln;
end;
1
procedure timkhoangcach;
var min, k: integer;
begin
min:= a[1]; k:=1;
for i:=2 to n do
if min>a[i] then
begin
min:= a[i];
k:= i;
end;
writeln('Khoang cach: ',abs(m-a[k]));
writeln('Vi tri trong day: ',k);
end;

begin
clrscr; 1
write('nhap so n: '); readln(n);
nhap;
sapxep;
write('Nhap so m: '); readln(m);
timkhoangcach;
readln;
end.

4
Bài 4(4đ)
program bai4; 1

uses crt;
var f1,f2: text;
a,b: array[1..100] of integer;
j,n: integer;

procedure doctep;
var i: integer;
begin
assign(f1,'E:\DAYSO.INP');
{REWRITE(f1);}
reset(f1);
readln(f1,n);
for i:=1 to n do
read(f1,a[i]);
close(f1);
for i:=1 to n do write(a[i],' ');
end;

function kiemtra(k:integer):boolean; 1.5


var kt: boolean;
i: integer;
begin
kt:= false;
for i:=1 to k do
if i*i*i = k then kt:= true;
kiemtra:= kt;
end;

procedure xuly;
var i: integer;
begin
j:=0;

for i:= 1 to n do

if kiemtra(a[i])= true then


begin
inc(j);
b[j]:= a[i];
end;
for i:=1 to J do write(a[i],' ');

end;

5
procedure ghitep; 1
var i: integer;
begin
assign(f2,'E:\KETQUA.OUT');
rewrite(f2);

if j=0 then write(f2,0)


else
for i:= 1 to j do
write(f2,b[i],' ');
close(f2);
end;

begin
clrscr; 0.5
doctep;
xuly;
ghitep;
readln;
end.

You might also like