Đề thi Olympic tin học khối 8, 9 Hiệp Hòa – Bắc Giang – Năm 2016- 2017 – Có hướng dẫn

Đề thi Olympic tin học khối 8, 9 Hiệp Hòa – Bắc Giang – Năm 2016- 2017 – Có hướng dẫn phần lập trình pascal.

Đề thi Olympic tin học khối 8, 9 Hiệp Hòa – Bắc Giang

Yêu cầu chung: Tạo thư mục SBD_… trên ổ đĩa D và lưu các bài làm vào thư mục này. Ví dụ số báo danh của em là Ti912 thì tạo thư mục là SBD_Ti912

Sử dụng ngôn ngữ lập trình Turbo Pascal hoặc Free Pascal viết chương trình giải các bài toán sau:

Bài 1 (15 điểm): Lưu với tên là Bai1.pas

Viết chương trình nhập vào hai số tự nhiên x, y thỏa mãn điều kiện 4  x <60; 71 < y  131 và thực hiện các yêu cầu sau:

– In ra màn hình các số lẻ chia hết cho 3 trong khoảng từ x đến y và đếm xem có bao nhiêu số như vậy.

– In ra màn hình các số chính phương m sao cho x < m < y và đếm xem có bao nhiêu số m.

Bài 2 ( 15 điểm): Lưu với tên là Bai2.pas

Viết chương trình cho phép nhập vào một dãy các số nguyên gồm n phần tử (1≤ n ≤ 100).

a) In ra màn hình số lớn thứ hai trong dãy vừa nhập và các vị trí của số đó trong dãy ban đầu mỗi vị trí cách nhau một dấu cách.

b) In ra màn hình các số nguyên tố nhỏ hơn số lớn thứ hai có trong dãy số ban đầu, mỗi số cách nhau một dấu cách.

Bài 3 (20 điểm): Lưu với tên là Bai3.pas

Trong một chương trình ngoại khóa, ban tổ chức mời một nhóm gồm M học sinh tham gia trò chơi “đoán số”. Ban tổ chức đã đưa cho mỗi bạn một con số khác nhau và sau đó nói rằng: Số cần tìm là số nguyên dương nhỏ nhất gồm không quá chín chữ số chia hết cho bất cứ số nào trong các số đã đưa cho các bạn trong nhóm.

Biết tất cả các số mà ban tổ chức đã đưa cho các bạn trong nhóm M học sinh, hãy viết chương trình tìm số theo yêu cầu. In ra màn hình các kết quả:

– Dòng đầu tiên chứa số học sinh M (M<20).

– Dòng thứ hai chứa M số nguyên dương nhỏ hơn 20 mà ban tổ chức đã đưa cho các bạn học sinh, hai số liên tiếp cách nhau bởi dấu cách.

– Dòng thứ ba là số cần tìm.

Bài 4 ( 20 điểm): Lưu với tên là Bai4.xls

          Tạo trang tính theo mẫu và dùng công thức điền giá trị vào các ô theo yêu cầu dưới đây:

  1. NXB: dựa vào kí tự cuối của mã sách và tra bảng 1 để điền vào.
  2. Năm XB: là 4 kí tự 3, 4, 5 và 6 của mã sách.
  3. Thể loại: nếu là nhà xuất bản Giáo dục hay Khoa học Kỹ thuật thì ghi “Học tập”, còn lại “Khác”.
  4. Sắp xếp theo nhà XB, nếu trùng thì sắp theo năm XB giảm dần.
  5. Trích ra danh sách các sách của nhà xuất bản Giáo dục hay Khoa học Kỹ thuật
  6. Lập bảng Thống kê như mẫu.

 —————Hết—————-

Hướng dẫn phần Pascal

Bài 1:

Uses Crt;
var x,y,i,d:longint;
BEGIN
ClrScr;                                                               
     d:=0;
Write(‘Nhap so tu nhien x, y =');Readln(x,y); 
   While  ((x<4) OR (x>=53) OR ( y<=59) OR (y>121) ) do
     Begin
Write(‘Nhap lai x, y thoa man 4<=x< 53 va 59<y<=121’); Readln(n);
    end;
writeln(‘Cac so le chia het cho 3 thoa man la:');
for i:=x to y do
    if (i mod 2<>0)and(i mod 3=0) then
       begin
       write(i:6);  
d: = d+1;     end;
writeln;
writeln('Co tat ca:',d,' so le chia het cho 3');
writeln('Cac so chinh phuong lon hon’, x:4,’va nho hon’, y:4, ‘la: ‘);
d:=0;
For i: = x +1 to y -1 do
      IF  sqr(trunc(sqrt(i))) = i then
           Begin     write (I: 7); d:=d+1; end;
writeln; writeln(‘ Co tat ca ‘,d:6,’ so chinh phuong’);
readln;
End.

Bài 2:

Program bai2;
Uses crt;
Var i,j,n,d,t: integer;
      a: array[1..100] of Integer;
Begin
   Clrscr;
   Write('Nhap n: '); readln(n);
   For i:=1 to n do
    Begin
     Write('Nhap phan tu thu ',i,': '); readln(a[i]);
    end;
    d:=0; t:=0;
   For i:=1 to n do
    if a[i]>0 then
     begin
      t:=t+a[i];
      d:=d+1;
     end;
    Writeln('Trung binh cong cua cac phan tu lon ho 0 la: ', t/d:0:3);
    Writeln('Cac so nguyen to co trong day so la: ');
   For i:=1 to n do
     begin
      d:=0;
      for j:=1 to a[i] do if a[i] mod j=0 then d:=d+1;
      if d=2 then Write(a[i],'  ');
     end;
Readln;
End.

Bài 3:

Program bai3;
Uses crt;
Var
   	a:array[1..100] of integer;
   	k,i,du,t,kq:longint;
Begin
     	clrscr;
     	write('nhap vao so k=');readln(k);
     	for i:=1 to k do
      	begin
           	write('Nhap vao so thu a[',i,']=');readln(a[i]);
      	end;
     	write(‘Cac so vua cho la:');
     	for i:=1 to k do
     	write(a[i]:6);   writeln;
     	kq:=a[1];
     	for i:=2 to k do
      	begin
          		 t:=kq*a[i];
           	du:=kq mod a[i];
           	while du<>0 do
            	begin
                 		kq:=a[i];
                 		a[i]:=du;
                 		du:=kq mod a[i];
            		end;
           	kq:=t div a[i];
      		end;
     	writeln(‘Mat khau la:',kq);
     	readln;
End.

 

Trả lời

Email của bạn sẽ không được hiển thị công khai.

Back to top button