Tải bản đầy đủ (.docx) (15 trang)

Tài liệu bồi dưỡng học sinh giỏi tin học 9

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (137.54 KB, 15 trang )

<span class='text_page_counter'>(1)</span><div class='page_container' data-page=1>

<b>BÀI TẬP PASCAL ÔN THI HỌC SINH GIỎI</b>



<i><b>4.1 Viết chương trình nhập vào 2 số nguyên, kiểm tra xem chúng có phải là ước của nhau khơng</b></i>
Program bt4_1;


Var a,b:integer;
Begin


write('nhap a,b:');
readln(a,b);


if (a mod b) = 0 then writeln(b,' la uoc cua ',a)
else writeln(b,' khong la uoc cua ',a);


if (b mod a) = 0 then writeln(a,' la uoc cua ',b)
else writeln(a,' khong la uoc cua ',b);


readln;
End.


<i><b>4.2 Viết chương trình giải hệ phương trình:</b></i>












<i>f</i>
<i>dy</i>
<i>cx</i>


<i>e</i>
<i>by</i>
<i>ax</i>
Program bt4_2;


Var a,b,c,d,e,f,dt,dx,dy,x,y:real;
Begin


write('nhap a,b,c,d,e,f:');
readln(a,b,c,d,e,f);


dt:=a*d-b*c;
dx:=b*f-e*d;
dy:=a*f-c*e;
if dt<>0 then
begin


x:=dx/dt;
y:=dy/dt;


writeln('ptr co nghiem x,y',x:10:2,y:10:2);
end;


if dt=0 then



if (dx=0) and (dy=0) then writeln('ptr vo so nghiem');
if (dx=0) and (dy<>0) then writeln('ptr vo nghiem');
readln;


End.


<i><b>4.3 Viết chương trình nhập vào 3 số nguyên a, b, c. Kiểm tra xem 3 số đó có thỏa mãn:</b></i>
<i><b>- Là 3 cạnh của 1 tam giác thường</b></i>


<i><b>- Là 3 cạnh của 1 tam giác cân</b></i>
<i><b>- Là 3 cạnh của 1 tam giác đều</b></i>
<i><b>- Không là 3 cạnh của 1 tam giác </b></i>


Program bt4_3;
Var a,b,c:integer;
Begin


</div>
<span class='text_page_counter'>(2)</span><div class='page_container' data-page=2>

write('nhap a,b,c:');
readln(a,b,c);


if (a>0) and (b>0) and (c>0) and (a+b>c) and (b+c>a) and (a+b>c) then
if (a=b) and (b=c) then writeln('la tam giac deu')


else


if (a=b) or (b=c) or (a=c) then writeln('la tam giac can')
else writeln('la tam giac thuong')


else writeln('khong la 3 canh cua tam giac');
readln;



End.


<i><b>4.4 Viết chương trình nhập vào họ tên, điểm văn, điểm tóan, điểm anh văn của 1 học sinh. Sau đó </b></i>
<i><b>in ra màn hình: họ tên, điểm trung bình, xếp lọai của học sinh đó (trên 1 dịng). Cho biết:</b></i>
<i><b>- Điểm trung bình: (điểm văn + điểm tóan + điểm anh văn) / 3</b></i>


<i><b>- Xếp loại:</b></i> <i><b>Giỏi, nếu điểm trung bình >= 9.0</b></i>


<i><b>Khá, nếu 7.0 <= điểm trung bình < 9.0</b></i>


<i><b>Trung bình, nếu 5.0 <= điểm trung bình < 7.0</b></i>
<i><b>Yếu, nếu điểm trung bình < 5.0 </b></i>


Program bt4_4;


Var hoten:string[37];
dv,dt,dnn:byte;
dtb:real;


xl:string[15];
Begin


write('nhap ho ten:');
readln(hoten);


write('nhap diem toan, diem van, diem ngoai ngu:');
readln(dt,dv,dnn);


dtb:=(dt+dv+dnn)/3;



if dtb>=9.0 then xl:='Gioi';


if (dtb>=7.0) and (dtb<9.0) then xl:='Kha';


if (dtb>=5.0) and (dtb<7.0) then xl:='Trung binh';
if dtb<5.0 then xl:='Yeu';


writeln('Ho ten:',hoten:25,'Diem TB:',dtb:10:2,'Xep loai:',xl:20);
readln;


End.


<i><b>4.5 Viết chương trình nhập vào tháng, năm rồi tính số ngày của tháng. Biết năm nhuần là năm </b></i>
<i><b>chia hết cho 4 và nếu nó chia hết cho 100 thì cũng phải chia hết cho 400</b></i>


Program bt4_5;


Var ngay,thang,nam:integer;
Begin


write('nhap thang:');
readln(thang);


</div>
<span class='text_page_counter'>(3)</span><div class='page_container' data-page=3>

case thang of


1,3,5,7,8,10,12:ngay:=31;
4,6,9,11:ngay:=30;


2:if nam mod 4 <> 0 then ngay:=28



else if (nam mod 100= 0)and(nam mod 400<>0)then ngay:=28
else ngay:=29;


end;


writeln('thang',thang,'nam',nam,'ngay',ngay);
readln;


End.


<i><b>4.6 Viết chương trình nhập vào ký tự. Nếu là ký tự thường thì in ra ký tự hoa tương ứng, nếu là ký </b></i>
<i><b>tự hoa thì in ra ký tự thường tương ứng, nếu là các ký tự khác thì in ra chính nó</b></i>


Program bt4_6;
Var kt:char;
Begin


write('nhap vao ky tu:');
readln(kt);


case kt of


'A'..'Z':kt:=chr(ord(kt)+32);


'a'..'z':kt:=chr(ord(kt)-32);{hoac 'a'..'z':kt:=upcase(kt);}
end;


writeln('ky tu da doi la:',kt);
readln;



End.


<i><b>5.1 Viết chương trình nhập vào một số nguyên dương n, tìm tất cả các ước số của n</b></i>
Program bt5_1;


Var i,n:integer;
Begin


write('nhap n:');
readln(n);


writeln('cac uoc cua ',n,'la:');
for i:=1 to n do


if (n mod i)=0 then write(i:6);
readln;


End.


<i><b>5.2 Viết chương trình tính tổng S=1+2+…….+n, với n là số nguyên dương được nhập từ bàn phím.</b></i>
Program bt5_2;


Var s,i,n:integer;
Begin


write('nhap n:');
readln(n);


s:=0;



</div>
<span class='text_page_counter'>(4)</span><div class='page_container' data-page=4>

End.


<i><b>5.3 Viết chương trình tính tổng S=-1+2-3+…….+(-1)</b><b>n</b><b><sub>+n, với n là số nguyên dương được nhập từ </sub></b></i>
<i><b>bàn phím.</b></i>


Program bt5_3;
Var s,i,n:integer;
Begin


write('nhap n:');
readln(n);


s:=0;


for i:=1 to n do


if (i mod 2)=0 then s:=s+i
else s:=s-i;


writeln('tong s=',s);
readln;


End.


<i><b>5.4 Viết chương trình tính tổng S=</b></i> 1 2... <i>n</i>1 <i>n</i> <i><b>, với n là số nguyên dương được nhập từ </b></i>
<i><b>bàn phím.</b></i>


Program bt5_4;
Var i,n:integer;


s:real;


Begin


write('nhap n:');
readln(n);


s:=0;


for i:=1 to n do s:=sqrt((n-i+1)+s);
writeln('ket qua s=',s:10:2);


readln;
End.


<i><b>5.5 Viết chương trình tính tổng S=1</b><b>2</b><b><sub>+2</sub></b><b>2</b><b><sub>+………+n</sub></b><b>2</b><b><sub>, với n là số nguyên dương được nhập từ bàn </sub></b></i>
<i><b>phím</b></i>


Program bt5_5;
Var s:real;
i,n:integer;
Begin


write('nhap n:');
readln(n);


s:=0;


for i:=1 to n do s:=s+exp(2*ln(i));



writeln('tong',n,'so nguyen duong binh phuong=',s:10:2);
readln;


End.


<i><b>5.6 Viết chương trình tính tổng bình phương của n số lẻ dương đầu tiên.</b></i>


<b>{VD: n=4 thì tính (1*1)+(3*3)}</b>


</div>
<span class='text_page_counter'>(5)</span><div class='page_container' data-page=5>

Var s:real;
i,n:integer;
Begin


write('nhap n:');
readln(n);


s:=0;


for i:=1 to n do


if i mod 2 <> 0 then s:=s+exp(2*ln(i))
else writeln('khong tinh');


writeln('tong s=',s:10:2);
readln;


End.


<i><b>5.7 Viết chương trình tính tổng bình phương của n số lẻ dương đầu tiên.</b></i>
<b>{VD:n=3 thi tinh (1*1)+(3*3)+(5*5)}</b>



var i,n,s:integer;
begin


write('nhap n=');
readln(n);


s:=1;


for i:=2 to 2*n-1 do if i mod 2 = 0 then s:=s+sqr(i+1);
writeln('s= ',s);


readln
end.


<i><b>5.11 Viết chương trình nhập vào 1 số nguyên rồi đếm số các chữ số của số đó </b></i>
<i><b>(VD: 1999 có 4 chữ số)</b></i>


Program bt5_11;
Var n:longint;
dem:byte;
Begin


write('nhap n:');
readln(n);


dem:=0;


write('so ',n,' co ');
repeat



n:=n div 10;
dem:=dem+1;
until n=0;


writeln(dem,' chu so');
readln;


End.


<i><b>5.12 Viết chương trình nhập vào 1 số nguyên rồi in ra số đảo ngược của số đó.</b></i>
Program bt5_12;


Var n:integer;
Begin


</div>
<span class='text_page_counter'>(6)</span><div class='page_container' data-page=6>

readln(n);
repeat


write(n mod 10);
n:=n div 10;
until n=0;


readln;
End.


<i><b>5.13 Viết chương trình nhập vào 2 số nguyên a, b. Tìm ước số chung lớn nhất của chúng</b></i>
Program bt5_13;


Var r,a,b:integer;


Begin


write('nhap a,b:');
readln(a,b);


while b<>0 do
begin


r:=a mod b;
a:=b;


b:=r;
end;


writeln('uoc so chung lon nhat cua a, b la: ',a);
readln;


End.


<i><b>5.14 Viết chương trình nhập vào số nguyên dương n. Kiểm tra xem số n có là số nguyên tố không.</b></i>
Program bt5_14;


Var i,n:integer;
Begin


write('nhap n:');
readln(n);


i:=2;



while n mod i <> 0 do i:=i+1;


if i=n then writeln(n,' la so nguyen to')


else writeln(n,' khong phai la so nguyen to');
readln;


End.


<i><b>5.15 Viết chương trình nhập vào 1 số nguyên dương n. Kiểm tra xem n có phải là số hịan thiện </b></i>
<i><b>không.</b></i>


Program bt5_15;
Var n,t,i:integer;
Begin


write('nhap n:');
readln(n);


t:=0;


for i:=1 to n-1 do


if n mod i = 0 then t:=t+i;


</div>
<span class='text_page_counter'>(7)</span><div class='page_container' data-page=7>

else writeln(n,' khong phai la so hoan thien');
readln;


End.



<i><b>5.17 Viết chương trình tìm tất cả các số có 3 chữ số abc sao cho abc = a</b><b>3</b><b><sub>+b</sub></b><b>3</b><b><sub>+c</sub></b><b>3</b></i>
Program bt5_17;


Var a,b,c:longint;
Begin


for a:=1 to 9 do
for b:=0 to 9 do
for c:=0 to 9 do


if 100*a+10*b+c=a*a*a+b*b*b+c*c*c then writeln(a,b,c);
readln;


End.


<i><b>5.18 Viết chương trình tìm tất cả các số có 3 chữ số sao cho tổng tất cả các chữ số bằng tích của </b></i>
<i><b>chúng. VD: a+b+c = a*b*c</b></i>


Program bt5_18;
Var a,b,c:longint;
Begin


for a:=1 to 9 do
for b:=0 to 9 do
for c:=0 to 9 do


if a+b+c=a*b*c then writeln(a,b,c);
readln;


End.



<i><b>5.19 Có 3 loại tờ giấy bạc 500đ, 200đ, 100đ. Viết chương trình tìm tất cả các phương án để có được</b></i>
<i><b>số tiền 1700đ từ 3 loại giấy bạc trên</b></i>


Program bt5_19;
Var a,b,c:integer;
Begin


for a:=0 to 3 do
for b:=0 to 8 do
for c:=0 to 17 do


if a*500+b*200+c*100=1700 then


writeln('so to 500:',a,'; so to 200:',b,'; so to 100:',c);
readln;


End.


<i><b>5.20 Viết chương trình giải bài tốn đố sau:</b></i>
<i><b>Trăm trâu trăm cỏ</b></i>


<i><b>Trâu đứng ăn nằm</b></i>
<i><b>Trâu nằm ăn ba</b></i>
<i><b>Ba trâu già ăn một</b></i>


<i><b>Hỏi có bao nhiêu trâu đứng, trâu nằm, trâu già?</b></i>
Program bt5_20;


</div>
<span class='text_page_counter'>(8)</span><div class='page_container' data-page=8>

for x:=0 to 20 do


for y:=0 to 33-x do


for z:=0 to 100-x-y do
if x+y+z=100 then


writeln('so trau dung:',x,'; so trau nam:',y,'; so trau gia:',z);
readln;


End.


<i><b>6.2 Viết 1 hàm kiểm tra 1 số ngun x có phải là số ngun tố khơng? Ứng dụng hàm này hãy tìm:</b></i>
<i><b>a. Số nguyên tố nhỏ nhất có 3 chữ số.</b></i>


program bt6_2a;
var i:integer;


function snt(n:integer):boolean;
var i:integer;


begin
i:=2;


while n mod i <> 0 do i:=i+1;
if n=i then snt:=true


else snt:=false;
end;


begin
i:=100;



while (not snt(i)) do i:=i+1;


writeln('snt nho nhat co 3 chu so la:',i);
readln;


end.


<i><b>b. Số nguyên tố lớn nhất có 3 chữ số.</b></i>
program bt6_2b;


var i:integer;


function snt(n:integer):boolean;
var i:integer;


begin
i:=2;


while n mod i <> 0 do i:=i+1;
if n=i then snt:=true


else snt:=false;
end;


begin
i:=999;


while (not snt(i)) do i:=i-1;



writeln('snt lon nhat co 3 chu so la:',i);
readln;


end.


<i><b>6.3 Viết 1 hàm kiểm tra 1 số nguyên x có phải là số chính phương khơng? Ứng dụng hàm này hãy </b></i>
<i><b>in ra màn hình các số chính phương nhỏ hơn 100</b></i>


</div>
<span class='text_page_counter'>(9)</span><div class='page_container' data-page=9>

var i:integer;


function scp(x:integer):boolean;
begin


if sqrt(x)=round (sqrt(x))then scp:=true
else scp:=false;


end;
begin


for i:=1 to 99 do


if scp(i) then writeln(i,'la scp');
readln;


end.


<i><b>6.4 Viết 1 hàm tính n! Áp dụng hàm này viết chương trình tính:</b></i>
<i><b> e = 1 + 1/1! + 1/2! +……+ 1/n!</b></i>


program bt6_4;


var i,n:integer;
e:real;


function gt(n:integer):longint;
begin


if n=1 then gt:=1
else gt:=gt(n-1)*n;
end;


begin


write('nhap n:');
readln(n);


e:=1;


for i:=1 to n do e:=e+1/gt(i);
writeln('tong e=',e:10:2);
readln;


end.


<i><b>8.1 Viết chương trình nhập vào một dãy các số nguyên và in max, min của dãy (không sắp xếp </b></i>
<i><b>dãy).</b></i>


Program bt8_1;


Var a: array[1..100] of integer;
i, n, max, min: integer;


Begin


write('Cho biet so phan tu cua day : ');
readln(n);


for i:=1 to n do
begin


write('a[',i,'] = ');
readln(a[i]);
end;


</div>
<span class='text_page_counter'>(10)</span><div class='page_container' data-page=10>

begin


if max<a[i] then max:=a[i];
if min>a[i] then min:=a[i];
end;


writeln('max = ',max);
writeln('min = ',min);
readln;


End.


<i><b>8.2 Viết chương trình nhập vào một dãy các số nguyên, và sắp xếp dãy theo thứ tự giảm dần, in kết </b></i>
<i><b>quả ra màn hình.</b></i>


Program bt8_2;


Var a: array[1..100] of integer;


i, j, n, t : integer;


Begin


write('Cho biet so phan tu cua day : ');
readln(n);


for i:=1 to n do
begin


write('a[',i,'] = ');
readln(a[i]);
end;


for i:=1 to n-1 do
for j:=1 to n-i do


if a[j]<a[j+1] then
begin


t:=a[j];
a[j]:=a[j+1];
a[j+1]:=t;
end;


for i:=1 to n do writeln(a[i]:5);
readln;


End.



<i><b>8.4 Viết chương trình nhập vào một dãy các số nguyên, và nhập trị x, rồi tìm phần tử đầu tiên </b></i>
<i><b>trong dãy có trị bằng x.</b></i>


Program bt8_4;


Var a:array[1..100] of integer;
i, n, x : integer;


Begin


write('Cho biet so phan tu cua day : ');
readln(n);


for i:=1 to n do
begin


</div>
<span class='text_page_counter'>(11)</span><div class='page_container' data-page=11>

write('Cho biet tri can tim : ');
readln(x);


i:=1;


while (a[i]<>x) and (i<=n) do i:=i+1;


if i>n then writeln('khong co tri ',x,' trong day')
else writeln('phan tu dau tien co tri = ',x,' la : a[',i,']');
readln;


End.


<i><b>8.5 Viết chương trình nhập vào một dãy các số nguyên, và nhập trị x, rồi đếm xem trong dãy có </b></i>


<i><b>mặt bao nhiêu số x ?</b></i>


Program bt8_5;


Var a:array[1..100] of integer;
i, n, x, dem : integer;


Begin


write('Cho biet so phan tu cua day : ');
readln(n);


for i:=1 to n do
begin


write('a[',i,'] = ');
readln(a[i]);
end;


write('Cho biet tri x can dem : ');
readln(x);


dem:=0;


for i:=1 to n do if a[i]=x then dem:=dem+1;
writeln('co ',dem,' phan tu ',x,' trong day');
readln;


End.



<i><b>8.6 Viết chương trình nhập vào một dãy các số nguyên, và đếm số các số dương, âm, bằng không </b></i>
<i><b>của dãy.</b></i>


Program bt8_6;


Var a:array[1..100] of integer;


i, n, demam, demduong, demkhong : integer;
Begin


write('Cho biet so phan tu cua day : ');
readln(n);


for i:=1 to n do
begin


write('a[',i,'] = ');
readln(a[i]);
end;


</div>
<span class='text_page_counter'>(12)</span><div class='page_container' data-page=12>

if a[i]<0 then demam:=demam+1


else if a[i]>0 then demduong:=demduong+1
else demkhong:=demkhong+1;


writeln('co ',demam,' so am trong day');


writeln('co ',demduong,' so duong trong day');
writeln('co ',demkhong,' so khong trong day');
readln;



End.


<i><b>8.7 Viết chương trình nhập vào một dãy các số ngun, tính tổng bình phương các số dương trong </b></i>
<i><b>dãy.</b></i>


Program bt8_7;


Var a: array[1..100] of integer;
i, n, s : integer;


Begin


write('Cho biet so phan tu cua day : ');
readln(n);


for i:=1 to n do
begin


write('a[',i,'] = ');
readln(a[i]);
end;


s:=0;


for i:=1 to n do


if a[i]>0 then s:=s+a[i]*a[i];


writeln('Tong binh phuong cac so duong trong day s= ',s);


readln;


End.


<i><b>8.8 Viết chương trình nhập vào một dãy, kiểm tra xem dãy có đối xứng khơng ?</b></i>
Program bt8_8;


Var a: array[1..100] of integer;
i, n: integer;


Begin


write('cho biet so phan tu cua day :');
readln(n);


for i:=1 to n do
begin


write('nhap a[',i,']=');
readln(a[i]);


end;
i:=1;


while (a[i]=a[n-i+1]) and (i<=n div 2) do i:=i+1;
if i> n div 2 then writeln('Day doi xung')


else writeln('Day khong doi xung');
readln;



</div>
<span class='text_page_counter'>(13)</span><div class='page_container' data-page=13>

<b>Bài 1. Viết CT in ra màn hình các số nguyên từ 1 đến 100 sao cho cứ 10 số thì xuống dịng </b>


Program bai1;
var i:byte;
Begin


for i:=1 to 100 do
begin


write(i:3);


if i mod 10=0 then writeln;
end;


Readln
End.


<b>Bài 2. Viết CT in ra màn hình bảng cửu chương </b>


Program bai2;
Uses crt;
Var i,j:byte;
Begin


Clrscr;


for i:=1 to 10 do
for j:=2 to 10 do


begin



write(j:2,'*',i:2,'=',i*J:2,' ');


if j=10 then writeln;
end;


Readln
End.


<b>Bài 3. Viết CT tìm lời giải cho các bài tốn sau</b>


<b>a. Trong giỏ vừa thỏ vừa gà, 100 cái cẳng, 43 cái đầu. Hỏi mấy gà, mấy thỏ?</b>


Program bai3;
Uses crt;


Var ga,tho:byte;
Begin


Clrscr;


for ga:=1 to 43 do
begin


tho:=43 - ga;


if 4*tho+2*ga=100 then writeln('so ga va tho la: ',ga,' ',tho);
end;


Readln


End.


<b>b.Vừa gà vừa chó bó lại cho trịn, 36 con , 100 chân chẵn. Hỏi nhiêu gà, nhiêu chó?</b>


Program bai3b;
Var ga,cho:byte;
Begin


</div>
<span class='text_page_counter'>(14)</span><div class='page_container' data-page=14>

cho:=36 - ga;


if 4*cho+2*ga=100 then write('so ga va cho la: ',ga,' ',cho);
end;


Readln
End.


<b>Bài 4. Viết chương trình nhập vào hai số nguyên dương và xét xem hai số đó có ngun tố cùng </b>
<b>nhau hay khơng?</b>


Program sntcungnhau;
Uses crt;


Var x,y: integer;


Function UCLN(a,b: integer): integer ;
Var r : integer ;


begin


while b<>0 do begin


r := a mod b;
a := b;


b := r;
end;


UCLN := a;
end;


Begin
clrscr;


write('nhap vao so x:');readln(x);
write('nhap vao so y:');readln(y);


if ucln(x,y) = 1 then writeln(x,' va ', y, 'la 2 snt cung nhau')
else writeln(x, 'va', y, 'ko la snt cung nhau');


Readln;
End.


<b>Bài 5. Viết chương trình tìm và in ra màn hình tất cả hốn vị của 12345</b>
<b> (Ví dụ: 12345 12354 12435…).</b>


Program hoanvi;
Uses crt;


Var a,b,c,d,e,dem,d1:integer;
Begin



clrscr;


writeln('Ban doi ti nhe!');
dem:=0; d1:=0;


</div>
<span class='text_page_counter'>(15)</span><div class='page_container' data-page=15>

begin


if (a<>b) and (a<>c) and (a<>d) and (a<>e) and (b<>c)and (b<>d)and
(b<>e)and (c<>d)and (c<>e) and (d<>e) then


writeln(a,b,c,d,e);
d1:=d1+1;


end;


writeln('co ',d1,' so hoan vi cua so 12345');
Readln;


End.


<b>Bài 6. Nhập từ bàn phím tuổi cha và con (hiện tại tuổi cha lớn hơn 2 lần tuổi con và tuổi cha hơn</b>
<b>tuổi con ít nhất là 25). Đưa ra màn hình câu trả lời cho câu hỏi "Bao nhiêu năm nữa thì tuổi cha</b>
<b>gấp đôi tuổi con"?</b>


Program tuoichatuoicon;
Var a,b,t :integer;


Begin


Repeat



writeln('nhap tuoi cha');
readln(a);


writeln('nhap tuoi con');
readln(b);


Until (a-b)>=25;
t:=a-2*b;


writeln('tuoi cha gap doi tuoi cha sau ',t,' nam');
readln;


</div>

<!--links-->

×