Thi học sinh giỏi môn Tin học cấp thành phố lớp 9 - Năm học 2006 - 2007

doc 5 trang Người đăng haibmt Lượt xem 1286Lượt tải 2 Download
Bạn đang xem tài liệu "Thi học sinh giỏi môn Tin học cấp thành phố lớp 9 - Năm học 2006 - 2007", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
Thi học sinh giỏi môn Tin học cấp thành phố lớp 9 - Năm học 2006 - 2007
 UBND thành phố huế
 Phòng Giáo dục 
thi học sinh giỏi môn tin học cấp thành phố
 Lớp 9 - Năm học 2006-2007
 Thời gian: 120 phút (Không kể thời gian giao đề)
Yêu cầu: Mỗi thí sinh tạo một Folder mang tên là: K9- chứa trong D:\ và lưu các file sau vào đúng Folder vừa tạo.
Câu 1 (3 điểm) : Tạo file mang tên BAI1.PAS thực hiện chương trình sau :
Kết quả thi của học sinh gồm những thông tin sau: Họ tên, lớp, điểm toán (DT), điểm văn(DV), điểm trung bình (DTB), xếp loại(XL). Trong đó:
Điểm trung bình được tính như sau: DTB=(DT*2+DV)/3
Xếp loại dựa trên điểm trung bình như sau:
Nếu DTB>=8.0, xếp loại giỏi
Nếu 8.0>DTB>=6.5, xếp loại khá.
Nếu 6.5>DTB>=5.0, xếp loại trung bình
Còn lại xếp loại chưa đạt
Hãy viết chương trình dưới dạng các chương trình con thực hiện việc in ra màn hình danh sách học sinh theo thứ tự giảm dần của điểm trung bình kèm theo các thông tin: Họ tên, lớp, điểm trung bình, xếp loại.
Câu 2 (3 điểm) : Tạo file mang tên BAI2.PAS thực hiện chương trình sau : 
Viết chương trình theo yêu cầu sau: 
Khi nhấn phím “n” hoặc “N”: chương trình thực hiện đổi một số thập phân sang dãy số nhị phân.
Khi nhấn phím “t” hoặc “T”: chương trình thực hiện đổi dãy số nhị phân sang số thập phân.
Câu 3 (4 điểm) : Tạo file mang tên BAI3.PAS thực hiện chương trình sau:
 Hai file SN1.TXT, SN2.TXT chứa các số nguyên bất kì. Hãy viết chương trình tạo file KQ.OUT chứa các số nguyên được sắp xếp theo thứ tự tăng dần, mỗi số trong file KQ.OUT là tổng của hai số nguyên lấy từ file SN1.TXT và SN2.TXT. 
Ví dụ: File SN1.TXT chứa các số nguyên: 1 9 7 12; SN2.TXT chứa các số nguyên: 31 5 2 1 thì file KQ.OUT có kết quả: 9 13 14 32.
Thí sinh không được sử dụng tài liệu
Giám thị không giải thích gì thêm
đáp án 9
Bài 1: 
type HS=record
 ht:string;
 lop:string[10];
 dt,dv,dtb:real;
 xl:string[10];
 end;
 hs1=array[1..20] of hs;
 var hss:hs1;
i,j,n:integer;
procedure nhap(var hss:hs1);
begin
writeln(' nhap thong tin cho hoc sinh:');
for i:=1 to n do
begin
 with hss[i] do
 begin
 writeln(' nhap ho ten');
 readln(ht);
 writeln(' nhap lop');
 readln(lop);
 writeln(' nhap diem toan');
 readln(dt);
 writeln(' nhap diem van');
 readln(dv);
 dtb:=(dt*2+dv)/3;
 if dtb>=8.0 then xl:=' loai gioi'
 else if dtb>=6.5 then xl:='loai kha'
 else if dtb>=5.0 then xl:='loai trung binh'
 else xl:=' loai chua dat';
 end;
end;
end;
{------------------------}
procedure sx(var hss:hs1);
var tam:hs;
begin
 for i:=1 to n-1 do
 for j:=i+1 to n do
 if hss[i].dtb<hss[j].dtb then
 begin
 tam:=hss[i];
 hss[i]:=hss[j];
 hss[j]:=tam;
 end;
readln;
end;
Begin
writeln(' nhap so hoc sinh');
readln(n);

nhap(hss);
sx(hss);
writeln(' ket qua sau khi sap xep');
 for i:=1 to n do
 with hss[i] do
 begin
 writeln(ht,' ',lop,' ',dtb:0:2,' ',xl);
 end;
 readln;
End.
Bài 2: 
var st,st2:string;
p,i,n,j,t:integer;
ch,ch1:char;
procedure nhap;
 begin
 writeln('nhap so thap phan n:');
 readln(n);
 end;
procedure doinp(n:integer);
var st1,stt:string;t,d:integer;
 begin
 st1:='';
 repeat
 t:=n div 2;
 d:=n mod 2;
 n:=t;
 str(d,stt);
 st1:=st1+stt;
 until t=0;
 for i:=length(st1) downto 1 do
 write(st1[i]:3);
 writeln;
 end;
 function hammu(n:integer):integer;
 var p:integer;
 begin
 if n=0 then hammu:=1
 else
 begin
 p:=1;
 for i:=1 to n do
 begin
 p:=P*2;
 end;
 hammu:=p;
end;
 end;
procedure doitp(st:string;var t:integer);
var so,k,i:integer;
begin
t:=0;
for i:=1 to length(st) do
 begin
 val(st[i],k,so);
 t:=t+k*hammu(length(st)-i);
 end;
end;
BEGIN
 repeat
 writeln(' moi ban chon chuc nang');
 readln(ch1);
 case ch1 of
 'n': begin
 nhap;
 writeln('so thap phan', n ,' doi thanh day nhi phan:');
 doinp(n);
 end;
 't': begin
 writeln(' moi ban nhap day so nhi phan can doi');
 readln(st2);
 doitp(st2,t);
 writeln(t);
 end;
 end;
 writeln('doi nua khong?');
 readln(ch);
 until ch in['k','K'];
END.
Bài 3: 
type f=file of integer;
var f1,f2,f3:f;
i,j,n,m,tam:integer; ch:char;
procedure taofile(var f1,f2:f);
begin
 assign(f1,'c:\f1.txt');
 rewrite(f1);
 assign(f2,'c:\f2.txt');
 rewrite(f2);
 repeat
 writeln(' nhap gia tri cho file f1');
 readln(n);
 write(f1,n);
 writeln('Tiep tuc?');
 readln(ch);
 until ch in['k','K'];
 repeat
 writeln(' nhap gia tri cho file f2');
 readln(m);
 write(f2,m);
 writeln('Tiep tuc (c/k)?');
 readln(ch);
 until ch in['k','K'];
 close(f1);
 close(f2);
 readln;
 end;
 procedure taokq(var f3:f);
 var i,u,v:integer;
Begin
 assign(f1,'c:\f1.txt');
 reset(f1);
 assign(f2,'c:\f2.txt');
 reset(f2);
 assign(f3,'c:\f3.out');
 rewrite(f3);
{while not eof(f1) do
 begin
 while not eof(f2) do
 begin
 read(f1,n);
 read(f2,m);
 tam:=n+m;
 write(f3,tam);
 end;
 end;}
 n:=filesize(f1);
 m:=filesize(f2);
 if n<=m then
 begin
 for i:=1 to n do
 begin
 read(f1,u);
 read(f2,v);
 u:=u+v;
 write(f3,u);
 end;
 for i:=n+1 to m do
 begin
 read(f2,u);
 write(f3,u);
 end;
 end
 else
 begin
 for i:=1 to m do
 begin
 read(f1,u);
 read(f2,v);
 u:=u+v;
 write(f3,u);
 end;
 for i:=m+1 to n do
 begin
 read(f1,u);
 write(f3,u);
 end;
 end;
 close(f1);
 close(f2);
 close(f3);
end;
BEGIN
 taofile(f1,f2);
 taokq(f3);
 assign(f3,'c:\f3.out');
 reset(f3);
 writeln('file kq co ',filesize(f3),' phan tu la:');
while not eof(f3) do
 begin
 read(f3,n);
 writeln(n);
 end;
 readln;
 end.

Tài liệu đính kèm:

  • docTin_Hoc_9.doc