Đề thi học sinh giỏi môn tin học lớp 11 potx

5 4.2K 103
Đề thi học sinh giỏi môn tin học lớp 11 potx

Đang tải... (xem toàn văn)

Thông tin tài liệu

TRƯỜNG THPT ĐINH CHƯƠNG DƯƠNG ĐỀ THI CHỌN HSG MÔN TIN HỌC NĂM HỌC 2010-2011 Thời gian: 180 Phút Sử dụng ngôn ngữ lập trình pascal, lập trình giải các bài toán sau đây: Bài 1: Sắp xếp (4đ) Cho số tự nhiên n (n<=100) và dãy số nguyên a1,a2, ,an (bao gồm cả số nguyên âm cả số nguyên dương). Hãy đỗi chổ các phần tử của dãy sao cho các phần tử dương nằm ở đầu dãy, các phần tử âm nằm ở cuối dãy. In dãy sau khi đã sắp xếp. Bài 2: Tìm xâu con dài nhất (6đ) Nhập vào một xâu bất kỳ từ bàn phím. Hãy cho biết độ dài lớn nhất của xâu con chứa liên tiếp kí tự ‘a’. In ra màn hình xâu con dài nhất vừa tìm được? Ví dụ: Xâu nhập vào: aabcaaade  Độ dài max= 3 Xâu con cần tìm là: aaa Bài 3: Các thao tác trên mảng 2 chiều (6đ) Tạo mảng 2 chiều A cấp nxn gồm các số nguyên và một số nguyên x. Viết chương trình thực hiện các công việc sau: a/ Đếm số lần xuất hiện của x trong A và vị trí của chúng. b/ Tính tổng các phần tử lớn nhất của mỗi dòng. c./ Sắp xếp lại mảng theo thứ tự tăng dần như sau: Bài 4 (4đ) :Cho một xâu kí tự S. Hãy viết chương trình tính xem trong S có bao nhiêu loại kí tự khác nhau (phân biệt chữ in hoa với chữ in thường). Ví dụ với S là “Pascal” ta có đáp số là 5. ……Hết…… Chú ý: Giám thị không giải thích gì thêm. Thí sinh không được sử dụng tài liệu. TRƯỜNG THPT ĐINH CHƯƠNG DƯƠNG ĐÁP ÁN ĐỀ THI HSG LỚP 11 NĂM HỌC 2010-2011 MÔN TIN HỌC 11 Bài 1(4đ) PROGRAM BAI1; USES CRT; VAR tg,i,j,n:integer; a:array[1 20] of integer; BEGIN Clrscr; write('Nhap n='); Readln(n); For i:=1 to n do Read(a[i]); Readln; i:=1; j:=n; Repeat While a[i]>0 do inc(i); While a[j]<=0 do dec(j); If i<j then Begin tg:=a[i]; a[i]:=a[j]; a[j]:=tg; End; Until j<=i; j:=n; Repeat While a[i]>=0 do inc(i); While a[j]<0 do dec(j); If i<j then begin tg:=a[i]; a[i]:=a[j]; a[j]:=tg; End; Until j<=i; for i:=1 to n do Write(a[i]:4); readln END. Bài 2(6đ) PROGRAM BAI2; USES CRT; VAR s:string; i,max,t,k,d:byte; BEGIN clrscr; Write('nhap xau'); Readln(s); k:=length(s); max:=0; t:=0; for i:=1 to k do begin if s[i]='a' then begin t:=t+1; if t>max then begin max:=t; d:=i; end; end else t:=0; end; if t>max then max:=t; for i:=d-max+1 to d do write(s[i]); readln END. Bài 3(6đ) - Câu a: 2đ - Câu b: 2đ - Câu c:2đ PROGRAM BAI3; USES CRT; VAR A: array[1 10,1 10] of integer; B :array[1 100]of integer; tg, k, n,i,j,x,dem,S,max:Integer; BEGIN Write('Nhap n='); Readln(n); For i:=1 To n do begin For j:=1 To n Do read (a[i,j]); Readln; end; {Câu a: Tìm kiếm phần tử x trong mang A} Write('Nhap x='); Readln(x); dem:=0; Writeln('Vi tri cua x trong mang A: '); For i:=1 To n Do For j:=1 To n Do If a[i,j]=x Then Begin Writeln(i,j); dem:=dem+1; End; Writeln('So lan xuat hien cua x trong mang A la: ',dem); {Câu b: Tính tổng các phần tử lớn nhất của mỗi dòng} S:=0; For i:=1 To n Do Begin Max:=A[i,1]; For j:=2 To n Do If max<A[i,j] Then max:=A[i,j]; S:=S+max; End; Writeln('Tong cac phan tu lon nhat cua moi dong la: ',S); {Câu c: Sắp xếp mảng} {chuyển mảng 2 chiều A thành mảng 1 chiều B} k:=0; For i:=1 to n do For j:=1 to n do If k<n*n then begin k:=k+1; b[k]:=a[i,j]; end; {Sắp xếp mảng 1 chiều B theo thứ tự tăng dần} For i:=1 to n*n-1 do For j:=i+1 to n*n do if b[i]>b[j] then begin tg:=b[i]; b[i]:=b[j]; b[j]:=tg; end; {Chuyển mảng 1 chiều A thành mảng 2 chiều B} k:=0; For j:=1 to n do begin If j mod 2 =1 then Begin for i:=1 to n do Begin k:=k+1; a[i,j]:=b[k]; End; End Else Begin for i:=n downto 1 do Begin k:=k+1; a[i,j]:=b[k]; End; End; End; {in mảng 2 chiều sau khi sắp xếp} Writeln('mang sau khi sap xeo la:'); For i:=1 to n do Begin For j:=1 to n do write(a[i,j]); Writeln; End; Readln; END. Bài 4 (4 điểm) PROGRAM BAI4; Var S: string; i, j, dem: integer; t: boolean; BEGIN Write('Cho mot xau ki tu S: '); Readln(S); dem:=0; For i:=1 to length(S) do Begin t:=false; For j:=1 to i-1 do if (S[j]=S[i]) then t:=true; If not t then dem:= dem+1; End; Write('So ki tu khac nhau cua xau S la: ', Dem); Readln; END . . Giám thị không giải thích gì thêm. Thí sinh không được sử dụng tài liệu. TRƯỜNG THPT ĐINH CHƯƠNG DƯƠNG ĐÁP ÁN ĐỀ THI HSG LỚP 11 NĂM HỌC 2010-2 011 MÔN TIN HỌC 11 Bài 1(4đ) PROGRAM BAI1; USES CRT; VAR. TRƯỜNG THPT ĐINH CHƯƠNG DƯƠNG ĐỀ THI CHỌN HSG MÔN TIN HỌC NĂM HỌC 2010-2 011 Thời gian: 180 Phút Sử dụng ngôn ngữ lập trình pascal, lập trình giải

Ngày đăng: 11/07/2014, 06:20

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan