1. Trang chủ
  2. » Giáo án - Bài giảng

Download đề và đáp án thi học sinh giỏi môn tin học lớp 11 năm học 2005 2006 tỉnh quảng bình (khối không chuyên)

6 366 3

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 6
Dung lượng 41 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Đề ra: Sử dụng ngôn ngữ lập trình Turbo Pascal để lập trình giải các bài toán sau: Câu 1: 3,0 điểm Tổng giá trị các phần tử trong một ma trận - SUM.PAS Cho một ma trận A gồm M dòng N cột

Trang 1

Sở giáo dục - đào tạo Kỳ thi chọn học Sinh Giỏi lớp 11

SBD: Môn: Tin học - phân ban, THPT

Đề chính thức Thời gian làm bài: 180 phút.

Đề ra:

Sử dụng ngôn ngữ lập trình Turbo Pascal để lập trình giải các bài toán sau: Câu 1: (3,0 điểm) Tổng giá trị các phần tử trong một ma trận - SUM.PAS

Cho một ma trận A gồm M dòng N cột Dòng đợc đánh số từ 1 đến M từ trên xuống dới Cột đợc đánh số từ 1 đến N từ trái qua phải Mỗi phần tử của ma trận

có giá trị nguyên Hãy tính tổng giá trị các phần tử có chỉ số dòng chẵn và chỉ số cột lẽ.

Dữ liệu vào: Cho trong file SUM.INP có cấu trúc nh sau:

- Dòng 1: Ghi hai giá trị M, N là số dòng và số cột của ma trận, các số ghi

cách nhau một dấu cách (2<=M, N<=100).

- M dòng tiếp theo: Mỗi dòng ghi N số nguyên aij, là các giá trị của phần tử trên dòng i, cột j của ma trận, các số ghi cách nhau một dấu cách.

(-1000 <= aij <= 1000)

Dữ liệu ra: Ghi ra file SUM.OUT theo cấu trúc nh sau:

- Dòng 1: Ghi số S, là tổng tìm đợc.

Ví dụ:

4 5

2 4 1 5 7

2 2 8 3 5

1 7 4 8 0

9 6 4 7 3

31

Câu 2: (3,5 điểm) Số nguyên tố cùng nhau - NT.PAS

Tìm tất cả các số tự nhiên X có ba chữ số sao cho khi đảo ngợc trật tự các chữ số của X ta sẽ thu đợc một số nguyên Y mà X và Y là hai số nguyên tố cùng nhau.

Ví dụ: X =122 và Y= 221

Dữ liệu ra: Ghi ra file NT.OUT theo cấu trúc nh sau:

- Dòng 1: Ghi số nguyên dơng N, là số lợng số X tìm đợc.

- Dòng 2: Ghi N số tìm đợc Các số ghi cách nhau một dấu cách.

Trang 2

Câu 3 (3,5 điểm) Tìm số sát sau - SOSATSAU.PAS

Cho số tự nhiên A có N chữ số Hãy hoán vị các chữ số trong A để thu đợc

số B thoả mãn đồng thời hai điều kiện sau:

- B lớn hơn A.

- B nhỏ nhất.

Dữ liệu vào: Cho trong file Sosatsau.inp có cấu trúc nh sau:

- Dòng 1: Ghi số N là số lợng chữ số của A (0<N<=1000).

- Dòng 2: Ghi các chữ số của số A, giữa các chữ số không có dấu cách.

Dữ liệu ra: Ghi vào file Sosatsau.out theo cấu trúc:

- Dòng 1: Ghi số B tìm đợc, giữa các chữ số không có dấu cách Nếu không

tìm đợc số B thì ghi chữ số 0.

Ví dụ

Sosatsau.inp Sosatsau.out Sosatsau.inp Sosatsau.out

6

526431

21

0

Hết

Trang 3

Hớng dẫn chấm thi học sinh giỏi lớp 11 - phân ban, thpt

năm học 2005-2006 I/ Ph ơng pháp chung

- Giám khảo tạo các bộ dữ liệu vào, tính toán kết quả Thực hiện chơng trình của học sinh và so sánh kết quả.

- Giám khảo có thể sử dụng chơng trình mẫu để tính kết quả của dữ liệu vào: SUM.PAS NT.PAS SOSATSAU.PAS

- Chơng trình học sinh chạy đúng mỗi bộ test, giám khảo cho 0.5 điểm Nh vậy, nếu câu hỏi có 3 điểm thì giám khảo phải tạo đợc 6 bộ test Riêng đối với Câu 2: NT.PAS, không có dữ liệu vào, giám khảo chỉ chấm trên một bộ dữ liệu

ra và cho điểm tối đa 3,5 điểm; Nếu chơng trình cha hoàn thành thì có thể chấm giải thuật tuỳ theo bài làm của học sinh.

- Nếu chơng trình chạy sai test nào thì giám khảo cho 0 điểm đối với test đó.

- Giám khảo có thể sử dụng các test gợi ý dới đây nếu cần thiết.

II/ Ch ơng trình mẫu

Câu 1: (3,0 điểm) Tổng giá trị các phần tử trong một ma trận - SUM.PAS

{$r+}

const fi='Sum.in2'; fo='sum.ou2';

nn=100;mm=100;

type mhci=array[1 mm,1 nn] of integer;

var a:mhci; m,n:byte; s:longint;

procedure doc;

var f:text; i,j:byte;

begin

assign(f,fi);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;

close(f);

end;

procedure xl;

var i,j:byte;

begin

s:=0;

for i:=1 to m do

begin

for j:=1 to n do

if (i mod 2=0) and (j mod 2=1) then s:=s+a[i,j];

end;

end;

procedure xuat;

var i,j:byte; f:text;

begin

assign(f,fo); rewrite(f);

writeln(f,s);

close(f);

end;

begin

doc;

xl;

xuat;

Trang 4

end

C©u 2: (3,5 ®iÓm) Sè nguyªn tè - NT.PAS

const fo='NT.OUT';

nn=901;

type mmcw=array[0 901] of word;

var n:word; s:mmcw;

function uscln(a,b:word):word;

var r:word;

begin

while b>0 do

begin r:=a mod b; a:=b; b:=r; end; uscln:=a;

end;

function dao(x:word):word;

var y:word;

begin

y:=0;

while x>0 do

begin y:=10*y+(x mod 10); x:=x div 10; end; dao:=y;

end;

function tim:word;

var x,d:word;

begin

d:=0;

for x:=100 to 999 do

if uscln(x,dao(x))=1 then

begin d:=d+1; s[d]:=x; end;

tim:=d;

end;

procedure xuat;

var f:text; i:word;

begin

n:=tim;

assign(f,fo);rewrite(f);

writeln(f,n);

for i:=1 to n do write(f,s[i],' ');

close(f);

end;

begin xuat; end

C©u 3 (3,5 ®iÓm) T×m sè s¸t sau - SOSATSAU.PAS

const

max=1000;

fi='sosatsau.inp';

fo='sosatsau.out';

var

a:array[0 max]of char;

n:integer;

kt:boolean;

Procedure docdl;

var

f:text;

c:char;

i:integer;

begin

Trang 5

assign(f,fi);

reset(f);

readln(f,n);

i:=0;

while not eof(f) do

begin

read(f,c);

if(c>='0') and(c<='9') then begin

inc(i); a[i]:=c; end;

end;

close(f);

end;

procedure kiemtra;

var

i,j:integer;

tg:char;

begin

kt:=false;

i:=n-1;

while a[i]>=a[i+1] do

dec(i);

if i<>0 then

begin

j:=n;

while a[j]<=a[i] do

dec(j);

tg:=a[i];

a[i]:=a[j];

a[j]:=tg;

inc(i);

j:=n;

while j>i do

begin

tg:=a[i];

a[i]:=a[j];

a[j]:=tg;

inc(i);

dec(j);

end;

kt:=true;

end;

end;

procedure xuatdl;

var

f:text;

i:integer;

begin

assign(f,fo);

rewrite(f);

if kt then

for i:=1 to n do

write(f,a[i])

else

write(f,'0');

close(f);

Trang 6

begin

docdl;

kiemtra;

xuatdl;

end

III/ Mét sè test gîi ý.

5 5

2 4 1 5 7

2 2 8 3 5

1 7 4 8 0

9 6 4 7 3

8 5 3 2 7

31

6 5

2 4 1 5 7

2 2 8 3 5

1 7 4 8 0

9 6 4 7 3

8 5 3 2 7

3 -1 -2 -3 -4

28

4 5

4 5 6 7 2 -1 2 3 9 10

4 3 -20 3 6 -19 13 20 -20 2

15

5

6

1

4

HÕt

Ngày đăng: 13/10/2015, 16:15

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w