Giải đề thi học sinh giỏi Tin học

15:12 |
Đề thi học sinh giỏi cấp huyện Bảo Thắng



Câu 1 (4,0 điểm). Khởi động chương trình PASCAL, viết chương trình nhập số tự nhiên n  sao cho 5 ≤ n ≤100, nếu nhập sai yêu cầu nhập lại khi nào nhập đúng thì tính tổng sn:



- Lưu bài với tên tệp tin: D:\SBDxxx\Cau2_SBDxxx.pas (trong đó xxx là số báo danh của thí sinh).


Program bt;
Uses crt;
Var n, i:integer;
S, a:real;
Begin
Clrscr;
Repeat
Write ('Nhap so n sao cho 5<= n<=100: '); readln(n);
Until (n>=5) and (n<=100);
S:=0;
For i:=1 to n do
begin
a:=(i*(i+1))/((i+2)*(i+3));
s:=s+a;
end;
Write('Tong can tinh la: ', s:2:4);
Readln;
End.


Đề thi học sinh giỏi cấp tỉnh năm 2018
Cho số nguyên dương N (2≤N≤1000).
a. Hãy đếm số lượng số nguyên tố trong đoạn từ 1 đến N.
b. Số nguyên dương a được gọi là số hoàn hảo nếu tổng các ước thực sự của nó
(trừ a) bằng chính nó (Ví dụ: Số 6 là số hoàn hảo vì 6 có 3 ước thực sự là 1, 2, 3 và
1+2+3=6). Tính tổng các số hoàn hảo trong đoạn từ 1 đến N.
Dữ liệu vào: File vào ghi một số nguyên dương N.
Dữ liệu ra: File ra ghi 2 số nguyên dương được viết cách nhau bởi một dấu cách là số lượng số nguyên tố và tổng các số hoàn hảo trong đoạn từ 1 đến N.
program bt;
var f,g:text;
d,i, n:longint;
function ktnt(k:longint):boolean;
var kt:boolean;x:longint;
begin
if k<2 then kt:=False else
begin
kt:=true;
for x:=2 to trunc(sqrt(k)) do
                begin
if k mod x=0 then
begin
kt:=false;break;
end;
                end;
end;
ktnt:=kt;
end;
function kthh(x: integer):BOOLEAN;
    VAR tam,i:INTEGER;
        BEGIN
            tam:=0;
            FOR i:= 1 TO (x DIV 2) DO
            IF x MOD i = 0 THEN tam:=tam+i;
        IF tam = x THEN kthh:=TRUE
        Else kthh:=False;
    END;
begin
assign(f,'demnt.inp');reset(f);
assign(g,'demnt.out');rewrite(g);
readln(f,n);
for i:=1 to n do
begin
{read(f,i);}
if ktnt(i) then d:=d+1;
end;
write(g,d,' ');
for i:=1 to n do
begin
{read(f,i);}
if kthh(i) then write(g, i,' ');
end;
close(f);close(g);
readln;
end.
Bài tập
Lập chương trình PASCAL thực hiện yêu cầu sau:
Nhập từ bàn phím số nguyên n và mảng gồm n số nguyên (n ≤ 100).
a. Tính và in ra màn hình tổng các số nguyên tố có trong mảng;
b. Kiểm tra mảng có đối xứng hay không (Ví dụ mảng đối xứng: 1;  3;  5;  3;  1);
c. Sắp xếp mảng theo thứ tự tăng dần.

- Lưu bài với tên tệp tin: D:\SBDxxx\Cau4_SBDxxx.pas (trong đó xxx là số báo danh của thí sinh).
program Bai_tap;
uses crt;
Type    Mang20 = array[1..10] of longint;
var  k, n, i: longint;
A: Mang20;
Procedure NhapMang(Var  A : Mang20 ;Var N:longint);
Var i: Integer;
Begin
    Write( 'So luong phan tu:' ); Readln( N);
    For i:=1 to N do
    Begin
            Write( 'Nhap phan tu thu ', i,': ' );      Readln( A[i] );
    End;
End;
Function KtraDoiXung (A:Mang20; N:longint ) : Boolean;
Var Flag:Boolean;
      i :Integer;
Begin
        KtraDoiXung :=True;
        For  i :=1 to N do
              If(A[i] <> A[N-i  +1]) Then
Flag:=False;
              KtraDoiXung :=Flag;
End;
Function ktnt(Var A : Mang20; Var N:longint):boolean;
var kt:boolean;x:longint;
begin
if k<2 else="" font="" kt:="false" then="">
begin
kt:=true;
for x:=2 to trunc(sqrt(k)) do
                begin
if k mod x=0 then
begin
kt:=false;break;
end;
                end;
end;
ktnt:=kt;
end;
Function  XuatMang(A:Mang20; N:longint ):longint;
Var i ,j,k :Integer;
Begin
       For i :=1 to N  do
              For  j :=1 to N do
                     If ( (i A[j]) ) then
                     Begin
                            k := A[i];
                            A[i] := A[j];
                            A[j] := k;
                     End;
 For  i :=0 to N do
                 Write( A[i]:2 );
End;
begin
       Clrscr;
       NhapMang(A, N);
       If ( KtraDoiXung(A, N ) ) then
              Writeln( ' Mang A doi xung.')
       Else
              Writeln(' Mang A khong doi xung.');
 If ( ktnt(A, N ) ) then
              Writeln( ' Cac so nguyen to: ');
              Writeln( 'Ket qua sap sep:');
              XuatMang(A, N);
 Readln;
end.
Xem thêm…

Bài tập Pascal UCLN

08:53 |

Bài tập: Tìm ước chung lớn nhất của 2 số a,b;
Program UCLN;
Uses crt;
Var a, b, tg:integer;
Begin
Clrscr;
Write(‘Nhap gia tri cua a: ‘); readln(a);
Write(‘Nhap gia tri cua b: ‘); readln(b);
Tg:=a mod b;
While tg<>0 do
Begin
a:=b;
b:=tg;
tg:=a mod b;
End;
Write(‘UCLN cua 2 so la: ‘,b);
Readln;
End.

Xem thêm…

Tên

Email *

Thông báo *