Đề thi HSG Olympic Tin học Bình Dương SỞ GIÁO DỤC VÀ ĐÀO TẠO BÌNH DƯƠNG ĐỀ CHÍNH THỨC ĐỀ THI HỌC SINH GIỎI BẬC THCS MÔN: TIN HỌC Thời gian: 180 phút (không kể thời gian phát đề) Bài 1: Cho trước số tự nhiên N. Viết chương trình in ra số nguyên tố lớn nhất không vượt
Trang 1SỞ GIÁO DỤC VÀ ĐÀO TẠO
BÌNH DƯƠNG
ĐỀ CHÍNH THỨC
ĐỀ THI HỌC SINH GIỎI BẬC THCS
MÔN: TIN HỌC
Thời gian: 180 phút (không kể thời gian phát đề)
Trang 2Bài 1: Cho trước số tự nhiên N Viết chương trình in ra số nguyên tố lớn nhất
không vượt quá N
Bài 2: Viết thủ tục Compare(S1,S2:String;Var Kq:String) thực hiện công việc
sau: so sánh hai xâu S1 và S2, tìm ra tất cả các ký tự có trong cả hai xâu trên Xâu KQ sẽ chứa tất cả các kí tự đó, mỗi kí tự chỉ được nhớ một lần
Bài 3: Viết chương trình hoàn chỉnh Pascal để thực hiện theo thực đơn như sau:
1- Nhập dữ liệu (nhập 3 số thực a, b, c)
2- Giải phương trình ax2 + bx + c = 0
3- Thoát khỏi chương trình
Bài 4: Em hãy viết chương trình kiểm chứng giả thuyết sau với n chẳn lớn hơn
2 và nhỏ hơn 1000 Mọi số tự nhiên chẳn đều có thể biểu diễn thành tổng của hai số nguyên tố
Trang 3GỢI Ý ĐÁP ÁN
Trang 4Bài 1:
program ktsonto;
uses crt;
var i,j,m,a,b,t,max:integer;
function kt(n:integer):boolean;
var i,d:integer;
begin
kt:=false;
d:=0;
for i:=1 to n do
if n mod i=0 then d:=d+1;
if d=2 then kt:=true;
end;
begin
clrscr;
write('nhap vao m ');readln(m);
for i:=1 to m do
if kt(i) then max:=i;
write('So nguyen to lon nhat khong vuot qua ',m, ' la: ',max);readln; end
Bài 2:
program bai2;
uses crt;
var xau1,xau2,xau:string;
chon:char;
function kt(ch:char;st:string): boolean;
begin
kt:=pos(ch,st)<>0;
end;
procedure compare(s1,s2: string;Var kq:string);
var i:byte;
begin
kq:='';
for i:=1 to length(s1) do
if(not kt(s1[i],kq)) and (kt(s1[i],s2)) then
kq:=concat(kq,s1[i]);
end;
Begin
repeat
clrscr;
writeln('nhap vao 2 xau s1 va s2: ');
write('S1: ');readln(xau1);
write('S2: ');readln(xau2);
compare(xau1,xau2,xau);
if xau<>'' then writeln('Xau chung la: ',xau)
else writeln('Khong co ki tu nao trong ca hai xau');
writeln('ban co muon tiep tuc khong (c/k)? ');readln(chon);
Trang 5until (chon='k') or (chon='K');
end
Bài 3:
program gptb2;
uses crt;
var a,b,c,delta,x1,x2: real;
chon,hoi:char;
begin
repeat
clrscr;
writeln('Chuong trinh giai pt bac hai');
writeln(' -');
writeln('1 Nhap du lieu (nhap 3 so thuc a,b,c)');
writeln('2 Giai phuong trinh ax2+bx+c=0');
writeln('3 Thoat khoi chuong trinh');
writeln('ban hay chon noi dung can thuc hien 1,2,3 ');
readln(chon);
case chon of
'1':Begin
write('nhap vao a= ');readln(a);
write('nhap vao b= ');readln(b);
write('nhap vao c= ');readln(c);
end;
'2':Begin
if(a=0) then
begin
if b=0 then
if (c=0) then writeln('pt vo so nghiem')
else writeln('pt vo nghiem')
else writeln('pt co nghiem x=',c/b)
end
else
begin
delta:=b*b-4*a*c;
if delta<0 then writeln('pt vo nghiem')
else
if delta=0 then writeln('pt co nghiem kep x1=x2=',-b/(2*a):2:2)
else writeln('pt co hai nghiem phan biet x1=',(-b+sqrt(delta))/(2*a):2:2,' x2= ',(-b-sqrt(delta))/(2*a):2:2);
end;
readln;
end;
end;
until chon='3';
end
Bài 4:
program ktsonto;
Trang 6uses crt;
var i,j,m,a,b,t,max,nto1,nto2:integer;
H:array[1 100] of integer;
function kt(n:integer):boolean;
var i,d:integer;
begin
kt:=false;
d:=0;
for i:=1 to n do
if n mod i=0 then d:=d+1;
if d=2 then kt:=true;
end;
begin
clrscr;
j:=1;
repeat
write('nhap vao so chan m (m>2) la ');readln(m);
until (m>2) and (m mod 2=0);
for i:=1 to m do
if kt(i) then
begin
H[j]:=i;j:=j+1;
end;
for a:=1 to j-1 do
begin
for b:=1 to j-1 do
if H[a]+H[B]=m then
begin
nto1:=H[a];nto2:=H[b];
end;
end;
write('Hai so nguyen to cong lai bang ',m,' la: ',nto1,' + ',nto2,' = ',m); readln;
end