Đề thi học sinh giỏi môn Tin học lớp 12

Đề thi học sinh giỏi môn Tin học lớp 12 trường THPT Nguyễn Duy Thì, Vĩnh Phúc năm học 2016 - 2017 (Lần 1) có 3 câu hỏi, bao gồm các nội dung: số hoàn hảo, dãy số, đếm từ trong xâu. Đề thi có đáp án đi kèm giúp các bạn học sinh có thể kiểm tra lại kết quả một cách linh hoạt, mời các bạn tham khảo.

Đề thi học sinh giỏi lớp 12 THPT tỉnh Bến Tre năm 2012 - 2013 môn Tin học

Đề thi học sinh giỏi lớp 12 THPT tỉnh Hà Nam năm 2011 - 2012 môn Tin học (Có đáp án)

SỞ GD&ĐT VĨNH PHÚC

TRƯỜNG THPT NGUYỄN DUY THÌ

--------------------------

KÌ THI CHỌN HSG LỚP 12, NĂM HỌC 2016 - 2017

MÔN: TIN HỌC – LẦN 1

Thời gian làm bài: 180 phút, không kể thời gian giao đề

--------------------------

Tổng quan: Đề thi gồm 02 trang.

TT

Tên bài

File chương trình

File dữ liệu

File kết quả

Điểm

Bài 1

Số hoàn hảo

HOANHAO.PAS

BAI1.INP

BAI1.OUT

3

Bài 2

Dãy số

DAYSO.PAS

BAI2.INP

BAI2.OUT

3

Bài 3

Đếm từ trong xâu

XAU.PAS

BAI3.INP

BAI3.OUT

4

Bài 1. Số hoàn hảo

Một số tự nhiên N có tổng các ước nhỏ hơn nó bằng chính nó được gọi là số hoàn hảo. Ví dụ: Số 6 là số hoàn hảo vì: Các ước của 6 là 1, 2, 3 và 6 = 1 + 2 + 3.

* Dữ liệu:

Vào từ tệp văn bản HOANHAO.INP, gồm 1 dòng ghi số N (2 < N < 1000).

* Kết quả:

Ghi ra tệp văn bản HOANHAO.OUT: là các số hoàn hảo có giá trị < N, mỗi số được viết trên một dòng.

* Ví dụ:

BAI1.INP

BAI1.OUT

BAI1.INP

BAI1.OUT

7

6

30

6

28

Bài 2. Dãy số

* Dữ liệu: Vào từ tệp văn bản SUM.INP, gồm 2 dòng:

  • - Dòng 1: Số N.
  • - Dòng 2: Dãy số a1, a2......., an mỗi số cách nhau một dấu cách.

(0 ≤ ai ≤ 104; i = 1, 2, ..., N)

* Kết quả:

Ghi ra tệp văn bản SUM.OUT, gồm 2 dòng:

  • Dòng 1: Giá trị và vị trí của phần tử lớn nhất trong dãy số (mỗi số cách nhau một dấu cách).
  • Dòng 2: ghi giá trị trung bình cộng của các số có giá trị lẻ ở vị trí chẵn trong dãy.

* Ví dụ:

BAI2.INP

BAI2.OUT

7

3 2 6 7 23 25 40

40 7

16

BÀI 3: Đếm từ trong xâu.

Chuẩn hóa xâu có nghĩa là loại bỏ dấu cách dư thừa trong xâu.

* Dữ liệu:

Vào từ tệp văn bản XAU.INP, gồm 1 dòng: là một xâu S bất kỳ có độ dài không quá 255 kí tự.

* Kết quả:

Ghi ra tệp văn bản XAU.OUT, gồm 3 dòng:

  • Dòng 1: ghi xâu sau khi đã chuyển hết về ký tự in hoa.
  • Dòng 2: ghi độ dài của xâu sau khi chuẩn hóa.
  • Dòng 3: ghi ra số từ có trong xâu.

* Ví dụ:

BAI3.INP

BAI3.OUT

thpt nguyen duy thi

THPT NGUYEN DUY THI

19

4

Đáp án đề thi học sinh giỏi môn Tin học lớp 12

Bài 1

Program hoanhao;
Uses crt;
Var i, n: interger;
f, g: text;

{Xay dung ham tinh tong cac uoc cua so nguyen duong}
function tongus(n : integer): integer;
var i,s : integer;
begin
s := 0;
for i := 1 to n div 2 do
if n mod i = 0 then s := s + i;
tongus := s;
end;

Begin
Assign(f, 'bai1.inp');
Reset (f);
Assign( g, 'bai1.out');
Rewrite(g);

Read(f, n);

{kiem tra va in ra so hoan hao}
For i:=1 to n do
If i = tongus(i) then write(g, i);

Close(f);
Close(g);
Readln
End.

Bài 2

Program dayso;
Uses crt;
Var i, n, , tong, dem, tb, max: interger;
A: array[1..10000] of longint;
F, g: text;
Begin
Assign(f, 'bai2.inp');
Reset (f);
Assign( g, 'bai2.out');
Rewrite(g);

Read(f, n);
For i:=1 to n do
Begin
Readln(f, a[i]);
End;

{Tim gia tri va vi tri cua phan tu lon nhat}
Max:=a[1];
For i:=1 to n do
If max < a[i] then
begin
max:=a[i];
Write(g, a[i]);
Write(g, i);
end;

{Ghi ra gia tri trung binh cong cua cac so le o vi tri chan trong day}
Dem: =0;
Tong:=0;
For i: 1 to n do
If (a[i] mod 2<> 0) and (i mod 2 = 0) then
Tong: = tong +a[i];
Inc(dem);
Tbc:= tong/dem;
Writeln(g, tbc);

Close(f);
Close(g);
Readln
End.

Bài 3

Program xau;
Uses crt;
Var s: string;
F, g: text;
X, i, dem: integer;

{Ham dem so tu trong xau s}
Function sotu(s : string) : integer;
Var i, dem : integer;
Begin
{ cong them dau cach dau xau de dem tu dau tien}
S: = '' + s;
Dem: = 0 ;
For i:= 2 to x do
If (s[i-1]='') and (s[i]<>'') then inc(dem);
Sotu:= dem;
End;

Begin
Assign(f, 'bai3.inp');
Reset (f);
Assign( g, 'bai3.out');
Rewrite(g);

Read(f, s);
x:= length(s);

{chuyen het xau ve ki tu in hoa}
For i:=1 to x do upcase(s[i]);
Write(g, i);

{chuan hoa xau}
while s[1]=' ' do delete(s,1,1);
while s[x]=' ' do delete(s,x,1);
for i:= x downto 2 do
if (s[i]='') and (s[i-1]='') then delete (s, i, 1);
writeln(g, s);

{ghi ra so tu co trong xau}
Writeln(g, Sotu(s));

Close(f);
Close(g);
Readln
End.

Nếu bạn không thấy đề thi được hiển thị. Vui lòng tải về để xem. Nếu thấy hay thì các bạn đừng quên chia sẻ cho bạn bè nhé!