Đề thi chọn học sinh giỏi cấp tỉnh Tuyên Quang lớp 12 - THPT năm học 2009 - 2010 môn: Tin học

Bài 1.

Trong kỳ thi vào trường Chuyên, lớp chuyên Hóa học: điểm môn Hóa tính hệ số 3, Toán và Ngữ văn tính hệ số 1; xếp loại kết quả thi theo điểm trung bình (ĐTB) với quy tắc:

- ĐTB dưới 5,0: Yếu

- ĐTB từ 5,0 đến dưới 7,0: Trung bình

- ĐTB từ 7,0 đến dưới 8,0: Khá

- ĐTB từ 8,0 đến 10,0: Giỏi

Lập chương trình tính điểm trung bình và xếp loại kết quả thi của các thí sinh dự thi vào lớp chuyên Hóa học (số lượng học sinh bất kỳ nhập từ bàn phím) và đưa họ tên, điểm trung bình, kết quả xếp loại ra màn hình.

 

doc7 trang | Chia sẻ: tuananh27 | Lượt xem: 632 | Lượt tải: 0download
Bạn đang xem nội dung tài liệu Đề thi chọn học sinh giỏi cấp tỉnh Tuyên Quang lớp 12 - THPT năm học 2009 - 2010 môn: Tin học, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
SỞ GIÁO DỤC VÀ ĐÀO TẠO TUYÊN QUANG
ĐỀ CHÍNH THỨC
ĐỀ THI CHỌN HỌC SINH GIỎI CẤP TỈNH LỚP 12 NĂM HỌC 2009-2010
Môn: Tin học 
Thời gian: 180 phút (Không kể thời gian giao đề)
Đề thi có 02 trang
Tổng quan đề thi:
Tên bài 
Tính điểm
Số nguyên tố cùng nhau
Đếm xâu đối xứng
Yên ngựa
File bài làm
Bai1.pas
Bai2.pas
Bai3.pas
Bai4.pas
Dữ liệu vào
Bàn phím
NTCN.INP
PALIN.INP
YENNGUA.INP
Dữ liệu ra
Màn hình
NTCN.OUT
PALIN.OUT
YENNGUA.OUT
Điểm
5
5
5
5
Chú ý: 
1. Bài thi được làm trên ngôn ngữ lập trình Pascal.
2. Chương trình của Bài 1, Bài 2, Bài 3, Bài 4 phải ghi lên đĩa với tên tương ứng là Bai1.pas, Bai2. pas, Bai3. pas, Bai4. pas trong thư mục D đặt tên SBD của mình ví dụ: D:\SBD01\Bai1. pas
Bài 1.
Trong kỳ thi vào trường Chuyên, lớp chuyên Hóa học: điểm môn Hóa tính hệ số 3, Toán và Ngữ văn tính hệ số 1; xếp loại kết quả thi theo điểm trung bình (ĐTB) với quy tắc:
- ĐTB dưới 5,0: Yếu
- ĐTB từ 5,0 đến dưới 7,0: Trung bình
- ĐTB từ 7,0 đến dưới 8,0: Khá
- ĐTB từ 8,0 đến 10,0: Giỏi
Lập chương trình tính điểm trung bình và xếp loại kết quả thi của các thí sinh dự thi vào lớp chuyên Hóa học (số lượng học sinh bất kỳ nhập từ bàn phím) và đưa họ tên, điểm trung bình, kết quả xếp loại ra màn hình.
Bài 2.
Hai số tự nhiên được gọi là hai số nguyên tố cùng nhau nếu ước số chung lớn nhất của hai số đó bằng 1.
Yêu cầu: Hãy xác định hai số tự nhiên x, y (1 < x, y < 65535) có phải là hai số nguyên tố cùng nhau hay không?
Dữ liệu vào: Được lấy từ file văn bản NTCN.INP, có cấu trúc như sau:
Ghi 2 số tự nhiên x, y trên cùng một dòng và cách nhau bởi một kí tự dấu cách.
Dữ liệu ra: Ghi ra file văn bản NTCN.OUT, theo cấu trúc như sau:
Nếu x và y là hai số nguyên tố cùng nhau thì ghi số 1, ngược lại thì ghi số 0.
Ví dụ:
NTCN.INP
NTCN.OUT
8 15
1
Bài 3.
Một xâu kí tự được gọi là xâu đối xứng (Palindrome) nếu ta đọc từ trái sang phải hay đọc từ phải sang trái đều giống nhau. Một kí tự cũng được coi là một xâu đối xứng. Xâu con của S là xâu gồm một số kí tự liên tiếp trong S.
Yêu cầu: Cho trước một xâu kí tự S (kí tự đầu và kí tự cuối khác kí tự dấu cách). Hãy xác định số xâu đối xứng là xâu con của nó. 
Dữ liệu vào: Được lấy từ file văn bản PALIN.INP gồm nhiều dòng (không quá 100 dòng), mỗi dòng là một xâu có chiều dài không quá 80 kí tự.
Dữ liệu ra: Được ghi vào file văn bản PALIN.OUT có số dòng bằng số dòng của PALIN.INP, mỗi dòng chứa một số nguyên biểu thị số xâu con đối xứng của dòng tương ứng trong PALIN.INP
Ví dụ:
PALIN.INP
PALIN.OUT
J
IOI
MIT TIM
1
4
10
Bài 4.
Cho một ma trận hai chiều A cấp m x n. Phần tử A[i,j] được gọi là yên ngựa nếu nó là số lớn nhất trong cột j và là số nhỏ nhất trong hàng i.
Yêu cầu: Tìm số phần tử yên ngựa của ma trận A.
 Dữ liệu vào: Được lấy từ file YENNGUA.INP có cấu trúc như sau:
	- Dòng thứ nhất gồm hai số nguyên dương m, n (m,n ≤100)
	- m dòng tiếp theo mỗi dòng gồm n số nguyên, các số nguyên cách nhau bởi một dấu cách là ma trận A (A[i,j] có giá trị tuyệt đối ≤ 10000)
Dữ liệu ra: Được ghi vào file YENNGUA.OUT gồm một số nguyên duy nhất là số lượng yên ngựa trong ma trận A
VÝ dô:
YENNGUA.INP
YENNGUA.OUT
3 4
4 3 6 5
9 -2 -9 4
6 0 7 2
1
(Ví dụ trên có duy nhất một yên ngựa là phần tử A[1,2] )
Cán bộ coi thi không giải thích gì thêm.
----------------HẾT-----------------
SỞ GIÁO DỤC VÀ ĐÀO TẠO TUYÊN QUANG
ĐÁP ÁN ĐỀ THI CHỌN HỌC SINH GIỎI 
CẤP TỈNH NĂM 2009
Môn: Tin học Lớp: 12
(Đáp án gồm 01 trang)
Cách chấm điểm:
 Dùng các bộ test, chạy trực tiếp chương trình để chấm trực tiếp trên máy: Với các bộ test sau: 
Bài
InPut
OutPut
Điểm
Bài 1:
Chạy trực tiếp chương trình, cho kết quả đúng
5
Bài 2:
5
8 15
1
2
2 2009
1
2
2010 2000
0
1
Bài 3:
5
A
1
2
AYA
4
2
TIK KIT
10
1
Bài 4:
5
3 4
4 3 6 5
9 -2 -9 4
6 0 7 2
1
2
2 2
1 2
2 1
0
1
4 5
8 9 5 7 5
6 8 5 6 5 
4 2 4 9 3 
0 1 3 5 2 
4
2
LƠI GIAI THAM KHAO
Bài 1
Có nhiều phương án giải quyết bài toán này (GV tự nghiên cứu)
Bài 2. Số nguyên tố
Program NTCN;
Const fi='NTCN.inp';
 fo='NTCN.out';
Var m,n:Longint;
Procedure doc;
 Var f:text;
 Begin
 Assign(f,fi);
 Reset(f);
 Readln(f,m,n);
 Close(f);
 End;
Function Ucln(m,n:Longint):Longint;
 Var r:longint;
 Begin
 r := m mod n;
 While r 0 do
 Begin
 m:=n;
 n:=r;
 r:= m mod n;
 end;
 Ucln:=n;
 End;
Procedure Ghi;
 Var f:text;
 Begin
 Assign(f,fo);
 ReWrite(f);
 If ucln(m,n) = 1 then
 Writeln(f,1)
 Else
 Writeln(f,0);
 Close(f);
 End;
BEGIN
 Doc;
 Ghi;
END.
Bài 3. Xâu 
Program Bai1;
Const fi='PALIN.INP';
 fo='PALIN.OUT';
 maxN=100;
Var A:array[0..maxN+1] of string;
 N:longint;
 f,g:text;
Procedure Input;
 Var s:string;
 Begin
 assign(f,fi);
 reset(f);
 assign(g,fo);
 rewrite(g);
 n:=0;
 while not eof(f) do
 begin
 readln(f,s);
 inc(n);
 A[n]:=s;
 end;
 close(f);
 End;
Function Check_Palin(s:string;i,k:longint):boolean;
 Var temp:string;
 j:longint;
 Begin
 check_palin:=false;
 temp:=copy(s,i,k);
 for j:=1 to length(temp) div 2 do
 if temp[j]temp[length(temp)-j+1] then exit;
 check_palin:=true;
 End;
Function Count_Palin(s:string):longint;
 Var count,i,k:longint;
 Begin
 count:=0;
 for i:=1 to length(s) do
 for k:=1 to length(s)-i+1 do
 if check_palin(s,i,k) then inc(count);
 count_palin:=count;
 End;
Procedure Process;
 Var i:longint;
 Begin
 for i:=1 to n do
 writeln(g,count_palin(A[i]));
 close(g);
 End;
BEGIN
 Input;
 Process;
END.
Bài 4. Yên ngựa
 var A:array[1..100,1..100] of integer;
 maxj,mini:array[1..100] of integer;
 M,N,dem :integer;
 F:Text;
{**********************}
 procedure Doc_file;
 var i,j:integer;
 f:Text;
 Begin
 Assign(f,'D:\B2IN.TXT');
 Reset(f);
 readln(f,M,N);
 for i:=1 to M do
 Begin
 for j:=1 to N do read(f,A[i,j]);
 Readln(f);
 End;
 End;
{***********************}
 Procedure Xd_max_cot;
 var i,j:integer;
 Begin
 for i:=1 to N do
 maxj[i]:=A[1,i];
 for i:=2 to M do
 for j:=1 to N do
 if A[i,j]>=maxj[j] then maxj[j]:=A[i,j];
 End;
{************************}
 Procedure Xd_min_dong;
 var i,j:integer;
 Begin
 for i:=1 to M do
 mini[i]:=A[i,1];
 for i:=1 to M do
 for j:=2 to N do
 if A[i,j]<=mini[i] then mini[i]:=A[i,j];
 End;
{*************************}
 Procedure count;
 var i,j:integer;
 Begin
 dem:=0;
 for i:=1 to M do
 for j:=1 to N do
 if (A[i,j]=maxj[j]) and (A[i,j]=mini[i]) then inc(dem);
 End;
{**************************}
 procedure Xu_ly;
 Begin
 Xd_max_cot;
 Xd_min_dong;
 count;
 End;
{*************************}
BEGIN
 Doc_file;
 Assign(f,'D:\B2OUT.TXT'); rewrite(f);
 Xu_ly;
 Write(f,dem);
 Close(f);
END.

File đính kèm:

  • docDe thi HSG Tin hoc 12_2009.doc