Sau đó 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)... Kiểm tra xem số n có là số nguyên tố không..[r]
(1)BÀI TẬP PASCAL ÔN THI HỌC SINH GIỎI
4.1 Viết chương trình nhập vào số nguyên, kiểm tra xem chúng có phải ước không Program bt4_1;
Var a,b:integer; Begin
write('nhap a,b:'); readln(a,b);
if (a mod b) = then writeln(b,' la uoc cua ',a) else writeln(b,' khong la uoc cua ',a);
if (b mod a) = then writeln(a,' la uoc cua ',b) else writeln(a,' khong la uoc cua ',b);
readln; End
4.2 Viết chương trình giải hệ phương trình:
f dy cx
e by ax 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
4.3 Viết chương trình nhập vào số nguyên a, b, c Kiểm tra xem số có thỏa mãn: - Là cạnh tam giác thường
- Là cạnh tam giác cân - Là cạnh tam giác đều - Không cạnh tam giác
Program bt4_3; Var a,b,c:integer; Begin
(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 canh cua tam giac'); readln;
End
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 học sinh Sau in hình: họ tên, điểm trung bình, xếp lọai học sinh (trên dịng) Cho biết: - Điểm trung bình: (điểm văn + điểm tóan + điểm anh văn) / 3
- Xếp loại: Giỏi, điểm trung bình >= 9.0
Khá, 7.0 <= điểm trung bình < 9.0
Trung bình, 5.0 <= điểm trung bình < 7.0 Yếu, điểm trung bình < 5.0
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
4.5 Viết chương trình nhập vào tháng, năm tính số ngày tháng Biết năm nhuần năm chia hết cho chia hết cho 100 phải chia hết cho 400
Program bt4_5;
Var ngay,thang,nam:integer; Begin
write('nhap thang:'); readln(thang);
(3)case thang of
1,3,5,7,8,10,12:ngay:=31; 4,6,9,11:ngay:=30;
2:if nam mod <> 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
4.6 Viết chương trình nhập vào ký tự Nếu ký tự thường in ký tự hoa tương ứng, ký tự hoa in ký tự thường tương ứng, ký tự khác in nó
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
5.1 Viết chương trình nhập vào số nguyên dương n, tìm tất ước số n Program bt5_1;
Var i,n:integer; Begin
write('nhap n:'); readln(n);
writeln('cac uoc cua ',n,'la:'); for i:=1 to n
if (n mod i)=0 then write(i:6); readln;
End
5.2 Viết chương trình tính tổng S=1+2+…….+n, với n số nguyên dương nhập từ bàn phím. Program bt5_2;
Var s,i,n:integer; Begin
write('nhap n:'); readln(n);
s:=0;
(4)End
5.3 Viết chương trình tính tổng S=-1+2-3+…….+(-1)n+n, với n số nguyên dương nhập từ bàn phím.
Program bt5_3; Var s,i,n:integer; Begin
write('nhap n:'); readln(n);
s:=0;
for i:=1 to n
if (i mod 2)=0 then s:=s+i else s:=s-i;
writeln('tong s=',s); readln;
End
5.4 Viết chương trình tính tổng S= 1 2 n1 n , với n số nguyên dương nhập từ bàn phím.
Program bt5_4; Var i,n:integer; s:real;
Begin
write('nhap n:'); readln(n);
s:=0;
for i:=1 to n s:=sqrt((n-i+1)+s); writeln('ket qua s=',s:10:2);
readln; End
5.5 Viết chương trình tính tổng S=12+22+………+n2, với n số nguyên dương nhập từ bàn phím
Program bt5_5; Var s:real; i,n:integer; Begin
write('nhap n:'); readln(n);
s:=0;
for i:=1 to n s:=s+exp(2*ln(i));
writeln('tong',n,'so nguyen duong binh phuong=',s:10:2); readln;
End
5.6 Viết chương trình tính tổng bình phương n số lẻ dương đầu tiên.
{VD: n=4 tính (1*1)+(3*3)}
(5)Var s:real; i,n:integer; Begin
write('nhap n:'); readln(n);
s:=0;
for i:=1 to n
if i mod <> then s:=s+exp(2*ln(i)) else writeln('khong tinh');
writeln('tong s=',s:10:2); readln;
End
5.7 Viết chương trình tính tổng bình phương n số lẻ dương đầu tiên. {VD:n=3 thi tinh (1*1)+(3*3)+(5*5)}
var i,n,s:integer; begin
write('nhap n='); readln(n);
s:=1;
for i:=2 to 2*n-1 if i mod = then s:=s+sqr(i+1); writeln('s= ',s);
readln end
5.11 Viết chương trình nhập vào số nguyên đếm số chữ số số (VD: 1999 có chữ số)
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
5.12 Viết chương trình nhập vào số nguyên in số đảo ngược số đó. Program bt5_12;
Var n:integer; Begin
(6)readln(n); repeat
write(n mod 10); n:=n div 10; until n=0;
readln; End
5.13 Viết chương trình nhập vào số nguyên a, b Tìm ước số chung lớn chúng Program bt5_13;
Var r,a,b:integer; Begin
write('nhap a,b:'); readln(a,b);
while b<>0 begin
r:=a mod b; a:=b;
b:=r; end;
writeln('uoc so chung lon nhat cua a, b la: ',a); readln;
End
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ó số ngun tố khơng. Program bt5_14;
Var i,n:integer; Begin
write('nhap n:'); readln(n);
i:=2;
while n mod i <> i:=i+1;
if i=n then writeln(n,' la so nguyen to')
else writeln(n,' khong phai la so nguyen to'); readln;
End
5.15 Viết chương trình nhập vào số nguyên dương n Kiểm tra xem n có phải số hịan thiện khơng.
Program bt5_15; Var n,t,i:integer; Begin
write('nhap n:'); readln(n);
t:=0;
for i:=1 to n-1
if n mod i = then t:=t+i;
(7)else writeln(n,' khong phai la so hoan thien'); readln;
End
5.17 Viết chương trình tìm tất số có chữ số abc cho abc = a3+b3+c3 Program bt5_17;
Var a,b,c:longint; Begin
for a:=1 to for b:=0 to for c:=0 to
if 100*a+10*b+c=a*a*a+b*b*b+c*c*c then writeln(a,b,c); readln;
End
5.18 Viết chương trình tìm tất số có chữ số cho tổng tất chữ số tích chúng VD: a+b+c = a*b*c
Program bt5_18; Var a,b,c:longint; Begin
for a:=1 to for b:=0 to for c:=0 to
if a+b+c=a*b*c then writeln(a,b,c); readln;
End
5.19 Có loại tờ giấy bạc 500đ, 200đ, 100đ Viết chương trình tìm tất phương án để có được số tiền 1700đ từ loại giấy bạc trên
Program bt5_19; Var a,b,c:integer; Begin
for a:=0 to for b:=0 to for c:=0 to 17
if a*500+b*200+c*100=1700 then
writeln('so to 500:',a,'; so to 200:',b,'; so to 100:',c); readln;
End
5.20 Viết chương trình giải tốn đố sau: Trăm trâu trăm cỏ
Trâu đứng ăn nằm Trâu nằm ăn ba Ba trâu già ăn một
Hỏi có trâu đứng, trâu nằm, trâu già? Program bt5_20;
(8)for x:=0 to 20 for y:=0 to 33-x
for z:=0 to 100-x-y if x+y+z=100 then
writeln('so trau dung:',x,'; so trau nam:',y,'; so trau gia:',z); readln;
End
6.2 Viết hàm kiểm tra số nguyên x có phải số nguyên tố khơng? Ứng dụng hàm tìm: a Số nguyên tố nhỏ có chữ số.
program bt6_2a; var i:integer;
function snt(n:integer):boolean; var i:integer;
begin i:=2;
while n mod i <> i:=i+1; if n=i then snt:=true
else snt:=false; end;
begin i:=100;
while (not snt(i)) i:=i+1;
writeln('snt nho nhat co chu so la:',i); readln;
end
b Số nguyên tố lớn có chữ số. program bt6_2b;
var i:integer;
function snt(n:integer):boolean; var i:integer;
begin i:=2;
while n mod i <> i:=i+1; if n=i then snt:=true
else snt:=false; end;
begin i:=999;
while (not snt(i)) i:=i-1;
writeln('snt lon nhat co chu so la:',i); readln;
end
6.3 Viết hàm kiểm tra số nguyên x có phải số phương khơng? Ứng dụng hàm in hình số phương nhỏ 100
(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
if scp(i) then writeln(i,'la scp'); readln;
end
6.4 Viết hàm tính n! Áp dụng hàm viết chương trình tính: e = + 1/1! + 1/2! +……+ 1/n!
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 e:=e+1/gt(i); writeln('tong e=',e:10:2); readln;
end
8.1 Viết chương trình nhập vào dãy số nguyên in max, dãy (không xếp dãy).
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 begin
write('a[',i,'] = '); readln(a[i]); end;
(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
8.2 Viết chương trình nhập vào dãy số nguyên, xếp dãy theo thứ tự giảm dần, in kết quả hình.
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 begin
write('a[',i,'] = '); readln(a[i]); end;
for i:=1 to n-1 for j:=1 to n-i
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 writeln(a[i]:5); readln;
End
8.4 Viết chương trình nhập vào dãy số nguyên, nhập trị x, tìm phần tử trong dãy có trị x.
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 begin
(11)write('Cho biet tri can tim : '); readln(x);
i:=1;
while (a[i]<>x) and (i<=n) i:=i+1;
if i>n then writeln('khong co tri ',x,' day') else writeln('phan tu dau tien co tri = ',x,' la : a[',i,']'); readln;
End
8.5 Viết chương trình nhập vào dãy số nguyên, nhập trị x, đếm xem dãy có mặt số x ?
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 begin
write('a[',i,'] = '); readln(a[i]); end;
write('Cho biet tri x can dem : '); readln(x);
dem:=0;
for i:=1 to n if a[i]=x then dem:=dem+1; writeln('co ',dem,' phan tu ',x,' day'); readln;
End
8.6 Viết chương trình nhập vào dãy số nguyên, đếm số số dương, âm, không của dãy.
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 begin
write('a[',i,'] = '); readln(a[i]); end;
(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 day');
writeln('co ',demduong,' so duong day'); writeln('co ',demkhong,' so khong day'); readln;
End
8.7 Viết chương trình nhập vào dãy số ngun, tính tổng bình phương số dương dãy.
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 begin
write('a[',i,'] = '); readln(a[i]); end;
s:=0;
for i:=1 to n
if a[i]>0 then s:=s+a[i]*a[i];
writeln('Tong binh phuong cac so duong day s= ',s); readln;
End
8.8 Viết chương trình nhập vào dãy, kiểm tra xem dãy có đối xứng khơng ? 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 begin
write('nhap a[',i,']='); readln(a[i]);
end; i:=1;
while (a[i]=a[n-i+1]) and (i<=n div 2) i:=i+1; if i> n div then writeln('Day doi xung')
else writeln('Day khong doi xung'); readln;
(13)Bài Viết CT in hình số nguyên từ đến 100 cho 10 số xuống dịng
Program bai1; var i:byte; Begin
for i:=1 to 100 begin
write(i:3);
if i mod 10=0 then writeln; end;
Readln End
Bài Viết CT in hình bảng cửu chương
Program bai2; Uses crt; Var i,j:byte; Begin
Clrscr;
for i:=1 to 10 for j:=2 to 10
begin
write(j:2,'*',i:2,'=',i*J:2,' ');
if j=10 then writeln; end;
Readln End
Bài Viết CT tìm lời giải cho tốn sau
a Trong giỏ vừa thỏ vừa gà, 100 cẳng, 43 đầu Hỏi gà, thỏ?
Program bai3; Uses crt;
Var ga,tho:byte; Begin
Clrscr;
for ga:=1 to 43 begin
tho:=43 - ga;
if 4*tho+2*ga=100 then writeln('so ga va tho la: ',ga,' ',tho); end;
Readln End
b.Vừa gà vừa chó bó lại cho trịn, 36 , 100 chân chẵn Hỏi nhiêu gà, nhiêu chó?
Program bai3b; Var ga,cho:byte; Begin
(14)cho:=36 - ga;
if 4*cho+2*ga=100 then write('so ga va cho la: ',ga,' ',cho); end;
Readln End
Bài Viết chương trình nhập vào hai số nguyên dương xét xem hai số có nguyên tố nhau hay không?
Program sntcungnhau; Uses crt;
Var x,y: integer;
Function UCLN(a,b: integer): integer ; Var r : integer ;
begin
while b<>0 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) = then writeln(x,' va ', y, 'la snt cung nhau') else writeln(x, 'va', y, 'ko la snt cung nhau');
Readln; End
Bài Viết chương trình tìm in hình tất hốn vị 12345 (Ví dụ: 12345 12354 12435…).
Program hoanvi; Uses crt;
Var a,b,c,d,e,dem,d1:integer; Begin
clrscr;
writeln('Ban doi ti nhe!'); dem:=0; d1:=0;
(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ài Nhập từ bàn phím tuổi cha (hiện tuổi cha lớn lần tuổi tuổi cha hơn tuổi 25) Đưa hình câu trả lời cho câu hỏi "Bao nhiêu năm tuổi cha gấp đôi tuổi con"?
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;