Đề thi học sinh giỏi tin học lớp 11 có đáp án

LƯU Ý:

You are using an out of date browser. It may not display this or other websites correctly.
You should upgrade or use an alternative browser.

  • Khởi tạo chủ đề Yopovn
  • Ngày gửi 21/1/22

Không có thành viên trực tuyến.

Chủ đề 27,462 Bài viết 28,319 Thành viên 44,013 Thành viên mới nhất thilenuong

Sở GD&ĐT Quảng Bình

MÔN THI: TIN HỌC
Thời gian làm bài: 180 phút (không kể thời gian giao đề)
--------------------------------------------------------------------------------

Sử dụng ngôn ngữ lập trình Turbo Pascal để lập trình giải các bài toán sau:

Câu 1: (3,0 điểm) Tìm số TIMSO.PAS

Cho số nguyên dương X, khi đảo ngược trật tự các chữ số của X ta sẽ thu được một số nguyên dương Y, Y được gọi là số đảo ngược của X.

Ví dụ: X = 613 thì Y = 316 là số đảo ngược của X.

Số nguyên dương Y được gọi là số nguyên tố nếu nó chỉ có hai ước số là 1 và chính nó, số 1 không phải là số nguyên tố.

Cho hai số nguyên dương P và Q (1 ≤ P ≤ Q ≤ 2.109; Q - P ≤ 105).

Yêu cầu: Hãy tìm tất cả các số nguyên dương X nằm thỏa mãn P ≤ X ≤ Q và số đảo ngược của số X là số nguyên tố.

Dữ liệu vào: Cho trong file văn bản TIMSO.INP có cấu trúc như sau:

- Dòng 1: Ghi hai số nguyên dương P Q, hai số được ghi cách nhau ít nhất một dấu cách.

Dữ liệu ra: Ghi ra file văn bản TIMSO.OUT trên nhiều dòng, mỗi dòng ghi một số nguyên X tìm dược.

Câu 2: (3,5 điểm) Tính tổng TONG.PAS

Cho hai số nguyên dương M và N, M có p chữ số và N có q chữ số.

Yêu cầu: Tính tổng của hai số M và N.

Dữ liệu vào: Cho trong file văn bản TONG.INP có cấu trúc như sau:

- Dòng 1: Ghi số nguyên dương p là số lượng chữ số của M (1 ≤ p ≤ 30000).

- Dòng 2: Ghi p chữ số của M theo thứ tự từ trái sang phải, các chữ số được ghi cách nhau ít nhất một dấu cách.

- Dòng 3: Ghi số nguyên dương q là số lượng chữ số của N (1 ≤ q ≤ 30000).

- Dòng 4: Ghi q chữ số của N theo thứ tự từ trái sang phải, các chữ số được ghi cách nhau ít nhất một dấu cách.

Dữ liệu ra: Ghi ra file văn bản TONG.OUT theo cấu trúc như sau:

- Dòng 1: Ghi số nguyên dương k là số lượng chữ số của tổng tìm được.

- Dòng 2: Ghi k chữ số của tổng tìm được theo thứ tự từ trái sang phải, các chữ số được ghi cách nhau ít nhất một dấu cách.

Câu 3: (3,5 điểm) Dãy con chung dài nhất DAYCON.PAS

Cho dãy số nguyên A gồm N phần tử a1, a2, ..., aN và dãy số nguyên B gồm M phần tử b1, b2, ..., bM. Các phần tử trong một dãy số có giá trị khác nhau từng đôi một.

(1 ≤ ai, bj ≤ 2.109; 1 ≤ N ≤ 100; 1 ≤ i ≤ N; 1 ≤ M ≤ 100; 1 ≤ j ≤ M).

Dãy C được gọi là dãy con của dãy A nếu dãy C nhận được từ dãy A bằng cách xóa đi một số phần tử và giữ nguyên thứ tự của các phần tử còn lại.

Nếu dãy C là dãy con của dãy A và cũng là dãy con của dãy B thì dãy C được gọi là dãy con chung của hai dãy A và B.

Yêu cầu: Hãy tìm dãy C là dãy con chung của hai dãy A và B sao cho số lượng phần tử của dãy C là lớn nhất.

Dữ liệu vào: Cho trong file văn bản DAYCON.INP có cấu trúc như sau:

- Dòng 1: Ghi số nguyên dương N là số lượng phần tử của dãy A.

- Dòng 2: Ghi N số nguyên là giá trị của các phần tử trong dãy A, các số được ghi cách nhau ít nhất một dấu cách.

- Dòng 3: Ghi số nguyên dương M là số lượng phần tử của dãy B.

- Dòng 4: Ghi M số nguyên là giá trị của các phần tử trong dãy B, các số được ghi cách nhau ít nhất một dấu cách.

Dữ liệu ra: Ghi ra file văn bản DAYCON.OUT theo cấu trúc như sau:

- Dòng 1: Ghi số nguyên dương K là số lượng phần tử của dãy C.

- Dòng 2: Ghi K số nguyên là giá trị của các phần tử trong dãy C, các số được ghi cách nhau một dấu cách.

- Dòng 3: Ghi K số nguyên dương lần lượt là chỉ số của các phần tử trong dãy A tương ứng với các giá trị của phần tử đó trong dãy C, các số được ghi cách nhau một dấu cách.

- Dòng 4: Ghi K số nguyên dương lần lượt là chỉ số của các phần tử trong dãy B tương ứng với các giá trị của phần tử đó trong dãy C, các số được ghi cách nhau một dấu cách.

Download tài liệu để xem thêm chi tiết

Cập nhật: 08/05/2013

 Mời các bạn tham khảo

Đề thi học sinh giỏi lớp 11 môn tin học, năm 2021 tỉnh Hà Tĩnh

  • Windows
  • Mac OS
  • iPhone/iPad
  • Android
  • Windows Phone
  • Game
  • Tài liệu
  • Hướng dẫn

TRƯỜNG THPT ĐINH CHƯƠNG DƯƠNG ĐỀ THI CHỌN HSG MÔN TIN HỌCNĂ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 âmcả 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ứaliê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à: aaaBà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ươngtrì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-2011MÔN TIN HỌC 11Bà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=0 do inc(i); While a[j]<0 do dec(j); If imax 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 beginFor 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 DoFor j:=1 To n DoIf a[i,j]=x ThenBeginWriteln(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 DoBeginMax:=A[i,1];For j:=2 To n DoIf maxb[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 .