De thi học sinh giỏi môn Tin học

Đây là bài tập pascal thi học sinh giỏi có đáp án, các bạn có thể comment hỏi bài hoặc giải bài. Mời các bạn tham khảo ngay phía bên dưới với hơn 100 đề và đáp án thi HSG tin cùng với  onthihsg ngay nhé.

Video hướng dẫn đề thi học sinh giỏi tin học thpt có đáp án

Tổng hợp bài tập pascal thi học sinh giỏi hay nhất

De thi học sinh giỏi môn Tin học

Bài số 1: Số độc đắc

Viết các số tự nhiên từ 1 đến 2009 theo một vòng tròn cùng chiều quay kim đồng hồ. Cũng theo chiều đó, bắt đầu từ số 1, cứ đếm từ 1 đến số thứ 612 thì xoá số đó đi. Lại bắt đầu từ số còn lại đứng ngay sau số vừa bị xoá, lặp lại quá trình đến khi còn 1 số thì dừng lại. a) Hỏi số còn lại là số nào? b) Muốn số còn lại là số thứ L (0

Dữ liệu vào: Nhập từ bàn phím số nguyên dương L (0
Kết quả: Đưa ra màn hình theo qui cách: dòng thứ nhất là kết quả cho câu hỏi a); dòng thứ hai là kết quả cho câu hỏi b).

Ý tưởng cho lời giải:

  • Dùng một mảng a có 2009 phần tử (từ 1 đến 2009) kiểu boolean. Khởi động cho tất cả các giá trị của mảng là true (chưa được đánh dấu).
  • Duyệt và đếm xuất phát từ phần tử đầu tiên, phần tử nào của mảng có giá trị true (chưa đánh dấu) thì mới đếm, khi đếm đủ 612 số thì đánh dấu phần tử thứ 612 đó (False), khi duyệt đến phần tử cuối cùng của mảng thì quay lại đầu mảng. Khi nào chỉ còn 1 phần tử chưa đánh dấu thì dừng lại và phần tử đó chính là đáp án câu a.
  • Đáp án câu b được suy ra từ câu a. Bởi các số từ 1 đến 2009 xếp theo một vòng tròn cùng chiều quay kim đồng hồ

Chương trình viết bằng pascal để các bạn tham khảo:

var a:array[1..2009] of boolean; i,j,n,dem,L,b:integer; begin Write('L=');readln(L); for i:=1 to 2009 do a[i]:=true; n:=2009; j:=1; while n>1 do begin dem:=0; while dem < 612 do begin if a[j] then dem:=dem+1; if dem = 612 then a[j]:=false; if j=2009 then j:=1 else j:=j+1; end; n:=n-1; end; for i:= 1 to 2009 do if a[i] then j:=i; writeln('so doc dac:',j); b:=1+L-j; if b>2009 then b:=b-2009;while b<1 do b:=b+2009; write('muon so con lai la ',L,' thi xuat phat tu so: ',b); readln; end.

Còn đây là chương trình học sinh của mình (Minh) viết bằng cách sử dụng đệ quy:

PROGRAM So_doc_dac; USES crt; VAR dem,x,L:WORD; a:ARRAY[1..2009] OF WORD; PROCEDURE try(x:WORD); VAR i:WORD; BEGIN i:=0; WHILE i<612 DO BEGIN IF a[x]<>0 THEN i:=i+1; IF i=612 THEN a[x]:=0; x:=x+1; IF x>2009 THEN x:=1; END; dem:=dem+1; IF dem=2008 THEN exit ELSE try(x); END; BEGIN clrscr; write('L = '); readln(L); WHILE (L=0) OR (L>2009) DO BEGIN writeln; writeln('So ban nhap khong hop le'); write('Nhap lai: L = '); readln(L); END; {cau a} FOR x:=1 TO 2009 DO a[x]:=x; x:=1; dem:=0; try(x); x:=1; WHILE a[x]=0 DO x:=x+1; writeln('So doc dac la ',a[x]); {cau b} IF L>=80 THEN x:=L-79 ELSE x:=L+1930; writeln('Muon so con lai la ',L,' thi xuat phat tu so ',x); readln; END.

Bài 2: Đội hình bóng đá

Đội hình thi đấu của một đội bóng được thể hiện bởi ba số X, Y, Z trong đó X là số cầu thủ hậu vệ, Y là số cầu thủ tiền vệ, Z là số cầu thủ tiền đạo. Khi đã biết chính xác tên các cầu thủ cũng như chức năng của mỗi cầu thủ thì ta có thể biết được chính xác đội hình thi đấu của đội bóng đó. Viết chương trình thực hiện yêu cầu:

– Dữ liệu: file văn bản có tên BDA.INP có 11 dòng, mỗi dòng ghi tên một cầu thủ tiếp theo là dấu cách và chức năng của cầu thủ đó, chức năng là một trong các cặp kí tự: TD-Tiền đạo, TV- Tiền vệ, HV-Hậu vệ, TM-Thủ môn.

– Kết quả: ghi vào file văn bản có tên BDA.OUT theo cấu trúc:

  • Dòng đầu ghi 3 số X, Y, Z mỗi số cách nhau một dấu cách
  • Dòng thứ hai ghi tên các cầu thủ tiền đạo
  • Dòng thứ ba ghi tên các cầu thủ tiền vệ
  • Dòng thứ tư ghi tên các cầu thủ hậu vệ
  • Dòng thứ năm ghi tên thủ môn.

Các bạn cùng giải nào Các bạn có bài nào hay comment bên dưới, chúng ta cùng giải nhé!

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

Đề thi HSG Tin học 12 Sở giáo dục và Đào tạo Quảng Nam 2021 có đáp án được soạn dưới dạng file Word gồm 4 trang. Các bạn xem và tải về ở dưới.

    De thi học sinh giỏi môn Tin học
  1. Chủ sở hữu website: Vàng Văn Quyn.
  2. Địa chỉ: TDP Dìn Phàng, thị trấn Si Ma Cai, huyện Si Ma Cai, Lào Cai.
  3. Mobile: 035.884.1088; Zalo: 035.884.1088. Email:
  4. Mã số thuế: 8038377200 cấp ngày: 08/03/2010, nơi cấp: Chi cục thuế TP. Lào Cai.

  PHÒNG GIÁO DỤC VÀ ĐÀO TẠO                 KỶ THI CHỌN HỌC SINH GIỎI LỚP 8

            HUYỆN DIÊN KHÁNH                               CẤP HUYỆN NĂM HỌC: 2014-2015

                                                                                                  MÔN THI: TIN HỌC

                                                                                                    Ngày thi: 31/05/2015

                                                                      Thời gian làm bài: 150 phút (không kể thời gian phát đề)

                (Đề thi gồm 02trang)

Tổng quan đề thi:

Bài

Tên tệp chương trình

Dữ liệu vào

Kết quả ra

Bài 1

Bai1.pas

Nhập từ bàn phím

Xuất ra màn hình

Bài 2

Bai2.pas

Nhập từ bàn phím

Xuất ra màn hình

Bài 3

Bai3.pas

XAU.INP

XAU.OUT

Bài 4

Bai4.pas

DAYSO.INP

DAYSO.OUT

Lưu ý:

-          Thí sinh tạo thư mục Số báo danh SBD trong ổ đĩa D. Ví dụ: Thí sinh của Số báo danh là 101 thì tạo thư mục 101 trong ổ đĩa D.

-          Lưu bài theo đường dẫn: D:\SBD\Bai*.pas. Trong đó SBD là Số báo danh của thí sinh; * là bài làm của thí sinh. Ví dụ: D:\101\Bai1.pas

Hạn chế kĩ thuật: Thời gian thực hiện chương trình không quá 5 giây.

Câu 1: (5 điểm)

         Viết chương trình nhập vào một số nguyên dương N và thực hiện:

a.  Số nguyên dương N có bao nhiêu chữ số?

b. Tính tổng các chữ số của N.

c.  In ra chữ số lớn nhất của N.

-    Yêu cầu: N là một số nguyên dương (0≤N≤10000000000000000000). Hãy thực hiện các yêu cầu trên

-    Dữ liệu vào: Nhập từ bàn phím số nguyên dương N. Giả thiết dữ liệu được nhập đúng đắn, không cần kiểm tra

-    Kết quả:

+ Dòng 1: Ghi N có bao nhiêu chữ số.

+ Dòng 2: Ghi tổng các chữ số của N.

+ Dòng 3: Ghi chữ số lớn nhất của N.

         Ví dụ:

Nhập từ bàn phím

Xuất ra màn hình

132

Số nguyên N có 3 chữ số

Tổng các chữ số của N là: 6

Chữ số lớn nhất: 3

Lưu bài: D:\SBD\Bai1.pas

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

         Viết chương trình tính diện tích và chu vi của hinh chữ nhật có chiều dài là a, chiều rộng là b (a,b được nhập từ bàn phím).

-    ­Yêu cầu: a,b là hai số nguyên dương khác 0. Hãy tính chu vi và diện tích hình chữ nhật đó.

-    Dữ liệu vào: Nhập từ bàn phím hai số nguyên dương a và b (a>b). Giả thiết dữ liệu được nhập đúng đắn, không cần kiểm tra

-    Kết quả:

+ Dòng 1: Ghi chu vi của hình chữ nhật

+ Dòng 2: Ghi diện tích của hình chữ nhật

         Ví dụ:

Nhập từ bàn phím

Xuất ra màn hình

4

3

Chu vi: 14

Diện tích: 12

Lưu bài: D:\SBD\Bai2.pas

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

         Viết chương trình có một chuỗi kí tự gồm chữ cái, chữ số và khoảng cách và thực hiện:

a.  Trong chuỗi kí tự có bao nhiêu kí tự số?

b. Tính tổng các chữ số.

c.  Xuất ra tất cả kí tự chữ có trong chuỗi theo thứ tự vừa nhập.

-    Yêu cầu: Cho trước một chuỗi kí tự S chỉ gồm chữ cái, chữ số và khoảng cách trên một dòng. Hãy thực hiện các yêu cầu trên.

-    Dữ liệu vào: Cho từ tệp văn bản có tên XAU.INP gồm một dòng ghi chuỗi kí tự S (có độ dài không quá 255 ký tự). Giả thiết dữ liệu được nhập đúng đắn, không cần kiểm tra

-    Kết quả: Ghi ra tệp văn bản có tên XAU.OUT theo cấu trúc sau:

+ Dòng 1: Ghi có bao nhiêu kí tự số

+ Dòng 2: Ghi tổng các chữ số

+ Dòng 3: Ghi tất cả các kí tự chữ cái trong chuỗi

         Ví dụ:

XAU.INP

XAU.OUT

Ky2thichon5hoc5sinhgioi3lop719

7

32

Kythichonhocsinhgioilop

Lưu bài: D:\SBD\Bai3.pas

Câu 4: (8 điểm)

         Một dãy số gồm N số nguyên dương . Tính tổng các phần tử có trong dãy số, in ra số lần xuất hiện các phần tử có trong dãy số.

-    Yêu cầu: Cho một dãy số gồm N số nguyên dương. Hãy thực hiện các yêu cầu trên. Giả thiết dữ liệu được nhập đúng đắn, không cần kiểm tra

-    Dữ liệu vào: Cho từ tệp văn bản có tên DAYSO.INP có dạng như sau:

+ Dòng 1: Ghi số nguyên dương N (1≤N≤100000)

+ Dòng 2: Ghi dãy N số nguyên dương a1, a2,..., an (1≤ai≤1000,i=1..n)

-    Kết quả: Ghi ra tệp văn bản có tên DAYSO.OUT theo cấu trúc sau:

+ Dòng 1: In ra tổng các phần tử trong dãy số.

+ Dòng tiếp theo: In ra phần tử và số lần xuất hiện của nó.

         Ví dụ:

DAYSO.INP

DAYSO.OUT

8

6 7 8 1 8 9 2 1

42

6:1

7:1

8:2

1:2

2:1

Lưu ý: Giám thi không giải thích gì thêm. Thí sinh không được xem tài liệu.

HẾT