- Trong trương hợp chương trình chạy chưa đúng xem xét các ý của bài làm để cho điểm..[r]
Trang 1SỞ GD&ĐT NGHỆ AN
TRƯỜNG THPT DTNT CON CUÔNG
KỲ THI CHỌN HỌC SINH GIỎI CẤP TRƯỜNG KHỐI 11
NĂM HỌC 2011 – 2012
Đề thi môn: TIN HỌC
Bài 1: (5,0 điểm) Xâu đảo ngược
Viết chương trình nhập vào một xâu từ bàn phím và đưa ra màn hình xâu đó nhưng được viết theo thứ tự ngược lại
Ví dụ:
Xâu vào: abccegh
Xâu đảo ngược: hgeccba
Viết chương trình nhập vào một xâu từ bàn phím và in ra màn hình số từ của xâu Biết rằng từ là một dãy các kí tự cách nhau bởi dấu cách?
Ví dụ:
Xâu vào: Ki thi hoc sinh gioi.
Kết quả in ra màn hình: 5
Bài 3: (5,0 điểm). Cấp số cộng
Cho dãy số a Hãy kiểm tra dãy số đó có phải là cấp số cộng hay không?
Dữ liệu:Vào từ file văn bản CSC.INP gồm 2 dòng:
- Dòng 1 ghi số N ( 3 <= N <= 10.000) là số phần tử của dãy a;
- Dòng 2 là một dãy gồm N số nguyên
Kết quả: Được ghi vào tệp CSC.OUT:
- Nếu dãy số lập thành cấp số cộng thì ghi số: 1
- Ngược lại ghi số: 0
Ví dụ:
6
1 3 5 7 9 11
Bài 4:(4,0 điểm). Chữ số thứ N
Viết chương trình in ra chữ số thứ N của dãy vô hạn các số nguyên không âm chẵn: 0246810121416182022…(N có kiểu longint)
Dữ liệu: Vào từ file văn bản CHUSO.INP gồm một số nguyên dương N.
Kết quả: Ghi ra file văn bản CHUSO.OUT:
Chỉ một số duy nhất là chữ số thứ N của dãy số nói trên
Ví d : ụ
Chú ý: Chương trình giải các bài 1, bài2, bài 3, Bài 4 lần lượt ghi lên đĩa với tên File lần
lượt là Bai1.pas, Bai2.pas, Bai3.pas, Bai4.pas
ĐỀ THI CHÍNH THỨC
Trang 2SỞ GD&ĐT NGHỆ AN
TRƯỜNG THPT DTNT CON CUÔNG
KỲ THI CHỌN HỌC SINH GIỎI CẤP TRƯỜNG KHỐI 11
NĂM HỌC 2011 – 2012 HƯỚNG DẪN CHẤM ĐỀ THI CHÍNH THỨC
Môn: TIN HỌC
(Hướng dẫn chấm gồm có 3 trang)
1
(5đ)
PROGRAM Bai1;
USES CRT;
var i, k : Byte;
S: string;
BEGIN clrscr;
write('Moi nhap xau: '); readln(S);
k:= length(s);
write('Xau dao nguoc la: ');
For i := k downto 1 do write(S[i]);
readln;
END
5đ
2
(6đ)
PROGRAM bai2;
VAR s:string;
i:byte;
dem:integer;
BEGIN
Write('Nhap vao xau s:');readln(s);
s:=' ' +s; { Cong them dau cach truoc xau de dem ca tu dau tien}
dem:=0;
for i:=2 to length(s) do
if (s[i-1] =' ' ) and(s[i]<> ' ') then dem:=dem+1;
write('so tu:',dem);
readln;
END.
6đ
3
(5đ)
PROGRAM Bai3;
VAR f1,f2 :text;
i,n,d: integer;
a: array[1 100] of integer;
kt: boolean;
BEGIN
assign(f1,'csc.INP'); reset(f1);
5đ
Trang 3assign(f2,'csc.OUT'); rewrite(f2);
readln(f1,n);
kt:= true;
for i:=1 to n do read(f1,a[i]);
d:=A[2] - A[1];
for i:= 3 to n do
if A[i] - A[i-1] <> d then kt:= false;
if kt then write(f2,1) else
write(f2,0);
close(f1);
close(f2);
END
4
(4đ)
PROGRAM bai2;
const fi='CHUSO.INP';
fo='CHUSO.OUT';
VAR N: longint;
f: text;
procedure doctep;
Begin
assign(f,fi);
reset(f);
readln(f,N);
close(f);
end;
function chuso(NN:longint):char;
var st: string[12];
dem,M:longint;
Begin
dem:=0;
repeat M:=M+2;
str(M,st);
dem:=dem+length(st);
until dem>=NN;
chuso:=st[length(st)-(dem-NN)];
end;
4đ
Trang 4procedure xuli;
begin
assign(f,fo);
rewrite(f);
write(f,chuso(N));
close(f);
end;
BEGIN
doctep;
xuli;
END
Chú ý: - Chương trình giải chạy các bài 1, bài2, bài 3, Bài 4 cho điểm tối đa nếu học
sinh viết chương trình chạy cho kết quả đúng (cách làm khác đáp án vẫn cho điểm tối đa)
- Trong trương hợp chương trình chạy chưa đúng xem xét các ý của bài làm để cho điểm.