BÀI TẬP PASCAL VÀ LỜI GIẢI
Bài 1:
Nhập vào 1 số nguyên gồm 4 chữ số
-Kiểm tra tình chắn lể
-kiểm tra xem có phải là số nguyên tố không
-kiểm tra xem có phải là số hoàn hảo không
Bài 2:
Nhập vào 1 số n nguyên (2<n<20)
-nhập vào mảng n số nguyên dương
-hiện tất cả số nguyên tố trong mảng và đếm xem có bao nhiu sô
Bài 3:
Nhạp vào 1 số n nguyên (2<n<20)
-nhập vào mảng n số nguyên
-tìm số lớn nhất và vị trí của nó
-sắp xếp mảng tang giần theo giá trị
-hiển thị mảng vừa sắp xếp
Bai 4:
-viết chương trình kiểm tra xem 1 số có là số hoàn hảo không
-liệt kê tất cả số hoàn hảo từ 1..2000 và đếm xem có bao nhiu số
Bài 5:
Nhập vào 1 số n nguyên (2<n<20)
-nhập vào một mảng n số thực
-tình trung bình công của tất cả số dương trong mảng
-kiểm tra xem trong mảng có bao nhiu số có giá trị trùng với giá trị của tbc nói trên
Bài 6:
-đếm xem 1 xâu s có bao nhiu kí tự c , ch (không kể in hoa hay thường)
-đém xem xâu s có bao nhiu từ (một từ được định nghĩa là một tập các kí tự không chứa dấu cách)
-chuẩm hóa xâu xóa tất cả kí tự cách ở đầu và cuói câu ,trong xâu không co nhìu hơn một dấu cách đứng liền nhau
Bài 7:
-nhập vào một ma trận m*n
-hiện ma trận vủa nhập
Bài 8:
Giải bài toán FIBONACI
Bài 9:
Kiểm tra tình đối xứng của 1 từ
Bài 10:
Nhập vào các số n , m (2<n,m<20)
-nhập vào ma trận các số nguyên
-xây dựng một mảng thứ 2 gồm các giá trị max của hàng trong ma trận trên
-hiện cả hai mảng ra màn hình
Bai 11:
Nhập vào các số n , m (2<n,m<20)
-nhập vào ma trận gồm các số nguyên
-hiện ma trận vùa nhập ra màn hình
-tìm số nguyên tố và cho bít vị trí của nó
Bai 12:
Nhập vào các số n , m (2<n,m<20)
-nhập một ma trận các số nguyên
-hiện ra màn hình ma trận vừa nhập
-sắp xếp lai ma trận sao cho hàng tăng cột tăng
Bai 13:
-kiểm tra một xâu s1 có mặt tỏng xâu s2 không tình từ 1 vị trí bất kì
-nhập 2 xâu s1 ,s2 .Đếm em xâu s1 có mặt trong xâu s2 bao nhiu lần
Bài 14:
-kiểm tra kí tự bất kì có là chữ cái từ a..z không
-nhập vào một xâu sau đó đếm xem trong xâu có bao nhiu kí tự không pải là chữ cái
Bài 15:
-Nhập vào một danh sách sinh viên (họ tên,năm sinh,dan tộc,điểm 1 ,điểm 2 , điểm 3 ,giới tính)
-hiện danh sách sinh viên vừa nhập dưới dạng cột
STT Hoten Gioitinh Dantoc Diem1 Diem2 Diem3 DTB
-liệt kê danh sách sinh viên đạt loại khá (dtb>7)
Bài 16:
-Nhập vào một danh sách sinh viên (họ tên,năm sinh,dan tộc,điểm 1 ,điểm 2 , điểm 3 ,giới tính)
-hiện danh sách sinh viên vừa nhập dưới dạng cột
STT Hoten Gioitinh Dantoc Diem1 Diem2 Diem3 DTB
-cho bit có bao nhiu phần trăm sinh viên nam bao nhiu phần trăm nữ
Bai 17:
-Nhập vào một danh sách sinh viên (họ tên,năm sinh,dan tộc,điểm 1 ,điểm 2 , điểm 3 ,giới tính)
-hiện danh sách sinh viên vừa nhập dưới dạng cột
STT Hoten Gioitinh Dantoc Diem1 Diem2 Diem3 DTB
-sắp xếp lại danh sách sinh viên tăng dần theo điểm trung bình (không làm sai lệch thông tin)
Bài giải
Bài 1:
program yen1;
uses crt;
var i,n,k,d:integer;
ok:boolean;
function chanle(n:integer):boolean;
begin
ok:=true;
if n mod 20 then ok:=false;
chanle:=ok;
end;
function nguyento(n:integer):boolean;
begin
ok:=true;
d:=0;
for i:=1 to n-1 do
if n mod i=0 then d:=d+1;
if d1 then ok:=false;
nguyento:=ok;
end;
function chinhphuong(n:integer):boolean;
begin
ok:=true;
k:=trunc(sqrt(n));
if sqr(k)n then ok:=false;
chinhphuong:=ok;
end;
begin
clrscr;
write(' Nhap n=');readln(n);
if chanle(n) then writeln(' So vua nhap la chan')
else writeln(' So vua nhap la so le');
if nguyento(n) then writeln(' So vua nhap la nguyen to')
else writeln(' So vua nhap khong phai la so nguyen to');
if chinhphuong(n) then writeln(' So vua nhap la so chinh phuong')
else writeln(' So vua nhap khong la so chinh phuong');
readln;
end.
Bài 2:
program yen2;
uses crt;
var a:array [ 1..20] of byte;
i,n,d,j,k:integer;
procedure nhap;
begin
for i:=1 to n do
begin
write(' a[',i,']=');readln(a[i]);
end;
end;
procedure nguyento;
begin
write(' Day so cac so nguyen to:');
k:=0;
for i:=1 to n do
begin
d:=0;
for j:=1 to a[i]-1 do
if a[i] mod j=0 then d:=d+1;
if d=1 then begin
write(' ',a[i]);
k:=k+1;
end;
end;
if k=0 then write(' khong co so nao')
else begin
writeln;
writeln(' Trong day co ',k,' so nguyen to');
end;
end;
begin
clrscr;
repeat
write(' Nhap n=');readln(n);
until (2<n)and(n<20);
nhap;
nguyento;
readln;
end.
Bài 3:
program yen3;
uses crt;
var a:array [1..20] of integer;
b:array [1..20] of integer;
i,n,max,j,tg:integer;
procedure nhap;
begin
for i:=1 to n do
begin
write(' a[',i,']=');readln(a[i]);
end;
end;
procedure timmax;
begin
max:=a[1];
for i:=2 to n do
if a[i]>max then max:=a[i];
j:=1;
for i:=1 to n do
if a[i]=max then begin
b[j]:=i;
j:=j+1;
end;
write(' So lon nhat trong day la ',max,' o vi tri thu');
for i:=1 to j-1 do
write(', ',b[i]);
writeln;
end;
procedure tang;
begin
for i:=1 to n-1 do
for j:=i+1 to n do
if a[i]>a[j] then begin
tg:=a[i];
a[i]:=a[j];
a[j]:=tg;
end;
write(' Day duoc sap xep lai la:');
for i:=1 to n do
write(' ',a[i]);
end;
begin
clrscr;
repeat
write(' Nhap n=');readln(n);
until (2<n)and(n<20);
nhap;
timmax;
tang;
readln;
end.
Bài 4:
program yen4;
uses crt;
var n,i,d,k,j:integer;
procedure hoanhao;
begin
d:=0;
for i:=1 to n-1 do
if n mod i=0 then d:=d+i;
if d=n then writeln(' So vua nhap la so hoan hao')
else writeln(' So vua nhap khong la so hoan hao');
end;
procedure vietlen;
begin
write(' Day so hoan hao tu 1-->2000:');
k:=0;
for i:=1 to 2000 do
begin
d:=0;
for j:=1 to i-1 do
if i mod j=0 then d:=d+j;
if d=i then begin
write(' ',i);
k:=k+1;
end;
end;
writeln;
writeln(' Trong day 1-->2000 co ',k,' so hoan hao');
end;
begin
clrscr;
write(' Nhap n=');readln(n);
hoanhao;
vietlen;
readln;
end.
Bài 5:
program yen5;
uses crt;
var a:array [1..20] of real;
b:array [1..20] of integer;
i,n,d,j:integer;
s,m:real;
procedure nhap;
begin
for i:=1 to n do
begin
write(' a[',i,']=');readln(a[i]);
end;
end;
function tbc:real;
begin
d:=0;s:=0;
for i:=1 to n do
if a[i]>0 then begin
s:=s+a[i];
d:=d+1;
end;
tbc:=(s/d);
end;
procedure kiemtra;
begin
d:=0;j:=1;
for i:=1 to n do
if m=a[i] then begin
b[j]:=i;
d:=d+1;
j:=j+1;
end;
if d=0 then writeln(' Trong mang khong co so nao trung trung binh cong')
else begin
write(' Trong day co ',d,' so trung voi trung binh cong o vi tri');
for i:=1 to j-1 do
write(', ',b[i]);
end;
end;
begin
clrscr;
repeat
write(' Nhap n=');readln(n);
until (2<n)and(n<20);
nhap;
m:=tbc;
writeln(' Trung bing cong :',m:2:3);
kiemtra;
readln;
end.
Bài 6:
program yen6;
uses crt;
var st:string;
i,d:integer;
ch:char;
function demkitu:integer;
begin
d:=0;
for i:=1 to length(st) do
if (st[i]='c')or(st[i]='C') then d:=d+1;
demkitu:=d;
end;
function demtu:integer;
begin
d:=1;
for i:=1 to length(st) do
if (st[i]' ')and(st[i+1]=' ') then d:=d+1;
demtu:=d;
end;
procedure chuanhoa;
begin
while st[1]=' ' do
delete(st,1,1);
while st[length(st)]=' ' do
delete(st,length(st),1);i:=1;
repeat
if (st[i]=' ')and(st[i+1]=' ') then delete(st,i,1) else i:=i+1;
until i>length(st);
end;
function dem:integer;
begin
d:=0;
for i:=1 to length(st) do
if st[i]=ch then d:=d+1;
dem:=d;
end;
begin
clrscr;
write(' Nhap xau:');readln(st);
write(' Nhap ki tu:');readln(ch);
chuanhoa;
writeln(' Trong xau co ',demkitu,' ki tu C');
writeln(' Trong xau co ',demtu,' tu');
writeln(' Ki tu ',ch,' vua nhap co mat ',dem,' lan trong xau');
readln;
end.
Bài 7:
program yen7;
uses crt;
var a:array[1..10,1..10] of integer;
i,j,n,m:integer;
procedure nhap;
begin
for i:=1 to m do
for j:=1 to n do
begin
write(' a[',i,',',j,']=');readln(a[i,j]);
end;
end;
procedure hienthi;
begin
writeln(' Ma tran vua nhap la:');
for i:=1 to m do
begin
for j:=1 to n do
write(' ',a[i,j]:4);
writeln;
end;
end;
begin
clrscr;
write(' Nhap m,n:');readln(m,n);
nhap;
hienthi;
readln;
end.
Bài 8:
program yen8;
uses crt;
var a:array [1..100] of integer;
n,i,m,d,s:integer;
procedure fibonaci;
begin
if n=1 then a[1]:=1
else begin
i:=2;s:=1;a[1]:=1;
repeat
a[i]:=s;
i:=i+1;
s:=a[i-1]+a[i-2];
until i>n;
end;
write(' Day so fibonaci la:');
for i:=1 to n do
write(' ',a[i]);
writeln;
end;
begin
clrscr;
write(' Nhap so de tinh day fibonaci:');readln(n);
write(' Nhap so de kiem tra xem co trong day fibonaci khong:');readln(m);
fibonaci;
d:=0;
for i:=1 to n do
if a[i]=m then d:=d+1;
if d=1 then writeln(' So de kiem tra co mat trong day fibonaci')
else writeln(' So kiem tra khong co mat trong day fibonaci');
readln;
end.
Bài 9:
program yen9;
uses crt;
var tu:string;
i:integer;
function doixung(tu1:string):boolean;
var ok:boolean;
begin
ok:=true;
for i:=1 to (length(tu1) div 2) do
if tu1[i]tu1[length(tu1)-i+1] then begin
ok:=false;
break;
end;
doixung:=ok;
end;
begin
clrscr;
write(' Nhap tu:');readln(tu);
if doixung(tu) then writeln(' Tu vua nhap doi xung')
else writeln(' Tu vua nhap khong doi xung');
readln;
end.
Bài 10:
program yen10;
uses crt;
var a:array [1..10,1..10] of integer;
b:array [1..10] of integer;
i,j,n,m,max:integer;
procedure nhap;
begin
for i:=1 to n do
for j:=1 to m do
begin
write(' a[',i,',',j,']=');readln(a[i,j]);
end;
end;
procedure xaydung;
begin
for j:=1 to m do
begin
max:=a[1,j];
for i:=2 to n do
if a[j,i]>max then max:=a[j,i];
b[j]:=max;
end;
end;
procedure hienthi;
begin
writeln(' Ma tran vua nhap la:');
for i:=1 to n do
begin
for j:=1 to m do
write(' ',a[i,j]:4);
writeln;
end;
writeln;
write(' Day gom cac so max la:');
for i:=1 to m do
write(' ',b[i]);
end;
begin
clrscr;
repeat
write(' Nhap n,m:');readln(n,m);
until (2<n)and(m<20);
nhap;
xaydung;
hienthi;
readln;
end.
Bài 11:
program yen11;
uses crt;
var a:array [1..10,1..10] of integer;
b:array [1..100] of integer;
i,j,n,m,d,k,t:integer;
procedure nhap;
begin
for i:=1 to n do
for j:=1 to m do
begin
write(' a[',i,',',j,']=');readln(a[i,j]);
end;
end;
procedure hienthi;
begin
writeln(' Ma tran vua nhap la:');
for i:=1 to n do
begin
for j:=1 to m do
write(' ',a[i,j]:4);
writeln;
end;
writeln;
end;
procedure nguyento;
begin
k:=1;
for i:=1 to n do
for j:=1 to m do
begin
d:=0;
for t:=1 to a[i,j]-1 do
if a[i,j] mod t=0 then d:=d+1;
if d=1 then begin
b[k]:=a[i,j];
k:=k+1;
end;
end;
writeln;writeln;
writeln(' Day so nguyen to la:');writeln;
for i:=1 to n do
for j:=1 to m do
begin
for t:=1 to k-1 do
if b[t]=a[i,j] then begin
write(' ',b[t]:8);
writeln(' :hang ',i,' cot ',j,' ');
end;
end;
end;
begin
clrscr;
repeat
write(' Nhap n,m:');readln(n,m);
until (2<n)and(m<20);
nhap;
hienthi;
nguyento;
readln;
end.
Bài 12:
program yen12;
uses crt;
var a:array [1..10,1..10] of integer;
b:array [1..100] of integer;
i,j,n,m,k,tg:integer;
procedure nhap;
begin
for i:=1 to n do
for j:=1 to m do
begin
write(' a[',i,',',j,']=');readln(a[i,j]);
end;
end;
procedure hienthi;
begin
writeln(' Ma tran vua nhap la:');
for i:=1 to n do
begin
for j:=1 to m do
write(' ',a[i,j]:4);
writeln;
end;
writeln;
end;
procedure sapxep;
begin
k:=1;
for i:=1 to n do
for j:=1 to m do
begin
b[k]:=a[i,j];
k:=k+1;
end;
for i:=1 to k-2 do
for j:=i+1 to k-1 do
if b[i]>b[j] then begin
tg:=b[i];
b[i]:=b[j];
b[j]:=tg;
end;
k:=1;
for i:=1 to n do
for j:=1 to m do
begin
a[i,j]:=b[k];
k:=k+1;
end;
writeln(' Ma tran duoc sap xep lai la:');
for i:=1 to n do
begin
for j:=1 to m do
write(' ',a[i,j]:4);
writeln;
end;
end;
begin
clrscr;
repeat
write(' Nhap n,m:');readln(n,m);
until (2<n)and(m<20);
nhap;
hienthi;
sapxep;
readln;
end.
Bài 13:
program yen13;
uses crt;
var s1,s2:string;
i,j,d,k,t:integer;
procedure kiemtra;
begin
d:=0;
for i:=1 to length(s2) do
if s2[i]=s1[1] then begin
k:=2;t:=1;
for j:=i+1 to (i+length(s1)-1) do
if s2[j]=s1[k] then begin
k:=k+1;
t:=t+1;
end;
if t=length(s1) then d:=d+1;
end;
if d>0 then begin
writeln(' Xau s1 co xuat hien trogn xau s2');
writeln(' Xau s1 xuat hien ',d,' lan trong xau s2');
end
else writeln(' Xau s1 khong xuat hien trong xau s2');
end;
begin
clrscr;
write(' Nhap xau s1:');readln(s1);
write(' Nhap xau s2:');readln(s2);
kiemtra;
readln;
end.
Bài 14:
program yen14;
uses crt;
type tap=set of char;
var ch:char;
st:string;
chucai:tap;
i,d:integer;
procedure kiemtra;
begin
if ch in chucai then writeln(' Ki tu ',ch,' co trong bang chu cai')
else writeln(' Ki tu ',ch,' khong co trong bang chu cai');
d:=0;
for i:=1 to length(st) do
if st[i] in chucai then d:=d+1;
writeln(' Trong xau co ',length(st)-d,' ki tu khong la chu cai');
end;
begin
clrscr;
write(' Nhap ki tu:');readln(ch);
write(' Nhap xau:');readln(st);
chucai:=['a'..'z','A'..'Z'];
kiemtra;
readln;
end.
Bài 15:
program yen15;
uses crt;
type sinhvien=record
hoten,dantoc,gioitinh:string;
namsinh,diem1,diem2,diem3:integer;
dtb:real;
end;
mang=array [1..10] of sinhvien;
var sv:mang;
i,n,d:integer;
procedure nhap;
begin
clrscr;
writeln(' NHAP THONG TIN CHO SINH VIEN');
for i:=1 to n do
with sv[i] do
begin
write(' Ho ten:');readln(hoten);
write(' Gioi tinh:');readln(gioitinh);
write(' Dan toc:');readln(dantoc);
write(' Diem1,Diem2,Diem3:');readln(diem1,diem2,diem3);
dtb:=(diem1+diem2+diem3)/3;
writeln;
end;
end;
procedure hienthi;
begin
writeln;writeln;
writeln(' DANH SACH SINH VIEN VUA NHAP');
for i:=1 to n do
with sv[i] do
begin
writeln(' Ho ten:',hoten);
writeln(' Nam sinh:',namsinh);
writeln(' Diem TB:',dtb:2:2);
writeln;writeln;
end;
end;
procedure sapxep;
begin
writeln(' DANH SACH SINH VIEN DAT LOAI KHA');
writeln;
d:=0;
for i:=1 to n do
if sv[i].dtb>7 then begin
writeln(' Ho ten:',sv[i].hoten);
writeln(' Diem TB:',sv[i].dtb:2:3);
writeln;writeln;
d:=d+1;
end;
if d=0 then writeln(' ( khong co sinh vien nao )');
end;
begin
clrscr;
write(' Nhap n=');readln(n);
nhap;
hienthi;
sapxep;
readln;
end.
Bài 16:
program yen16;
uses crt;
type sinhvien=record
hoten,dantoc,gioitinh:string;
namsinh,diem1,diem2,diem3:integer;
dtb:real;
end;
mang=array [1..10] of sinhvien;
var sv:mang;
i,n,d:integer;
p:real;
procedure nhap;
begin
clrscr;
writeln(' NHAP THONG TIN CHO SINH VIEN');
for i:=1 to n do
with sv[i] do
begin
write(' Ho ten:');readln(hoten);
write(' Gioi tinh:');readln(gioitinh);
write(' Dan toc:');readln(dantoc);
write(' Diem1,Diem2,Diem3:');readln(diem1,diem2,diem3);
dtb:=(diem1+diem2+diem3)/3;
writeln;
end;
end;
procedure hienthi;
begin
writeln;writeln;
writeln(' DANH SACH SINH VIEN VUA NHAP');
for i:=1 to n do
with sv[i] do
begin
writeln(' Ho ten:',hoten);
writeln(' Nam sinh:',namsinh);
writeln(' Diem TB:',dtb:2:2);
writeln;writeln;
end;
end;
procedure phantram;
begin
writeln;writeln;
writeln(' TY LE NAM NU');
d:=0;
for i:=1 to n do
if sv[i].gioitinh='nam' then d:=d+1;
p:=(d/n)*100;
writeln(' Trong danh sach co ',p:2:2,' % la sinh vien nam');
writeln(' Trong danh sach co ',(100-p):2:2,' % la sinh vien nu');
end;
begin
clrscr;
write(' Nhap n=');readln(n);
nhap;
hienthi;
phantram;
readln;
end.
Bài 17:
program yen17;
uses crt;
type sinhvien=record
hoten,dantoc,gioitinh:string;
namsinh,diem1,diem2,diem3:integer;
dtb:real;
end;
mang=array [1..10] of sinhvien;
var sv:mang;
i,n,j:integer;
procedure nhap;
begin
clrscr;
writeln(' NHAP THONG TIN CHO SINH VIEN');
for i:=1 to n do
with sv[i] do
begin
write(' Ho ten:');readln(hoten);
write(' Gioi tinh:');readln(gioitinh);
write(' Dan toc:');readln(dantoc);
write(' Diem1,Diem2,Diem3:');readln(diem1,diem2,diem3);
dtb:=(diem1+diem2+diem3)/3;
writeln;
end;
end;
procedure hienthi;
begin
writeln;writeln;
writeln(' DANH SACH SINH VIEN VUA NHAP');
for i:=1 to n do
with sv[i] do
begin
writeln(' Ho ten:',hoten);
writeln(' Nam sinh:',namsinh);
writeln(' Diem TB:',dtb:2:2);
writeln;writeln;
end;
end;
procedure sapxep;
var tg:sinhvien;
begin
writeln;writeln;
writeln(' DANH SACH SINH VIEN DUOC SAP XEP LAI LA');
for i:=1 to n-1 do
for j:=i+1 to n do
if sv[i].dtb>sv[j].dtb then begin
tg:=sv[i];
sv[i]:=sv[j];
sv[j]:=tg;
end;
for i:=1 to n do
with sv[i] do
begin
writeln(' Ho ten:',hoten);
writeln(' Diem TB:',dtb:2:2);
writeln;
end;
end;
begin
clrscr;
write(' Nhap n=');readln(n);
nhap;
hienthi;
sapxep;
readln;
end.
Tài liệu đính kèm: