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

Đề-đáp án HSG tin 9 năm 2009-2010 NINH HOA

7 870 7
Tài liệu đã được kiểm tra trùng lặp

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

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Đề-đáp án HSG Tin Học 9 Năm 2009-2010 Ninh Hòa
Chuyên ngành Tin Học
Thể loại Đề thi
Năm xuất bản 2009-2010
Thành phố Ninh Hòa
Định dạng
Số trang 7
Dung lượng 52,5 KB

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

Nội dung

Nhiệm vụ của chương trình: - Tên tập tin: Bai_1.pas - Chương trình cho phép nhập vào một chuỗi gồm nhiều ký tự và có ít nhất một số nguyên dương - Xuất ra màn hình chuỗi đã nhập - Xuất t

Trang 1

UBND HUYỆN NINH HOÀ ĐỀ THI CHỌN HỌC SINH GIỎI CẤP HUYỆN PHÒNG GIÁO DỤC VÀ ĐÀO TẠO NĂM HỌC 2009 − 2010

MÔN: TIN HỌC 9

(Thời gian: 150 phút – không kể phát đề)

Bài 1: (2đ) Tính tổng các số nguyên dương có trong một chuỗi

Nhiệm vụ của chương trình:

- Tên tập tin: Bai_1.pas

- Chương trình cho phép nhập vào một chuỗi gồm nhiều ký tự và có ít nhất một số nguyên dương

- Xuất ra màn hình chuỗi đã nhập

- Xuất tổng các số nguyên dương có trong chuỗi

Ví dụ:

abcAcb90acgH3abcb12bdcnhag Chuoi da nhap:

abcAcb90acgH3abcb12bdcnhag Tong cac so co trong chuoi: 105 bacDgfhrthg Nhap sai! Yeu cau nhap lai:

Bài 2: (2đ) Viết chương trình nhập vào hai mốc thời gian trong một năm cho biết từ mốc

thời gian thứ nhất đến mốc thời gian thứ hai có bao nhiêu ngày.

Nhiệm vụ chương trình:

- Tên tập tin: Bai_2.pas

- Cho phép nhập vào hai mốc thời gian trong một năm

- Kiểm tra dữ liệu nhập nếu sai cho nhập lại (có chú ý ngày hợp lệ trong tháng, mốc thời gian trước sau hợp lý)

- Cho ra kết quả là số ngày

Chú ý :

Năm nhuận là năm chia hết cho 4 thì tháng 2 có 29 ngày

Tháng 1,3,5,7,8,10,12 có 31 ngày

Tháng 4,6,9,11 có 30 ngày

Ví dụ:

dữ liệu vào

mốc 1 : ngay = 29 tháng = 2

mốc 2 : ngay = 3 tháng = 4 năm

2009

là sai cho nhập lại

dữ liệu vào

mốc 1 : ngay = 29 tháng = 2

mốc 2 : ngay = 3tháng = 3 năm

2000

dữ liệu ra

3 ngày

Bài 3: (3đ) Sắp xếp các số nguyên dương theo thứ tự giảm dần theo số ước của chúng

ĐỀ CHÍNH THỨC

Trang 2

Nhiệm vụ của chương trình:

- Tên tập tin: Bai_3.pas

- Chương trình tạo ra 20 số nguyên dương ngẫu nhiên trong khoảng [20 100]

- Xuất ra màn hình các số đã tạo

- Xuất ra màn hình các số đã tạo sau khi đã sắp xếp các số đó theo thứ tự giảm dần theo số ước của chúng.

Ví dụ:

47; 78; 32; 38; 30; 56; 35; 31; 51; 66; Cac so da tao:

47; 78; 32; 38; 30; 56; 35; 31; 51; 66;

Cac so sau khi da sap xep giam dan theo so uoc:

78; 30; 56; 66; 32; 35; 51; 38; 47; 31;

Bài 4: (3đ)

Nhập vào một dãy số nguyên

Cho biết dãy đã sắp xếp chưa tăng dần hay giảm dần

Nếu dãy dã sắp xếp hãy cho nhập số n bất kì và chèn vào dãy sao cho dãy vẫn bảo đảm được sắp xếp (không được xếp lại sau khi chèn thêm).

Nếu dãy chưa sắp xếp thì sắp xếp lại dãy tăng dần

Nhiệm vụ của chương trình:

- Tên tập tin: Bai_4.pas

- Dữ liệu vào là dãy số nguyên

- Dữ liệu ra dãy vừa nhập

- Nếu dãy đã được sắp xếp thì xuất dãy sau khi chèn thêm n

- Nếu dãy chưa được sắp xếp thì xuất dãy đã sắp xếp lại

Ví dụ

dữ liệu vào

5 6 7 8 9

N =6

dữ liệu ra

dãy đã được sắp xếp tăng dần dãy sau khi chèn thêm n là

5 6 6 7 8 9

dữ liệu vào

3 8 9 5 7 dãy chưa được sắp xếpdữ liệu ra

sắp xếp lại dãy là

3 5 7 8 9

Trang 3

Chữ ký GT1: ……… Chữ ký GT2:

………

UBND HUYỆN NINH HOÀ ĐÁP ÁN ĐỀ THI CHỌN HỌC SINH GIỎI CẤP

HUYỆN

PHÒNG GIÁO DỤC VÀ ĐÀO TẠO NĂM HỌC 2009 − 2010

MÔN: TIN HỌC 9

(Thời gian: 150 phút – không kể phát đề)

Bài 1:

program bai1;

Uses crt;

Var

st,s1,tam:string;

i,n,e,tong:integer;

kt:boolean;

BEGIN

clrscr;

kt:=false;

repeat

write('Nhap chuoi gom ky tu va so: '); readln(st);

for i:=1 to length(st) do if st[i] in ['0' '9'] then

kt:=true;

if kt = false then

begin

write('Nhap sai! Yeu cau nhap lai: '); readln(st)

end;

until kt=true;

s1:=st;

for i:=1 to length(s1) do if not(s1[i] in ['0' '9']) then

s1[i]:=#32;

repeat

delete(s1,pos(#32#32,s1),1);

until pos(#32#32,s1) = 0;

if s1[1]=#32 then delete(s1,1,1);

if s1[length(s1)]=#32 then delete(s1,length(s1),1);

tam:=''; s1:=s1+#32; tong:=0;

for i:=1 to length(s1) do if s1[i]<>#32 then tam:=tam+s1[i]

else begin

val(tam,n,e);

tong:=tong+n;

Trang 4

tam:='';

end;

writeln('Chuoi da nhap: ',st);

write('Tong cac so co trong chuoi: ', tong);

readln

end

Tổng điểm: 2 điểm

− Thực hiện đúng phần nhập theo nhiệm vụ của chương trình (0,75 điểm)

− Tính được tổng và xuất được kết quả đúng ra màn hình (1,25 điểm)

− Nếu thí sinh thực hiện đúng được phần nhập, có ý tưởng xử lí chuỗi đã nhập để thực hiện tính tổng nhưng tính tổng cho kết quả sai (1 điểm)

Bài 2:

program bai2;

uses crt;

var ng1,th1,ng2,th2,n,son:integer;

a:array[1 12]of integer;

i,j:integer;

kt: boolean;

begin

repeat

kt:=true;

clrscr;

writeln('***tinh so ngay:*** ');

write('tu ngay: '); readln(ng1);

write('thang: '); readln(th1);

write('den ngay: '); readln(ng2);

write('thang: '); readln(th2);

write('nam: '); readln(n);

if (ng1<=0)or(ng2<=0)or(th1<=0)or(th2<=0)or (n<=0) then

kt:=false ;

if(th1>12)or(th2>12) or(ng1>31)or(ng2>31) then kt:=false;

if (th1 in [ 4,6,9,1]) and (th1=31) then kt:=false ;

if (th2 in [ 4,6,9,1]) and (th2=31) then kt:=false;

if (th1 =2) and (n mod 4<>0) and (ng1 >28) then kt:=false ;

if (th2 =2) and (n mod 4<>0) and (ng2 >28) then kt:=false ;

if (th1 =2) and (n mod 4=0) and (ng1 >29) then kt:=false ;

if (th2 =2) and (n mod 4=0) and (ng2 >29) then kt:=false ;

if (th1>=th2) and (ng1>ng2) then kt:=false;

if kt= false then begin

write(' nhap sai nhan enter nhap lai');

readln ;

end;

until kt = true;

if n mod 4<>0 then a[2]:=28 else a[2]:=29;

for i:=1 to 12 do

case i of

1,3,5,7,8,10,12: a[i]:=31;

4,6,9,11: a[i]:=30;

end;

son:=0;

if th2<>th1 then

begin

for i:=(th1+1) to (th2-1) do son:= son+a[i];

Trang 5

son:=son+(a[th1]-ng1)+ng2+1;

end

else son:=ng2-ng1+1;

write('***tu ',ng1,'/',th1,' den ',ng2,'/',th2,' nam ',n,' co ',son,' ngay***');

readln;

end

Tổng điểm: 2 điểm

- Nhập dữ liệu vào có bẩy lổ khi nhập (0,5 điểm)

- Lí luận tính dúng số ngày (1 điểm)

- Viết ra kết quả đúng (0,5 điểm)

Bài 3:

program bai3;

Uses crt;

Type Data = record

n,u:integer;

end;

Var

a:array[1 10] of Data; tam: Data;

i, j, d: integer;

Begin

clrscr;

Randomize;

writeln('Cac so ngau nhien da tao: ');

For i:=1 to 10 do

Begin

a[i].n:=random(81)+20;

write(a[i].n,'; ');

end;

d:=0;

for i:=1 to 10 do

begin

d:=0;

for j:=1 to a[i].n do if a[i].n mod j = 0 then inc(d);

a[i].u:=d;

end;

for i:=1 to 9 do

for j:=i+1 to 10 do if a[i].u < a[j].u then

begin

tam:=a[i];

a[i]:=a[j];

a[j]:=tam;

end;

writeln; writeln('Cac so sau khi da sap xep giam dan theo so uoc: ');

for i:=1 to 10 do write(a[i].n,'; ');

readln

end

Tổng điểm: 3 điểm

- Thực hiện đúng phần nhập theo nhiệm vụ của chương trình (0,75 điểm)

- Xác định được số ước của các số đã tạo (0,75 điểm)

Trang 6

- Sắp xếp được các số theo nhiệm vụ của chương trình và xuất kết quả ra màn hình (1,5 điểm)

Bài 4:

program bai4;

uses crt;

var n,i,v,j,b,p,m:integer;

a:array[1 50]of integer;

kt:boolean;

begin

clrscr;

write('ban dinh nhap day so co bao nhieu phan tu: ');

readln(n);

for i:=1 to n do

begin

write('a[',i,']=');

readln(a[i]);

end;

write('day da nhap la:');

for i:=1 to n do write(a[i]:3);

writeln;

kt:=true;

for i:=1 to n-1 do

if a[i]<a[i+1] then kt:=true else

begin

kt:=false;

break; end;

if kt=true then

begin

writeln('day da duoc sap xep theo chieu tang dan');

m:=1;

end;

kt:=true;

for i:=1 to n-1 do

if a[i]>a[i+1] then kt:=true else

begin

kt:=false;

break; end;

if kt=true then

begin

writeln('day da duoc sap xep theo chieu giam dan');

m:=2;

end;

if (m=1)or(m=2) then

begin

write('ban dinh chen vao day phan tu: ');

readln(p);

if m=1 then

begin

for i:=1 to n do

if (p>=a[i])and(p<=a[i+1]) then break ;

j:=i+1;

for i:=n+1 downto j+1 do

a[i]:=a[i-1];

a[j]:=p;

write('day sau khi chen la: ');

Trang 7

for i:=1 to n+1 do write(a[i]:5);

end;

if m=2 then

begin

for i:=1 to n do

if (p<=a[i])and(p>=a[i+1]) then break ; j:=i+1;

for i:=n+1 downto j+1 do

a[i]:=a[i-1];

a[j]:=p;

write('day sau khi chen la: ');

for i:=1 to n+1 do write(a[i]:5);

end;

end;

if (m<>1)and(m<>2) then

begin

writeln('day chua duoc sap xep');

for i:=1 to n do

for j:=i+1 to n do

if a[i]>a[j] then

begin

b:=a[i];

a[i]:=a[j];

a[j]:=b;

end;

write('day sap xep theo chieu tang dan la:'); for i:=1 to n do write(a[i]:3);

end;

readln;

end

Tổng điểm: 3 điểm

- Nhập được dữ liệu (0,5 điểm)

- Kiểm tra được dãy tăng hay giảm (0,5 điểm)

- Chèn được dữ liệu (1điểm)

- Sắp xếp và viết ra được dữ liệu (1điểm)

Ngày đăng: 09/11/2013, 15:11

HÌNH ẢNH LIÊN QUAN

- Xuất ra màn hình chuỗi đã nhập - Đề-đáp án HSG tin 9 năm 2009-2010 NINH HOA
u ất ra màn hình chuỗi đã nhập (Trang 1)
- Xuất ra màn hình các số đã tạo sau khi đã sắp xếp các số đó theo thứ tự giảm dần theo số ước của chúng. - Đề-đáp án HSG tin 9 năm 2009-2010 NINH HOA
u ất ra màn hình các số đã tạo sau khi đã sắp xếp các số đó theo thứ tự giảm dần theo số ước của chúng (Trang 2)
− Tính được tổng và xuất được kết quả đúng ra màn hình (1,25 điểm) - Đề-đáp án HSG tin 9 năm 2009-2010 NINH HOA
nh được tổng và xuất được kết quả đúng ra màn hình (1,25 điểm) (Trang 4)

TỪ KHÓA LIÊN QUAN

w