Viết chương trình cho phép nhập số tự nhiên N từ bàn phím với 0... Ví dụ: Bài 33,5 điểm: Tam giác Viết chương trình cho phép nhập số đo hai góc ABC và BCA của tam giác ABC từ bàn phím
Trang 1UBND HUYỆN QUẾ SƠN
PHÒNG GD&ĐT KỲ KHẢO SÁT HỌC SINH GIỎI LỚP 6,7,8 CẤP HUYỆNNĂM HỌC 2013-2014
Môn: Tin học - Lớp 8
Thời gian làm bài: 120 phút (Không kể thời gian giao đề)
ĐỀ CHÍNH THỨC
Bài 1 (3,0 điểm): Giai thừa
N! (N giai thừa) được định nghĩa: là tích của N số tự nhiên dương đầu tiên.
Viết chương trình cho phép nhập số tự nhiên N từ bàn phím (với 0<N12) rồi thực hiện:
a) Tìm N! = 1.2.3 N
N!
1
3!
1 2!
1 1!
1
c) Xóa tất cả các chữ số 0 tận cùng của N! rồi xuất kết quả ra màn hình.
Ví dụ:
Bài 2(3,5 điểm): Dãy số
Viết chương trình cho phép nhập dãy gồm N số nguyên a 1 , a 2 , a n từ bàn phím rồi thực hiện:
a) Tìm số có giá trị tuyệt đối lớn nhất trong dãy số vừa nhập Trong trường hợp có nhiều số có giá trị tuyệt đối lớn nhất bằng nhau thì ghi ra số đầu tiên tìm được.
b) So sánh số lượng số nguyên dương với số lượng số nguyên âm có trong dãy.
c) Nhập k từ bàn phím và cho biết vị thứ của phần tử a k trong dãy Việc xếp vị thứ được thực hiện: Số có giá trị lớn nhất được xếp vị thứ 1, hai
số có cùng giá trị thì được xếp cùng một vị thứ Khi có hai hoặc nhiều số sắp
Trang 2vị thứ k thì không có số được xếp vị thứ k+1 (Ví dụ: Có 2 số có vị thứ 1 thì không có số có vị thứ 2).
Ví dụ:
Bài 3(3,5 điểm): Tam giác
Viết chương trình cho phép nhập số đo hai góc ABC và BCA của tam giác ABC từ bàn phím rồi thực hiện:
a) Cho biết tam giác ABC là tam giác gì (Tam giác thường, tam giác vuông, tam giác cân, tam giác vuông cân, tam giác đều)? Câu trả lời không được thừa (Ví dụ: Đã trả lời là tam giác đều thì không trả lời là tam giác cân;
đã trả lời là tam giác vuông cân thì không trả lời là tam giác vuông và cũng không trả lời là tam giác cân).
b) Xác định cạnh lớn nhất của tam giác Trong trường hợp có nhiều cạnh lớn nhất bằng nhau cần chỉ ra tất cả các cạnh đó.
c) Xét xem số đo ba góc của tam giác ABC có là ba số hạng liên tiếp của một cấp số cộng không Biết rằng một dãy số gọi là cấp số cộng nếu phần
tử đứng sau bằng phần tử đứng trước cộng với một số không đổi.
Dãy 30, 60, 90 là cấp số cộng do số sau bằng số trước cộng 30.
60, 60, 60 cũng là cấp số cộng do số sau bằng số trước cộng 0.
Ví dụ:
Trang 3UBND HUYỆN QUẾ SƠN
PHÒNG GD&ĐT KỲ KHẢO SÁT HỌC SINH GIỎI LỚP 6,7,8 CẤP HUYỆNNĂM HỌC 2013-2014
Môn: Tin học - Lớp 8
HƯỚNG DẪN CHẤM
Bài 1: (3,0 điểm)
a) Code tham khảo:
Program bai1;
Var i,n:integer;
p:longint;
x,s: real;
Begin
repeat
Write('Nhap so N: ');Readln(n);
until (n>0) and (n<=12);
p:=1;
for i:=1 to n do p:=p*i;
Writeln('a) ',n,'!= ',p);
1,0
x:=1; s:=0;
For i:=1 to n do
Begin
x:=x/i;
s:=s+x;
End;
Writeln('b) S = ',s:12:10);
1,0
while p mod 10 = 0 do p:=p div 10;
Writeln('c) Sau khi xoa chu so khong: ',p);
Readln;
1,0
Trang 4b) Yêu cầu xây dựng test:
Khai báo biến chứa giá trị giai thừa phù hợp (longint) 1 0,25
(Tổng số test cần xây dựng: 5)
Bài 2 (3,5 điểm):
Program Bai2;
Var n,i, am, duong, max, vt_max, k, vthu:integer;
M: array[1 20] of integer;
Begin
Write('Nhap N: ');Readln(n);
For i:=1 to n do
begin
Write('M[',i,']=');
Readln(M[i]);
End;
0,5
Max:=abs(M[1]); vt_max:=1;
For i:=2 to n do
if abs(M[i])> Max then
Begin
Max:=abs(M[i]);
vt_max:=i;
End;
Writeln('a)So co gia tri tuyet doi lon nhat trong
day la: ',M[vt_max]);
1,0
am:=0; duong:=0;
For i:=1 to n do
Begin
if M[i]>0 then duong:=duong+1;
if M[i]<0 then am:=am+1;
End;
Write('b) So sanh: ');
if am < duong then writeln('so so duong > so so
am');
if am > duong then writeln('so so duong < so so
am');
if am = duong then writeln('so so duong = so so
am');
1,0
Trang 5repeat
write('Nhap k: ');Readln(k);
until (k>0) and (k<=n);
vthu:=1;
for i:=1 to n do
if M[k]<M[i] then vthu:=vthu+1;
Write('c) So thu k co vi thu la: ',vthu);
readln;
End.
1,0
b) Yêu cầu xây dựng test:
(Tổng số Test cần xây dựng: 4)
Bài 3 (3,5 điểm):
Program bai3;
Var A,B,C:real;
ok:boolean;
Begin
repeat
Write('Nhap so do goc ABC: ');Readln(B);
Write('Nhap so do goc BCA: ');Readln(C);
until B+C<180;
A:=180-(B+C);
if (A=B) and (B=C) then writeln('a) ABC la tam giac
deu');
if ((A=90) or (B=90) or (C=90)) then
if ((A=45) or (B=45) or (C=45)) then writeln('a)
ABC la tam giac vuong can')
else writeln('a) ABC la tam giac vuong');
if ((A=B) or (A=C) or (B=C)) and (A<>90) and
(B<>90) and (C<>90) and (A<>60) then writeln('a) ABC la
tam giac can');
if (A<>B) and (B<>C) and (C<>A) and (A<>90) and
(B<>90) and (C<>90) then writeln('a) ABC la tam giac
thuong');
1,5
if (A>=B) and (A>=C) then writeln('b) Canh lon nhat
la BC');
if (B>=A) and (B>=C) then writeln('b) Canh lon nhat
la AC');
if (C>=A) and (C>=B) then writeln('b) Canh lon nhat
la AB');
1,0
ok:=false;
if A-B=B-C then ok:=true;
if A-C=C-B then ok:=true;
if B-A=A-C then ok:=true;
1,0
Trang 6if B-C=C-A then ok:=true;
if C-A=A-B then ok:=true;
if C-B=B-A then ok:=true;
if ok then Writeln('c)Cap so cong') else
Writeln('c)Khong cap so cong');
readln;
End.
b) Yêu cầu xây dựng test:
Xác định được loại tam giác (Thường, cân, vuông, vuông cân,
Xác định được số đo các góc có tạo thành cấp số cộng không 4 1,00
(Tổng số test cần xây dựng: 6) (Việc xây dựng test cần đảm bảo các yêu cầu vừa kết hợp đánh giá được nhiều yêu cầu trên cùng một test để giảm thời gian chấm)