Môn thi: TIN HỌC Thời gian: 120 phút không kể thời gian giao đề TỔNG QUAN BÀI THI Tên bài Tên chương trình Dữ liệu vào Kết quả Em hãy dùng ngôn ngữ lập trình Pascal để lập trình giải các
Trang 1PHÒNG GD&ĐT
HẢI LĂNG
ĐỀ THI CHỌN HSG CẤP HUYỆN NĂM HỌC 2008 – 2009
Khóa ngày 22 tháng 5 năm 2009
Môn thi: TIN HỌC
Thời gian: 120 phút (không kể thời gian giao đề)
TỔNG QUAN BÀI THI
Tên bài Tên chương trình Dữ liệu vào Kết quả
Em hãy dùng ngôn ngữ lập trình Pascal để lập trình giải các bài toán sau:
Bài 1: Cạnh tam giác (3 điểm)
Nhập vào ba số dương, kiểm tra xem chúng có thỏa mãn là ba cạnh của tam giác hay không? Nếu thỏa mãn thì kiểm tra xem đó là tam giác gì? (tam giác thường,
cân hay đều) Tính diện tích tam giác đó theo công thức: dt = (p(p-a)(p-b)(p-c)); với
p bằng nữa chu vi.
Bài 2: Chuẩn hóa xâu (4 điểm)
Nhập vào một câu (xâu ký tự); chuẩn hóa câu đó (nghĩa là đầu và cuối câu không có ký tự trống, giữa các từ cách nhau chỉ đúng một ký tự trống) Đếm xem câu
đó có mấy từ?
Ví dụ: INPUT (nhập vào): “ cong cha nhu nui Thai Son ”
OUTPUT (in ra): “cong cha nhu nui Thai Son”
Cau nay co: 6 tu (câu này có 6 từ)
Bài 3: Dãy lớn nhất (3 điểm)
Nhập một dãy số nguyên và lưu trong một mảng Không dùng mảng trung gian
hãy in ra màn hình dãy con tăng nghiêm ngặt (phần tử sau phải lớn hơn phần tử trước) có tổng giá trị các phần tử lớn nhất.
Ví dụ: INPUT (nhập vào): 1 3 2 8 10 12 7 29 6 3
OUTPUT (in ra): 7 29
……… HẾT ………
(Cán bộ coi thi không giải thích gì thêm!)
ĐỀ CHÍNH THỨC
Trang 2PHÒNG GD&ĐT
HẢI LĂNG
ĐỀ THI CHỌN HSG CẤP HUYỆN NĂM HỌC 2008 – 2009
Khóa ngày 22 tháng 5 năm 2009
Môn thi: TIN HỌC
Thời gian: 120 phút (không kể thời gian giao đề)
ĐÁP ÁN – HƯỚNG DẪN CHẤM:
Bài 1: Cạnh tam giác (3 điểm)
Có thể đưa ra chương trình như sau:
Program TAMGIAC;
Var a, b, c: Real;
p, dt: Real;
Begin
Write('Nhap vao 3 so:'); Readln(a, b, c);
If (a+b>c) and(b+c>a) and(a+c>b)then
Begin
If (a=b) and(b=c) then
Writeln('TAM GIAC DEU') Else
If (a=b)or(b=c)or(a=c) then
Writeln('TAM GIAC CAN') Else
Writeln('TAM GIAC THUONG');
p:=(a+b+c)/2;
dt:= sqrt(p*(p-a)*(p-b)*(p-c));
Write(' Dien tich cua tam giac la:', dt:10:2);
End Else
Writeln('Khong thoa man 3 canh tam giac!!');
Readln;
End
+ Khai báo đúng, đủ biến và lệnh nhập dữ liệu: 0.5 điểm + Đưa ra đúng điều kiện thỏa mản 3 cạnh tam giác: 0.5 điểm
+ Đưa ra đúng điều kiện thỏa mản 3 cạnh tam giác: 0.5 điểm
+ Đưa ra đúng điều kiện thỏa mản tam giác đều: 0.5 điểm + Đưa ra đúng điều kiện thỏa mản tam giác cân: 0.5 điểm + Tính đúng diện tích: 0.5 điểm
Bài 2: Chuẩn hóa xâu (4 điểm)
Có thể đưa ra chương trình như sau:
Program CH_XAU;
Var st: string; i, dem: integer;
Begin
Write('Nhap xau:'); Readln(st);
Writeln('Xau truoc khi chuan hoa la:', st);
While st[1]=' ' do Delete(st,1,1);
While st[length(st)]=' ' do Delete(st,length(st),1);
For i:=1 to length(st) do
If st[i]=' ' then
While st[i+1]=' ' do Delete(st,i+1,1);
Write('Xau chuan hoa la:', st);
+ Khai báo đúng, đủ biến và lệnh nhập dữ liệu: 0.5 điểm + Xóa được tất cả các ký tự trống đầu: 0.5 điểm
+ Xóa được tất cả các ký tự trống cuối: 0.5 điểm
+ Xóa được tất cả các ký tự trống ở giữa và chỉ để lại một: 1.5 điểm
+ Đếm đúng số từ: 1 điểm
Trang 3For i:=1 to length(st) do
If st[i]=' ' then dem:=dem+1;
Writeln('= cau nay co ',dem+1, ' tu!!!');
Readln;
End
Bài 3: Dãy lớn nhất (3 điểm)
Có thể đưa ra chương trình như sau:
Program DAYMAX;
Var a:array[1 100] of integer;
spt,i, vt, max, n, tong: integer;
Begin
Write('Nhap so pt cua mang:'); Readln(spt);
For i:=1 to spt do
Begin
Write('A[',i,']='); Readln(a[i]);
End;
Write('Mang so da cho ban dau:');
For i:=1 to spt do Write(a[i]:3);
Writeln;
vt:=1; max:=a[1]; n:=1; tong:=a[1];
For i:=2 to spt do
Begin
If(a[i]>a[i-1]) then tong:=tong+a[i];
If(a[i]<=a[i-1]) or(i=spt) then
Begin
If tong>max then
Begin
max:=tong; vt:=n;
End;
n:=i; tong:=a[i];
End;
End;
Writeln(' Day con co tong lon nhat la:');
i:=vt;
Repeat
Write(a[i]:3); max:=max-a[i]; i:=i+1;
Until max=0;
Readln;
End
+ Khai báo đúng, đủ biến và lệnh nhập dữ liệu: 0.5 điểm
+ Có in ra mảng trước và dãy cần tìm: 0.5 điểm
+ Nếu chương trình không đúng nhưng có ý tưởng tốt thì
cho tổng cộng 1 điểm.