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 (vòng 2)

7 350 1

Đ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 7
Dung lượng 111 KB

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

Nội dung

Sở giáo dục và đào tạo Kỳ thi chọn hSG lớp 11 quảng bình Năm học 2005-2006 Thời gian: 180 phút, không kề thời gian giao đề Đề ra Sử dụng ngôn ngữ lập trình Turbo Pascal để lập trình giải

Trang 1

Sở giáo dục và đào tạo Kỳ thi chọn hSG lớp 11

quảng bình Năm học 2005-2006

Thời gian: 180 phút, không kề thời gian giao đề

Đề 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: (2.5 điểm) Đếm số từ có trong xâu-WORD.PAS

Ta định nghĩa: Từ là một nhóm ký tự bất kỳ mà trong đó không chứa dấu cách Ví dụ ‘thch’ là một từ.

Cho một xâu S gồm N ký tự đợc lấy từ tập ký tự ‘a’ ’z’ và ‘ ’ (dấu cách), (1<=N<=255)

Yêu cầu: Đếm số lợng từ có trong xâu và in ra file mỗi từ trên một dòng.

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

-Dòng 1: Ghi xâu S.

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

-Dòng 1: Ghi số K là số lợng từ đếm đợc có trong xâu.

-K dòng tiếp theo, mỗi dòng ghi một từ.

Ví dụ:

bien hoc khong bo 4

bien hoc khong bo

Câu 2: (3.5 điểm) Dãy con DAYCON.PAS

Cho hai dãy số thực a1, a2, ,an (1) và b1, b2, ,bm (2) Dãy (1) đợc gọi là dãy con của dãy (2) nếu bỏ đi k (k>=0) phần tử trong dãy (2) thì ta đợc dãy (1) Chằng hạn: dãy 1, 3, 5 là dãy con của dãy 0,1, 2, 1, 4, 3, 5, 7.

Yêu cầu: Với hai dãy số cho trớc, hãy xác định xem dãy (1) có phải là dãy con của

dãy (2) hãy không.

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

-Dòng 1: Ghi số N là số lợng phần tử của dãy (1) (1<=N<=1000)

-Dòng 2: Ghi N số a1 a2 an, các số ghi cách nhau một dấu cách.

-Dòng 3: Ghi số M là số lợng phần tử của dãy (2) (1<=M<=1000)

Trang 2

-Dòng 4: Ghi M số b1 b2 bm, các số ghi cách nhau một dấu cách.

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

-Dòng 1: Ghi ký tự ‘Y’ nếu dãy (1) là dãy con của dãy (2), ngợc lại ghi ký tự ‘N’

Ví dụ:

1 3 5

8

0 1 2 1 4 3 5 7

Câu 3: (4 điểm) Đếm các hình vuông nhìn thấy đợc từ gốc tọa độ

SQUARES.PAS

Trong mặt phẳng tọa độ cho N hình vuông có các cạnh song song với các trục tọa độ Các hình vuông đợc đánh số từ 1 đến N Các đỉnh của các hình vuông

đều có tọa độ nguyên và không có hai hình vuông nào có điểm chung.

Một hình vuông đợc gọi là nhìn thấy đợc từ gốc tọa độ O=(0,0), nếu tìm đợc hai điểm A, B trên một số các cạnh của hình vuông sao cho phần trong của tam giác OAB không có điểm chung với bất kỳ hình vuông nào trong các hình vuông còn lại.

Yêu cầu: Tìm số lợng hình vuông nhìn thấy đợc từ gốc tọa độ.

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

-Dòng 1: Ghi số nguyên N (1<=N<=1000), là số lợng hình vuông

-Trong N dòng tiếp theo: dòng thứ i ghi 3 số nguyên Xi Yi Li, trong đó (Xi , Yi) là tọa độ của đỉnh ở góc dới bên trái của hình vuông thứ i, Li là độ dài cạnh của hình vuông thứ i Các số ghi cách nhau một dấu cách (1<= Xi Yi Li <=1000)

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

-Dòng 1: Ghi số M, là số lợng hình vuông nhìn thấy đợc từ gốc tọa độ.

-Dòng 2: Ghi M số, là số hiệu của các hình vuông nhìn thấy đợc từ gốc tọa độ Các

số ghi cách nhau một dấu cách.

Ví dụ:

SQUARES.INP SQUARES.OUT SQUARES.INP SQUARES.OUT

3 7 1 Hớng dẫn chấm thi học sinh giỏi toàn tỉnh

lớp 11 năm học 2005-2006

Trang 3

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: WORD.PAS DAYCON.PAS SQUARES.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.

- 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

WORD.PAS

const fi='word.in5';

fo='word.ou5';

var s:string;

f:text;

d:byte;

procedure doc;

begin

assign(f,fi);reset(f);

readln(f,s);

close(f);

end;

procedure xl;

var i:byte;

begin

while s[1]=' ' do delete(s,1,1);

while s[length(s)]=' ' do delete(s,length(s),1);

while pos(' ',s)<>0 do delete(s,pos(' ',s),1);

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

if s= '' then d:=0 else d:=1;

for i:=1 to length(s) do if s[i]=' ' then d:=d+1;

writeln(f,d);

for i:=1 to length(s) do

begin

write(f,s[i]);

if s[i]=' ' then writeln(f);

end;

close(f);

end;

begin

doc;

xl;

end.

DAYCON.PAS

const fi='daycon.in6';

fo='daycon.ou6';

type mmcr=array[1 1000] of real;

var f:text;

a,b:mmcr;

n,m:word;

procedure doc;

var i:word;

Trang 4

assign(f,fi); reset(f);

readln(f,n);

for i:=1 to n do read(f,a[i]);

readln(f);

readln(f,m);

for i:=1 to m do read(f,b[i]);

close(f);

end;

function tim(x:real;var j:word):word;

begin

while (j<=m) and (x<>b[j]) do j:=j+1;

tim:=j;

end;

procedure xl;

var i,j:word; kt:char;

begin

j:=1; kt:='Y';

for i:=1 to n do

begin

if (tim(a[i],j)>m) then kt:='N';

end;

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

writeln(f,kt);

close(f);

end;

begin

doc;

xl;

readln;

end.

SQUARES.PAS

{$r+}

program Cac_hinh_chu_nhat_co_the_nhin_thay_tu_goc_toa_do; const fi='squares.in7';

fo='squares.ou7';

type ii=integer; bo=boolean; rr=real;

mmc=array[0 1001] of ii;

mmc1=array[0 1001] of bo;

mmc2=array[0 1001] of rr;

var x1,y1,x2,y2,e:mmc; b:mmc1; g1,g2:mmc2;

n:ii;

f:text;

procedure doc;

var i,j,x,y,l:ii;

begin

assign(f,fi);

reset(f);

readln(f,n);

for i:=1 to n do

begin

readln(f,x,y,l);

x1[i]:=x; y1[i]:=y+l;

x2[i]:=x+l; y2[i]:=y;

end;

close(f);

end;

Trang 5

procedure sort(l,r:integer);

var i,j,x,y:integer;

begin

i:=l;

j:=r;

x:=x1[(l+r) div 2]+ y1[(l+r) div 2];

repeat

while x1[i]+y1[i]<x do i:=i+1;

while x<x1[j]+y1[j] do j:=j-1;

if i<=j then

begin

y:=x1[i]; x1[i]:=x1[j]; x1[j]:=y; y:=y1[i]; y1[i]:=y1[j]; y1[j]:=y; y:=x2[i]; x2[i]:=x2[j]; x2[j]:=y; y:=y2[i]; y2[i]:=y2[j]; y2[j]:=y; y:=e[i]; e[i]:=e[j]; e[j]:=y; i:=i+1; j:=j-1;

end;

until i>j;

if l<j then Sort(l,j);

if i<r then Sort(i,r);

end;

procedure tinhgoc;

var i:ii;

begin

for i:=1 to n do

begin

if x1[i]=0 then g1[i]:=90

else g1[i]:=arctan(y1[i]/x1[i]);

if x2[i]=0 then g2[i]:=90

else g2[i]:=arctan(y2[i]/x2[i]);

end;

end;

procedure quet(x,y:real);

var i:ii;

begin

if x<y then

for i:=1 to n do

if not(b[i]) then

if (g1[i]>x) and (g2[i]<y) then

begin

b[i]:=true;

quet(x,g2[i]);

quet(g1[i],y);

break;

end;

end;

procedure xl;

var i,j,dem:ii;

begin

for i:=1 to n do e[i]:=i;

writeln;

sort(1,n);

tinhgoc;

fillchar(b,sizeof(b),false);

quet(0,pi/2);

dem:=0;

for i:=1 to n do

Trang 6

if b[i] then inc(dem);

assign(f,fo);

rewrite(f);

writeln(f,dem);

for i:=1 to n do

if b[i] then write(f,e[i],' ');

close(f);

end;

begin

doc;

xl;

end.

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

an qua nho

ke trong cay

ngu dot nhat cua doi nguoi

la doi tra

cong cha nhu nui thai son

4

1 2 3 4

3

1 2 3

N

4

1 2 3 4

4

1 2 3 4

Y

1

1

1

1

Y

1

1

1

4

N

3

1 3 5

5

1 5 3 6 7

N

Trang 7

SQUARES.INP SQUARES OUT

2

3 1 1000

1 1 1

2

2 1 1

5

1 2 1

3 1 1

2 4 2

3 7 1

20 20 100

3

1 2 5

Tµi liÖu tham kh¶o:

Ng«n ng÷ lËp tr×nh Pascal-Qu¸ch TuÊn Ngäc

Bµi tËp lËp tr×nh Pascal-KiÒu V¨n Hng

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