1. Trang chủ
  2. » Công Nghệ Thông Tin

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

5 4,3K 103
Tài liệu đã được kiểm tra trùng lặp

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

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 5
Dung lượng 52 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Trang 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.

Trang 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đ)

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

Trang 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

Trang 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

Trang 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]);

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

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

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w