Tải bản đầy đủ (.doc) (7 trang)

Bài giảng Dedap an HSG tin 9 nam 20092010 NINH HOA

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (139.31 KB, 7 trang )

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ụ:
Input Output
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
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ụ:
Input Output
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ữ liệu ra
dãy chưa được sắp xếp
sắp xếp lại dãy là
3 5 7 8 9
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;
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];
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)

×