DE THI PASCAL

6 7 1
DE THI PASCAL

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

Thông tin tài liệu

Nếu người sử dụng nhập dữ liệu không đúng yêu cầu thì chương trình sẽ đưa ra thông báo và cho phép người sử dụng nhập lại dữ liệu khác.. Chú ý : Tạo thư mục với tên và số báo danh của [r]

(1)

ĐỀ THI CHỌN HỌC SINH GIỎI MÔN TIN HỌC Năm học : 2008 – 2009

Thời gian làm : 120 phút (Không kể thời gian giao đề)

-Sử dụng ngôn ngữ lập trình Free Pascal để viết chương trình máy tính giải toán sau :

Bài : (2 điểm) Một số mà đọc từ trái sang phải giống hệt đọc từ phải sang trái gọi số đối xứng. Số 14541 số đối xứng cịn số 6667 khơng số đối xứng Hiển nhiên số 0330 không số đối xứng (do số đứng vị trí bên trái)

Hãy tìm tất số đối xứng từ đến N Biết N số nguyên dương lớn nhập vào từ bàn phím

Bài : (3 điểm)

Tìm tất số nguyên tố mảng hai chiều A gồm N hàng M cột Lưu tất giá trị tìm vào mảng chiều in mảng chiều hình

u cầu :

 N, M hai số nguyên dương lớn  Mảng A chứa số nguyên dương lớn

 Trong chương tình có kiểm tra liệu nhập vào Nếu người sử dụng nhập liệu không yêu cầu chương trình đưa thơng báo cho phép người sử dụng nhập lại liệu khác

Bài : (4 điểm) Tính tổng hai số tự nhiên lớn (chứa tối đa 255 chữ số) nhập vào từ bàn phím

Bài : (1 điểm) Tìm in hình từ có độ dài lớn xâu ký tự nhập vào từ bàn phím

(2)

ĐÁP ÁN ĐỀ THI CHỌN HỌC SINH GIỎI MÔN TIN HỌC Năm học : 2008 - 2009

-BÀI :

- Khai báo đủ biến chương trình : 0.25 điểm - Nhập kiểm tra giá trị N : 0.25 điểm - Đoạn mã kiểm tra số đối xứng : 1.00 điểm

- Hồn thiện chương trình : 0.50 điểm

CHƯƠNG TRÌNH MẪU CỦA BÀI :

Program So_doi_xung;

Var N,i,j:integer; s1,s2:String; Begin

Repeat

Write('Nhap N = '); Readln(N);

if N<1 then Writeln('N phai lon hon hoac bang 1'); Until N>0;

For i:=1 to N Begin

str(i,s1); s2:='';

for j:=length(s1) downto s2:=s2+s1[j]; if s1=s2 then Write(i:8);

End; End BÀI :

- Khai báo đủ biến chương trình : 0.5 điểm - Nhập kiểm tra giá trị N, M : 0.5 điểm - Nhập mảng chiều gồm số nguyên dương : 0.5 điểm - Kiểm tra yêu cầu liệu mảng chiều A : 0.25 điểm - Đoạn mã kiểm tra số nguyên tố : 1.00 điểm

(3)

CHƯƠNG TRÌNH MẪU CỦA BÀI :

Program So_Nguyen_To; Var N, M, i, j, k : integer;

A:array[1 20,1 20] of integer; Begin

Repeat

Write('Nhap so hang cua A : ');Readln(N);

if N<2 then Writeln('So hang cua A phai lon hon hoac bang 2'); Until N>=2;

Repeat

Write('Nhap so cot cua A : ');Readln(M);

if M<2 then Writeln('So cot cua A phai lon hon hoac bang 2'); Until M>=2;

For i:=1 to N For j:=1 to M Repeat

Write('Nhap phan tu tai hang ',i,' cot ',j,' cua A : '); Readln(A[i,j]);

if A[i,j]<2 then

Writeln('Cac phan tu cua A phai la lon hon hoac bang 2'); Until A[i,j]>=2;

Writeln('Cac so nguyen to la : '); For i:=1 to N

For j:=1 to M Begin

k:=2;

while (k<A[i,j]) and (A[i,j] mod k <>0) k:=k+1; if k>=A[i,j] then write(A[i,j]:8);

End; End

Bài :

- Khai báo đủ biến chương trình : 0.25 điểm - Nhập kiểm tra xâu ký tự có dạng số nguyên : 1.50 điểm - Đoạn mã cộng hai số nguyên lớn : 2.00 điểm

(4)

CHƯƠNG TRÌNH MẪU CỦA BÀI

Var st1,st2:string; i:integer;

Function kiemtra(st:string):boolean; Var

kt:boolean; i,k,code:integer; Begin

kt:=true; For i:=1 to length(st) Begin

val(st[i],k,code); If code<>0 then Begin kt:=false; break; end; End;

kiemtra:=kt; End;

Function Cong(st1,st2:string):string;

Var st,st3:string; n,m,k,sd,code:integer; Begin

st:=''; sd:=0; For i:=length(st1) downto Begin

val(st1[i],n,code); val(st2[i],m,code); k:=(n+m+sd) mod 10; str(k,st3); st:=st3+st; sd:=(n+m+sd) div 10;

end;

if sd>0 then begin

str(sd,st3); st:=st3+st; end;

Cong:=st; End;

Begin Repeat

Write('Nhap vao so thu nhat : '); Readln(st1); Until kiemtra(st1);

Repeat

Write('Nhap vao so thu hai : '); Readln(st2); Until kiemtra(st2);

For i:=1 to abs(length(st1)-length(st2))

(5)

Writeln('Tong la : ', cong(st1,st2)); End

(Học sinh sử dụng hàm mẫu viết trực tiếp trên chương trình chính.)

Bài :

- Khai báo biến nhập yêu cầu : 0.25 điểm - Đoạn mã xác định in từ xâu ký tự : 0.50 điểm - Hồn thiện chương trình với kết đúng : 0.25 điểm CHƯƠNG TRÌNH MẪU CỦA BÀI

Program Tim;

Var st:String; i, t,len,index,x:integer; kq:array[1 100] of string; Begin

Write('Nhap xau ky tu ');Readln(st); While st[1]=' ' delete (st,1,1);

While st[length(st)]=' ' delete(st,length(st),1); while pos(' ',st)<>0 delete(st,pos(' ',st),1); st:=st+' ';

x:=0;

While pos(' ',st)<>0 Begin

Writeln(copy(st,1,pos(' ',st))); delete(st,1,pos(' ',st));

(6)

Ngày đăng: 14/05/2021, 19:39

Tài liệu cùng người dùng

Tài liệu liên quan