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

Chia sẻ: Nguyễn Ninh | Ngày: | Loại File: DOC | Số trang:5

3
863
lượt xem
187
download

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

Mô tả tài liệu
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Thông qua tài liệu về đề thi Tin học lớp 11 của kì thi học sinh giỏi, các bạn có thêm tư liệu ôn tập, làm quen với dạng đề thi, củng cố kiến thức để có một kì thi tốt nhất.

Chủ đề:
Lưu

Nội dung Text: Đề thi học sinh giỏi môn Tin học lớp 11

  1. 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.
  2. 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đ) Bài 2(6đ) PROGRAM BAI2; PROGRAM BAI1; USES CRT; USES CRT; VAR s:string; VAR tg,i,j,n:integer; i,max,t,k,d:byte; a:array[1..20] of integer; BEGIN BEGIN clrscr; Write('nhap xau'); Readln(s); Clrscr; k:=length(s); write('Nhap n='); Readln(n); max:=0; t:=0; For i:=1 to n do Read(a[i]); for i:=1 to k do Readln; begin if s[i]='a' then i:=1; j:=n; begin Repeat t:=t+1; While a[i]>0 do inc(i); if t>max then While a[j]<=0 do dec(j); begin If i<j then Begin max:=t; tg:=a[i]; d:=i; a[i]:=a[j]; end; a[j]:=tg; end End; else t:=0; Until j<=i; end; j:=n; if t>max then max:=t; Repeat for i:=d-max+1 to d do write(s[i]); While a[i]>=0 do inc(i); readln While a[j]<0 do dec(j); END. 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.
  3. 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
  4. 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
  5. 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 .

CÓ THỂ BẠN MUỐN DOWNLOAD

Đồng bộ tài khoản