HỘI THI TIN HỌC TRẺ KC
NĂM 2012
ĐỀ THI PHẦN THỰC HÀNH
BẢNG B - THCS
Thời gian làm bài: 120 phút
Ngày thi: 30-03-2012
YÊU CẦU CHUNG:
- Nếu thí sinh không sử dụng tệp dữ liệu vào ra, có thể nhập dữ liệu từ bàn
phím và xuất kết quả ra màn hình.
- Tạo thư mục với tên theo quy định C2_SBD trong ổ D:\ (trong đó SBD là số
báo danh của thí sinh). Các bài làm của thí sinh phải lưu trong thư mục này.
- Sử dụng ngôn ngữ lập trình Turbo Pascal hoặc Free Pascal để viết chương
trình. Đặt tên các bài làm và tên tệp dữ liệu theo quy định trong bảng sau:
Stt
Bài
Quy định đặt tên tệp
Quy định tên tệp
Quy định tên tệp
chương trình
dữ liệu vào
dữ liệu ra
1
Bài 1
Bai1.Pas
Nhập từ bàn phím
Xuất ra màn hình
2
Bài 2
Bai2.Pas
- Dòng 3 ghi tổng của các số chính phương trong dãy.
Ví dụ:
Nhập từ bàn phím
Xuất ra màn hình
N=7
4 100 25 36
11 4 100 5 25 36 10
4
165
Bài 3: (20 điểm)
Viết chương trình phân tích một số nguyên dương ra thừa số nguyên tố.
1
Dữ liệu vào: Nhập từ bàn phím số nguyên dương N
Kết quả ra: Xuất ra màn hình
Ví dụ:
Nhập từ bàn phím
Xuất ra màn hình
100
100│2
50│2
25│5
5│5
1│
Bài 4: (20 điểm) TỔNG CÁC SỐ FIBONACI
Dãy Fibonaci là dãy gồm các số: 1, 1, 2, 3, 5, 8, .... được xác định bởi công
thức sau:
F1=1, F2=1, Fi=Fi-1+Fi-2 với i>2.
Em hãy biểu diễn một số tự nhiên N thành tổng của ít nhất các số Fibonaci
Nhập từ bàn phím
Xuất ra màn hình
4
33
PROGRAM TONG_GT;
USES CRT;
VAR TAM,I,N,S:INTEGER;
BEGIN
CLRSCR;
WRITELN(CHUONG TRINH TINH TONG S=1+1.2+1.2.3+..+1.2.3...N LA');
WRITE(‘NHAP VAO MOT SO: ‘);READLN(N);
S:=0;
TAM:=1;
FOR I:=1 TO N DO
BEGIN
TAM:=TAM*I;
S:=S+TAM;
END;
WRITE('TONG S= ',S);
WRITELN(‘DA XU LY XONG !’);
READLN;
END.
Bài 2: (20 điểm):
Số chính phương là một số nguyên có căn bậc hai là một số nguyên (ví dụ: 9 là
số chính phương vì 9 =3). Viết chương trình tìm, đếm và tính tổng các số chính
phương có trong dãy số nguyên dương gồm N phần tử A1, A2, …, AN.
Dữ liệu vào: Nhập từ bàn phím.
Kết quả ra: Xuất ra màn hình gồm 3 dòng:
- Dòng 1 ghi các số chính phương của dãy giữ nguyên thứ tự xuất hiện (mỗi số
WRITE(‘A[‘,I,’]: ‘);READLN(a[i]);
END;
end;
begin
clrscr;
NHAPMANG;
dem:=0;
tong:=0;
for i:=1 to n do
begin
if kt_cp(a[i]) then
begin
dem:=dem+1;
write(a[i]:5);
tong:=tong+a[i];
end;
end;
writeln(dem);
writeln(tong);
writeln('da xu ly xong');
readln;
end.
Bài 3: (20 điểm)
Viết chương trình phân tích một số nguyên dương ra thừa số nguyên tố.
Dữ liệu vào: Nhập từ bàn phím số nguyên dương N
Kết quả ra: Xuất ra màn hình
Ví dụ:
Nhập từ bàn phím
Xuất ra màn hình
100
Dữ liệu vào: Nhập từ bàn phím số N (N ≤ 2000000000)
Dữ liệu ra: Xuất ra màn hình
Ví dụ:
Nhập từ bàn phím
Xuất ra màn hình
129
129 = 89 + 34 + 5 + 1
Hoặc
Nhập từ bàn phím
8
Xuất ra màn hình
8=8
program tong_fibonanci;
Uses crt;
var i,j,n:integer;
a:array[1..1000] of longint;
function fib(k:integer):longint;
begin
a[1]:=1;
a[2]:=1;
a[3]:=2;
if a[k]=-1 then a[k]:=fib(k-1)+fib(k-2);
fib:=a[k];
end;
begin
clrscr;
write(‘NHAP VAO MOT SO: ’);READLN(N);
for i:=1 to 1000 do a[i]:=-1;
STT
Tên bai
1
PHƯƠNG TRÌNH
2
SỐNGUYÊN TỐ
3
NÉN XÂU
4
CẤP SỐCỘNG
Thời gian : 150 phút (không kể thời gian giao đề)
Ngày thi : 18/2/2011
Tên file bai lam
BAI1.PAS
BAI2.PAS
BAI3.PAS
BAI4.PAS
Tên file INPUT
Nhập từ ban phím
Nhập từ ban phím
Nhập từ ban phím
Nhập từ ban phím
Tên file OUTPUT
Xuât ra man hình
Xuât ra man hình
Xuât ra man hình
Xuât ra man hình
Dữ liệu vào: Nhập từ bàn phím:
+ Dòng đầu ghi số nguyên dương M, N (M, N
READLN;
END.
Bài 2:
program so_nguyen_to;
uses crt;
var a:array[1..100] of integer;
tong,dem,i,n:integer;
function ktnt(k:integer):boolean;
var i:integer;
begin
ktnt:=false;
if k
begin
if length(s)>1 then write (length(s));
write(s[1]);
s:=st[i];
end;
if length (s)=1 then write(s)
else write (length(s),s[1]);
writeln('da xu ly xong');
readln;
end.
Bài 4:
PROGRAM CT;
USES CRT;
TYPE mang=array[1..100,1..100] of integer;
Var TAM,I,J,CS,D,M,N:integer;
A:mang;
KTCS:BYTE;
B:ARRAY[1..100] OF INTEGER;
{------------------------------}
Procedure nhapmang(Var A:Mang);
Begin
Write(‘Cho biet so cot: ‘);readln(n);
Write(‘Cho biet so dong: ‘);readln(m);
For i:=1 to n do
For j:=1 to m do
BEGIN
Write(‘a[‘,I,’]: ‘);Readln(A[i,j]);
END;
End;
{-------------------------------}
BEGIN
KTCS:=1;
BREAK;
END;
END;
writeln;
if ktcs=1 then writeln('KHONG LAP THANH CAP SO CONG')
else
begin
writeln('LA CAP SO CONG');
writeln('Cong sai: ',CS);
end;
writeln('Da xu ly xong !');
READLN
END.
SỞGIÁO DỤC & ĐÀO TẠO
ĐỀTHI CHÍNH THỨC
(Đề thi có 02 trang, gồm 3 bai)
Câu truc đê thi:
STT
Tên bai
1
FIBONANCI
2
CẤP SỐCỘNG
3
MA TRẬN
4
VD: Nhập N = 10
Xuất: 55
Bai 2: (6 điểm)
Viết chương trình kiểm tra xem một mảng số nguyên cho trước có lập thành
một cấp số cộng hay không ? Nếu có cho biết công sai.
11
Dữ liệu vào: Nhập từ bàn phím:
+ Dòng đầu ghi số nguyên dương N (N
12
----------Hết-----------
BÀI GIẢI
Bài 1:
program xuat_so_fibonanci;
uses crt;
var i,n,s,a,b:integer;
begin
clrscr;
write('nhap vao n:=');readln(n);
b:=1;
i:=2;
a:=1;
while (i
a[i]:=a[k];
a[k]:=tam;
end;
end;
begin {chuong trinh chinh}
nhapmang;
sapxep;
if ktcs then
begin
writeln('La cap so cong');
writeln('Cong sai la ',d:0:2);
end
else
writeln('Khong lap thanh cap so cong');
writeln(‘Da xu ly xong’);
readln;
end.
{------------------------------------}
Bài 3:
program vd;
uses crt;
var a:array[1..100,1..100] of integer;
s:array[1..100] of integer;
n,m,dem,i,j,n:integer;
procedure nhapmang;
begin
write(‘Nhap vao so dong: ‘);readln(m);
write(‘Nhap vao so cot: ‘);readln(n);
for i:=1 to m do
14
TongCacDong;
dem:=0;
writeln;
write('Nhap vao so can tim: ');readln(n);
for i:=1 to m do
for j:=1 to n do
if n=a[i,j] then
begin
dem:=dem+1;
writeln('So ',n,' xuat hien ',dem,' lan tai
dong ',i,' cot ',j);
end;
readln;
end.
{---------------------------------------------------}
Bài 4:
program chuoi;
uses crt;
var s:string[30];
n:array[1..100] of integer;
tong,code,ch,i,j:integer;
15
begin
clrscr;
write('Nhap chuoi: ');readln(s);
writeln('Cac so co trong chuoi vua nhap la:');
ch:=length(s);
1
PHÂN TƯYÊN NGƯA
2
3
SỐNGUYÊN TỐVÀ
SỐFIBONACI
SỐSIÊU NGUYÊN
TỐ
Tên file bai lam
PTYN.PAS
FIBO.PAS
SIEUNT.PAS
Tên file INPUT
Nhập từ ban
phím
Nhập từ ban
phím
Nhập từ ban
phím
Tên file OUTPUT
Xuât ra man hình
Xuât ra man hình
Xuât ra man hình
Bai 1: (6 điểm) PHÂN TƯYÊN NGƯA
Hoặc :
Nhập từ bàn phím
33
15
10
5
55
4
6
76
1
2
Xuất ra nàm hình
Khong co phan tu yen ngua
Bai 2: (7 điểm) SỐNGUYÊN TỐVÀSỐFIBONACI
Dãy FIBONACI là dãy được xác định như sau: F(0) = 0; F(1) = 1 và F(n) = F(n-1) + F(n-2)
với n = 2, 3... Hãy viết chương trình máy tính để nhập từ bàn phím số nguyên dương M
(2
17
CHƯƠNG TRÌNH MẪU
BÀI 1:
Program Phan_tu_yen_ngua;
uses crt;
const
MaxLongInt = 2147483647;
var Min, Max: array[1..5000] of LongInt;
m, n: Integer;
procedure nhapmang;
var i, j, k: Integer;
begin
Write(‘Cho biet so cot: ‘);readln(n);
Write(‘Cho biet so dong: ‘);readln(m);
For i:=1 to n do
For j:=1 to m do
BEGIN
Write(‘a[‘,I,’]: ‘);Readln(A[i,j]);
END;
for i := 1 to n do Min[i] := MaxLongInt;
for j := 1 to m do Max[j] := -MaxLongInt;
for i := 1 to n do
begin
for j := 1 to m do
begin
if Min[i] > a[i,j] then Min[i] := a[i,j];
if Max[j] < a[i,j] then Max[j] := a[i,j];
end;
end.
Bài 2:
uses crt;
var j,i,m,a,b,t:longint;
{----------------------}
Function kt(n:longint):boolean;
var i,d:integer;
begin
kt:=false;
d:=0;
For i:=1 to n do
if n mod i=0 then inc(d);
if d=2 then kt:=true;
end;
{----------------------}
begin
clrscr;
Write('Nhap m= ');readln(m);
a:=0;
b:=1;
Repeat
a:=a+b;
b:=a+b;
Until (a>=m) and (b>=m);
if a
ka:=1;
a[ka]:=0;
For i:=1 to N do
Begin
Kb:=0;
For k:=1 to ka do
For cs:=0 to 9 do
If ktnt(a[k]*10+cs) then
Begin
kb:=kb+1;
b[kb]:=a[k]*10+cs;
end;
ka:=kb;
For k:=1 to ka do
a[k]:=b[k];
end;
For k:=1 to ka do Write(a[k]:10);
Writeln;
Writeln('Co tat ca ',ka,' so sieu nguyen to co ',N,' chu so.');
Readln;
END.
HỘI THI TIN HỌC TRẺKC
NĂM 2012
ĐỀTHI PHÂN THƯC HÀNH
BẢNG B - THCS
20
Nhập vào một số nguyên dương N từ bàn phím (N
if i mod 2=1 then write(a)
else write(b);
readln;
end.
Bài 3:
program phantich_snt;
uses crt;
var i,n,dem:integer;
function ngto(n:integer):boolean;
var i:integer;
begin
ngto:=false;
if (n