Đề thi môn Tin học Lớp 9 - Kỳ thi chọn học sinh giỏi - Vòng 2 - Năm học 2020-2021 - Trường THCS Thị trấn Hương Sơn (có đáp án)

Đề thi môn Tin học Lớp 9 - Kỳ thi chọn học sinh giỏi - Vòng 2 - Năm học 2020-2021 - Trường THCS Thị trấn Hương Sơn (có đáp án)

Bài 1: (5 điểm)

Nhập vào mảng 1 chiều gồm 1 dãy số nguyên N phần tử. Hãy xóa các phần tử trùng nhau trong mảng và in kết quả ra màn hình.

Câu 2: (5 điểm).

Xâu kí tự thuần nhất được định nghĩa là xâu chỉ bao gồm các chữ cái tiếng anh. Một xâu thuần nhất có thể được viết thu gọn, bao gồm các số thứ tự kèm theo tần số xuất hiện liên tiếp của nhóm đó!

VD: AACCBBB<-->A2B2C3

XCAABAABAABCCADADCADCAABAABCCADADY<-->X(C(A2B)3C2(AD)2)2Y

(AB)2(QXA)3<-->ABABQXAQXAQXA

Hãy viết chương trình thu gọn và giải mã (hay nén và giải nén) xâu.

Câu 3: (5 điểm).

 Viết chương trình trừ 2 số tự nhiên lớn không quá 255 kí tự và in kết quả ra màn hình.

 VD : 456789 – 345678 = 111111

 542879654 – 123 = 542879532

Câu 4: (5 điểm).

 Viết chương trình thao tác trên mảng 2 chiều với các công việc sau:

 + Nhập xuất mảng 2 chiều.

 + Đếm số lần xuất hiện giá trị 0 trong mảng.

 + Tìm giá trị lớn nhất trong mảng 2 chiều đã nhập vào.

 

doc 9 trang hapham91 8901
Bạn đang xem tài liệu "Đề thi môn Tin học Lớp 9 - Kỳ thi chọn học sinh giỏi - Vòng 2 - Năm học 2020-2021 - Trường THCS Thị trấn Hương Sơn (có đáp án)", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
 TRƯỜNG THCS TT HƯƠNG SƠN KỲ THI HỌC SINH CHỌN HSG
 MÔN : TIN HỌC
	 KHỐI LỚP 9 VÒNG 2
	 Năm học 2020 - 2021
 Thời gian làm bài 150 phút (Không kể thời gian phát đề)
ĐỀ BÀI
Bài 1: (5 điểm)
Nhập vào mảng 1 chiều gồm 1 dãy số nguyên N phần tử. Hãy xóa các phần tử trùng nhau trong mảng và in kết quả ra màn hình.
Câu 2: (5 điểm).
Xâu kí tự thuần nhất được định nghĩa là xâu chỉ bao gồm các chữ cái tiếng anh. Một xâu thuần nhất có thể được viết thu gọn, bao gồm các số thứ tự kèm theo tần số xuất hiện liên tiếp của nhóm đó!
VD: AACCBBB A2B2C3
XCAABAABAABCCADADCADCAABAABCCADADY X(C(A2B)3C2(AD)2)2Y
(AB)2(QXA)3 ABABQXAQXAQXA
Hãy viết chương trình thu gọn và giải mã (hay nén và giải nén) xâu.
Câu 3: (5 điểm).
	Viết chương trình trừ 2 số tự nhiên lớn không quá 255 kí tự và in kết quả ra màn hình.
	VD : 456789 – 345678 = 111111
	542879654 – 123 = 542879532
Câu 4: (5 điểm).
	Viết chương trình thao tác trên mảng 2 chiều với các công việc sau:
	+ Nhập xuất mảng 2 chiều.
	+ Đếm số lần xuất hiện giá trị 0 trong mảng.
	+ Tìm giá trị lớn nhất trong mảng 2 chiều đã nhập vào.
Chú ý
Học sinh làm bài xong phải lưu vào ổ đĩa D:\SBD với tên: BAI1.PAS, BAI2.PAS, BAI3.PAS, BAI4. PAS.
Tất cả dữ liệu được nhập từ bàn phím và xuất kết quả ra màn hình.
Giám thị coi thi không giải thích gì thêm.
Hết
	-----–&—-----
TRƯỜNG THCS TT HƯƠNG SƠN KỲ THI HỌC SINH CHỌN HSG
 MÔN : TIN HỌC
	 KHỐI LỚP 9 VÒNG 2
	 Năm học 2020 - 2021
 Thời gian làm bài 150 phút (Không kể thời gian phát đề)
BIỂU ĐIỂM
- Khai báo biến đúng : 0,5 điểm.
- Nhập được dữ liệu: 1 điểm
- Xử lý được thuật toán: 2 điểm
- Xuất được dữ liệu 0,5 điểm
- Chương trình chạy đúng: 1 điểm.
ĐÁP ÁN 
Các chương trình tham khảo.
Chú ý: - Học sinh làm theo cách khác mà đúng vẫn được điểm tối đa.
 - Chương trình chạy được mới tính điểm.
Bài 1
Program Bai1;
 Const
 Max=100;
 Var
 a:Array[1..Max] Of Integer;
 i,j,k,n:Integer;
Begin
 Write('-Nhap so phan tu mang: ');
 Readln(n);
 For i:=1 To N Do
 Begin
 Write('-Phan tu A[',i,']= ');
 Readln(a[i]);
 End;
 i:=2;
 While i <= N Do
 Begin
 j:=1;
 While a[j] <> a[i] Do
 j:=j+1;
 If j < i Then
 Begin
 For k:=i to n-1 Do
 a[k]:= a[k+1];
 n:=n-1;
 End
 Else
 i:=i+1;
 End;
 Writeln;
 Write('-Mang con lai: ');
 For i:=1 to n Do
 Write(a[i]:8);
 Writeln;
 Writeln(' Bam phim de ket thuc ');
 Readln
End. 
Bài 2
program bai2;
uses crt;
var s,ss,st,si:string; i,j,l:integer;
function kttn(s:string):boolean;
 var x:char; ok:boolean;
 begin
 kttn:=true;
 for i:=1 to length(s) do
 s[i]:=upcase(s[i]);
 for i:=1 to length(s) do
 begin
 ok:=false;
 for x:='A' to 'Z' do
 if s[i]=x then ok:=true;
 if not ok then begin kttn:=false;break;end;
 end;
 end;
procedure nen(s:string;var st:string);
 begin
 ss:='';
 while s<>'' do
 begin
 i:=1;
 while (s[i+1]=s[1])and(i<length(s)) do
 inc(i);
 if i>1 then
 begin
 str(i,si);
 ss:=ss+s[1]+si;
 end
 else ss:=ss+s[1];
 delete(s,1,i);
 end;
 s:=ss;l:=2;
 while l<length(s) do
 begin
 i:=1;
 while i<=length(s)-l do
 begin
 si:=copy(s,i,l);
 j:=i+l;
 ss:=copy(s,j,l);
 while ss=si do
 begin
 j:=j+l;
 ss:=copy(s,j,l);
 end;
 if j=i+l then inc(i)
 else
 begin
 str((j-i)div l,ss);
 delete(s,i,j-i);
 si:='('+si+')'+ss;
 insert(si,s,i);
 i:=i+l+2+length(ss);
 end;
 end;
 inc(l);
 end;
 st:=s;
 end;
function ktcd(st:string):boolean;
 begin
 ktcd:=false;
 for i:=1 to length(st) do
 if st[i]='(' then begin ktcd:=true; break; end;
 end;
procedure giainen(st:string;var s:string);
 var d,c:byte; code:integer;
 begin
 while ktcd(st) do
 begin
 i:=1; c:=0;
 while st[i]<>'(' do inc(i);
 d:=1; j:=i+1;
 while c<d do
 begin
 inc(j);
 if st[j]='(' then inc(d);
 if st[j]=')' then inc(c);
 end;
 si:=copy(st,i,j-i+1);
 delete(st,i,j-i+1);
 delete(si,1,1);
 delete(si,length(si),1);
 j:=i;
 while st[j+1] in['0'..'9'] do inc(j);
 ss:=copy(st,i,j-i+1);
 delete(st,i,j-i+1);
 val(ss,l,code);
 for j:=1 to l do
 insert(si,st,i);
 end;
 i:=1;
 while i<=length(st) do
 begin
 inc(i);
 if st[i] in['0'..'9'] then
 begin
 j:=i;
 while st[j+1] in['0'..'9'] do inc(j);
 ss:=copy(st,i,j-i+1);
 delete(st,i,j-i+1);
 val(ss,l,code);
 ss:=st[i-1];
 for j:=1 to l-1 do insert(ss,st,i);
 i:=i+l-1;
 end;
 end;
 s:=st;
 end;
begin
 clrscr;
 write('nhap chuoi: ');readln(s);
 if kttn(s) then
 begin
 nen(s,st);
 writeln('Chuoi sau khi nen la: ',st);
 giainen(st,s);
 writeln('Chuoi sau khi giai nen la: ',s);
 end
 else write('Xau ko thuan nhat.');
readln;
end.
Bài 3:
program bai3;
 var st1,st2:string;
 Procedure tru(s1,s2:string);
 Var s:String;
 h1,h2:Array[1..255] of byte;
 C:Array[1..255] of byte;
 dau:Char;
 code,l1,l2,Max,i:word;
 Begin
 L1:=length(s1);
 L2:=length(s2);
if L1>L2 Then Max:=L1 Else Max:=L2;
 For i:=L2+1 to Max do s2:='0'+s2;
 For i:=L1+1 to Max do s1:='0'+s1;
dau:=' ';
IF s2>s1 Then
 Begin
 dau:='-'; s:=s2; s2:=s1; s1:=s;
 End;
 For i:=1 to 255 do C[i]:=0;
 For i:=1 to Max do
Begin
 val(s1[i],h1[i],code);
 val(s2[i],h2[i],code);
 End;
 For i:=Max downto 1 do
 IF h1[i]<h2[i] Then
 Begin
 c[i]:=h1[i]+10-h2[i];
 h2[i-1]:=h2[i-1]+1;
 End Else
 c[i]:=h1[i]-h2[i];
Write(dau);
For i:=1 to Max do Write(c[i]);
End;
Begin
write('nhap so thu nhat'); readln(st1);
 write('nhap so thu nhat'); readln(st2);
 writeln('ket qua la');
 tru(st1,st2);
Readln;
End.
Bài 4:
 PROGRAM Mang_2C;
Uses CRT;
Type Mang2C = Array[1..10, 1..10] of Real;
Var A: Mang2C;
 N, M: Integer;
Procedure NhapMang2C( Var A : Mang2C; Var M,N : Integer);
Var i, j: Integer;
Begin
Repeat
Write('Nhap so hang N, so cot M: ');
Readln(N, M);
 Until ( N>0 ) and ( N 0 ) and ( M<11 );
 For i:=1 to M do
For j:=1 to N do
Begin
Write('nhap A[',i,']',j , ']:');
Readln(A[i,j]);
End;
End;
Procedure XuatMang2C( A : Mang2C; M,N : Integer);
Var i, j: Integer;
Begin
 For i:=1 to M do
 Begin
For j:=1 to N do
Write(A[i, j],' ');
Writeln;
End;
End;
Function DemPtu0( A : Mang2C; M,N : Integer) : Integer;
Var i, j, Dem: Integer;
Begin
 Dem := 0;
 For i:=1 to M do
For j:=1 to N do
If (A[i, j] = 0) Then inc(Dem);
DemPtu0 := Dem;
End;
Function TimPtuMax( A : Mang2C; M,N : Integer) : Real;
Var i, j: Integer;
 Max : Real;
Begin
 Max := A[1, 1];
 For i:=1 to M do
For j:=1 to N do
If (A[i, j] > Max) Then Max := A[i,j];
TimPtuMax := Max;
End;
BEGIN
Writeln('Nhap mang 2 chieu:'); NhapMang2C (A, M, N );
Writeln('Mang da nhap la:'); XuatMang2C (A, M, N );
Writeln('So lan xuat hien 0 trong mang :', DemPtu0 ( A, M, N) );
Writeln('Gia tri lon nhat trong mang :', TimPtuMax( A, M, N) );
Readln;
END.

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

  • docde_thi_mon_tin_hoc_lop_9_ky_thi_chon_hoc_sinh_gioi_vong_2_na.doc