1. Một số đoạn lệnh cần nhớ
1.1. Cấu trúc một chương trình Pascal
{ Phần khai báo}
- Khai báo tên chương trình: program
- Khai báo thư viên: uses
- Khai báo hằng: const
- Khai báo biến: var
- Khai báo chương trình con:
. Thủ tục: procedure
Begin
End;
Bài tập Pascal
1. Một số đoạn lệnh cần nhớ
1.1. Cấu trúc một chương trình Pascal
{ Phần khai báo}
- Khai báo tên chương trình: program ;
- Khai báo thư viên: uses ;
- Khai báo hằng: const : ;
- Khai báo biến: var : ;
- Khai báo chương trình con:
. Thủ tục: procedure [ (danh sách các tham số) ]
;
Begin
End;
. Hàm : function [(danh sách tham số)] :
;
Begin
: : { trả lại giá trị cho hàm}
End;
{Phần thân chương trình}
Begin
;
End.
1.2. Một số kiểu dữ liệu hay dùng
- Kiểu nguyên:
Byte: Từ 0 đến 255.
Integer: Từ -215 đến 215 -1.
Word: Từ 0 đến 216 -1.
Longint: Từ -231 đến 231 - 1.
- Kiểu thực:
Real: 0 hoặc có giá trị tuyệt đối nằm trong phạm vi từ 10-38 đến 1038
- Kiểu kí tự:
Char: 256 kí tự trong bộ mã ASCII.
- Kiểu logic:
Boolean: có giá trị True hoặc False.
1.3. Thủ tục chuẩn vào/ ra đơn giản
- Nhập dữ liệu từ bàn phím:
Read ();
Hoặc Readln ();
- Xuất dữ liệu ra màn hình:
Write ();
Hoặc Writeln ();
1.4. Câu lệnh rẽ nhánh
- If - then:
. Dạng thiếu: If then ;
. Dạng đủ: If then else ;
- Case - of:
Case of
: ;
: ;
: ;
Else
: ;
End;
1.5. Câu lệnh lặp
- Lặp với số lần biết trước:
. Dạng tiến: For := to do ;
. Dạng lùi: For := downto do ;
- Lặp với số lần chưa biết trước:
. While do ;
. Repeat
;
Until ;
1.6. Mảng 1 chiều
- Khai báo
. Trực tiếp:
Var : array [ kiểu chỉ số ] of ;
. Gián tiếp:
Type = array [ kiểu chỉ số ] of ;
Var : ;
- Nhập mảng
For i:= 1 to n do
Begin
Write (‘ nhap A[‘,i,’] = ’);
Readln (a[i]);
End;
- In mảng
For i:= 1 to n do Write (A[i] : 5);
1.7. Mảng 2 chiều
- Khai báo
. Trực tiếp:
Var : array [ kiểu chỉ số hàng, kiểu chỉ số cột] of ;
. Gián tiếp:
Type = array [ kiểu chỉ số hàng, kiểu chỉ số cột] of ;
Var : ;
- Nhập mảng
For i:= 1 to n do
For j:=1 to m do
Begin
Write (‘ nhap A[’,i,’,’,j,’] = ’);
Readln (a[i,j]);
End;
- In mảng
For i:= 1 to n do
Begin
For j:=1 to m do Write (A[i,j]:5 );
Readln;
End;
1.8. Xâu
- Khai báo
Var : String [ ];
- Nhập xâu
Write (‘ nhap vao xau: ‘); readln ( );
- In xâu
Write (‘xau: ‘, );
2. Một số thuật toán cơ bản
Kiểm tra N có là số chẵn (tương tự số lẻ)
If N mod 2=0 then write (‘N la so chan’);
Kiểm tra N có phải là số chính phương (số chính phương là số bằng bình phương của một số nguyên dương)
If Sqr(Round(Sqrt(N)))= N then write(‘N la so chinh phuong’);
Kiểm tra N có là số nguyên tố (số nguyên tố là số nguyên dương chỉ có 2 ước nguyên dương là 1 và chính nó)
i := 2;
m := Round ( Sqrt (N)); { i và m khai báo kiểu nguyên}
While (i 0) do i := i + 1;
If i>m then Write (‘ N la so nguyen to’);
Kiểm tra N có là số hoàn hảo (số hoàn hảo là số nguyên dương có tổng các ước trừ nó bằng chính nó)
S := 0; { S khai báo cùng kiểu với N}
For i := 1 to N - 1 do
If N mod i = 0 then S := S + i ;
If S = N do write (‘ N la so hoan hao’);
Kiểm tra N có là số đẹp (số hoàn hảo là số nguyên dương, đọc từ trái sang phải nó, chữ số đứng trước <= chữ số đướng sau)
{Biến kt khai báo kiểu logic}
Str (N, S); { S khai báo kiểu xâu}
Kt := True; i := 1;
While (kt = true) and (i < length(S)) do
Begin
If S[i+1] < S[i] then kt := False;
I := i+1;
End;
If kt do write (‘ N la so dep’);
3. Bài tập
3.1. Bài tập hình học
Bài 1: Cho tam giác có độ dài 3 cạnh là a, b, c. Tính chu vi, diện tích, độ dài 3 đường cao. Kiểm tra xem tam giác đó là vuông, đều hay cân?
uses crt;
var a,b,c, cv:integer;
p, dt: real;
begin
clrscr;
write(' nhap do dai 3 canh:'); readln(a,b,c);
if (a+b<c) or (a+c<b) or (b+c<a) then
write(' nhap kich thuoc 3 canh sai')
else
begin
cv := a+b+c;
writeln(' chu vi tam giac: ',cv);
p:=cv/2;
dt:= sqrt(p*(p-a)*(p-b)*(p-c));
writeln('dien tich tam giac: ',dt:6:2);
if (a*a+b*b=c*c) or (b*b+c*c=a*a) or (c*c+a*a=b*b) then
begin
writeln(' day la tam giac vuong');
if (a>b) and (a>c) then
begin writeln('do dai duong cao thu nhat: ',b);
writeln('do dai duong cao thu hai: ',c);
writeln('do dai duong cao thu ba: ',dt/a:6:2);
end;
if (b>a) and (b>c) then
begin
writeln('do dai duong cao thu nhat: ',a);
writeln('do dai duong cao thu hai: ',c);
writeln('do dai duong cao thu ba: ',dt/b:6:2);
end;
if (c>b) and (c>a) then
begin
writeln('do dai duong cao thu nhat: ',a);
writeln('do dai duong cao thu hai: ',b);
writeln('do dai duong cao thu ba: ',dt/c:6:2);
end;
end
else
begin
if (a=b) and (b=c) and (a=c) then
writeln('day la tam giac deu')
else
if (a=b) or (b=c) or (a=c) then
writeln('day la tam giac can');
writeln('do dai duong cao thu nhat: ',dt/b:6:2);
writeln('do dai duong cao thu hai: ',dt/c:6:2);
writeln('do dai duong cao thu ba: ',dt/a:6:2);
end;
end;
readln;
end.
Bài 2: Cho 4 điểm A(xa,ya), B(xb,yb), C(xc,yc), D(xd,yd). Cho biết vị trí tương đối của D đối với tam giác ABC.
var ax, bx, cx, dx, ay, by, cy, dy:real;
a,b,c:real;
p, p1, p2, p3:real;
s, s1, s2, s3: real;
d1, d2, d3: real;
begin
writeln('nhap toa do cho cac diem:');
write('diem A:'); readln(ax,ay);
write('diem B:'); readln(bx,by);
write('diem C:'); readln(cx,cy);
write('diem D:'); readln(dx,dy);
a:=sqrt(sqr(bx-ax)+sqr(by-ay)); {AB}
b:=sqrt(sqr(bx-cx)+sqr(by-cy)); {BC}
c:=sqrt(sqr(ax-cx)+sqr(ay-cy)); {CA}
p:=(a+b+c)/2;
s:=sqrt(p*(p-a)*(p-b)*(p-c));
d1:=sqrt(sqr(ax-dx)+sqr(ay-dy)); {AD}
d2:= sqrt(sqr(bx-dx)+sqr(by-dy)); {BD}
d3:= sqrt(sqr(cx-dx)+sqr(cy-dy)); {CD}
p1:=(c+d1+d3)/2; { ACD }
p2:=(a+d1+d2)/2; { ABD }
p3:=(b+d2+d3)/2; { BCD }
s1:= sqrt(p1*(p1-d1)*(p1-d3)*(p1-c));
s2:= sqrt(p2*(p2-d1)*(p2-d2)*(p2-a));
s3:= sqrt(p3*(p3-d2)*(p3-d3)*(p3-b));
if abs(s-s1-s2-s3)<0.001 then write('D thuoc tgiac ABC')
else if abs(s1)<0.001 then write('D nam tren AC')
else if abs(s2)<0.001 then write('D nam tren AB')
else if abs(s3)<0.001 then write('D nam tren BC')
else write('D nam ngoai tgiac ABC');
readln;
end.
Bài 3:
Bài tập về số nguyên
Bài 1: Nhập vào 2 số nguyên dương a và b. Tính và in ra màn hình: tổng, hiệu, tích, thương a/b và UCLN(a,b).
Uses crt;
Var a,b, tong, hieu, tich, ucln: integer;
Thuong: real;
Begin
Clrscr;
Write (‘nhap a va b: ‘); readln (a,b);
Writeln (‘Tong‘,a,‘+’,b,’=’,a + b);
Writeln (‘Hieu‘,a,‘-’,b,’=’,a - b);
Writeln (‘Tich‘, a,‘*’,b ,’=’,a * b);
Writeln (‘Thuong‘,a,‘/’,b ,’=’, a/b:5:2);
While ab do
If a>b then a := a-b Else b:=b-a;
Writeln (‘UCLN(‘,a,‘va’,b,’)=’, a );
Readln;
End.
Bài 2: Giải phương trình trùng phương: ax4 + bx2+c = 0.
uses crt;
var a,b,c:integer;
d,t,t1,t2:real;
begin
clrscr;
writeln('he so a,b,c:');
readln(a,b,c);
if (a=0) then writeln('nhap lai')
else
begin
{dat t=x*x}
d:=b*b-4*a*c;
if d<0 then write('PT vo ng')
else
if d=0 then
begin
t:=-b/(2*a);
if t>0 then
begin
writeln('PT co 2ng:');
writeln('x1=',-sqrt(t):6:2);
writeln('x2=',sqrt(t):6:2);
end
else
if t=0 then writeln('PT co ng duy nhat x=0')
else writeln('Pt vo ng');
end
else {d>0}
begin
t1:=(-b-sqrt(d))/(2*a);
t2:=(-b+sqrt(d))/(2*a);
if (t1<0) and (t2<0) then write('Pt vo ng');
if (t1=0) and (t2=0) then write('Pt co ng x=0');
if (t1>0) and (t2>0) then
begin
writeln('PT co 4 ngh:');
write('x1=',-sqrt(t1):6:2,'x2=',sqrt(t1):6:2);
write('x3=',-sqrt(t2):6:2,'x2=',sqrt(t2):6:2);
end;
if (t1>0) and (t2<0) then
begin
writeln('PT co 2 ng:');
write('x1=',-sqrt(t1):6:2,'x2=',sqrt(t1):6:2);
end;
if (t10) then
begin
writeln('PT co 2 ng:');
write('x1=',sqrt(t2):6:2,'x2=',sqrt(t2):6:2);
end;
end;
end;
readln;
end.
Bài 3: Giải hệ phương trình:
uses crt;
var a1, b1, c1, a2, b2, c2:integer;
d, dx, dy:real;
begin
clrscr;
writeln('nhap cac he so a1,b1,c1:');
readln(a1,b1,c1);
writeln('nhap cac he so a2,b2,c2:');
readln(a2,b2,c2);
d:=a1*b2-a2*b1;
dx:=c1*b2-c2*b1;
dy:=a1*c2-a2*c1;
if (d=0) and ((dx0) or (dy0)) then writeln('HPT vo ng')
else
if (d=0) and (dx=0) and (dy=0) then writeln('HPT co vo so ng')
else
begin
writeln('HPT co ng:');
writeln('x=',dx/d:3:2,'y=',dy/d:3:2);
end;
readln;
end.
Bài 4: Nhập vào số nguyên. Kiểm tra:
+ N chia hết cho 3 không?
+ N bao nhiêu chữ số?
+ Tổng các chữ số của N?
+ Số đảo ngược của N?
uses crt;
var n,m,t:word;
s,s1:string;
i:byte;
begin
clrscr;
write(' N=');readln(n);
if n mod 3=0 then writeln(n,' chia het cho 3')
else writeln(n,' khong chia het cho 3');
m:=n; i:=0; t:=0;
while m>0 do
begin
i:=i+1;
t:=t+m mod 10;
m:=m div 10;
end;
writeln('so cac chu so cua ',n,':',i);
writeln('tong cac chu so cua ',n,':',t);
str(n,s);
for i:=length(s) downto 1 do s1:=s1+s[i];
writeln(' so dao nguoc cua ',n,':',s1);
readln;
end.
Bài 5: tính tổng của N nghìn VND từ 3 loại tiền: 1000 VND, 2000 VND, 5000 VND. Lập trình ra tất cả các phương án.
uses crt;
var i,j,k,n,d: integer;
begin
clrscr;
write('so tien (don vi la nghin VND): ');
readln(n);
d:=0;
for i:=1 to n do
for j:=1 to n div 2 do
for k:=0 to n div 5 do
if n=i+j*2+k*5 then
begin
d:=d+1;
writeln('phuong an thu ',d,' :');
write(n,'000 VND = ',i,'*1000 + ',j,'*2000 +',k,'*5000');
writeln;
end;
readln;
end.
Bài 6: Tính giá trị của đa thức f(x) = anxn+ an-1xn-1+ a1x1+a0
var x,n,i:integer;
f:real;
a:array [0..100] of integer;
begin
write('x=');readln(x);
write('n=');readln(n);
writeln('nhap cac he so:');
for i:=0 to n do
begin
write('A[',i,']=');readln(a[i]);
end;
f:=a[n];
for i:=n downto 1 do
f:=f*x +a[i-1];
f:=f+a[0];
writeln('KQ: ',f:7:2);
readln;
end.
Bài tập về mảng
Bài 1: Thực hiện các phép tính cộng, trừ, nhân 2 ma trận vuông.
(Chú ý: cộng và trừ chỉ thực hiện được với 2 ma trận cùng cỡ n x m. Nhân 2 ma trận thực hiện với 2 ma trận có dang: Anxm x Bmxl)
uses crt;
var a,b,c,d: array[1..10,1..10] of integer;
m,n,l,i,j,k:byte;
begin
clrscr;
write('n=');readln(n);
for i:=1 to n do
for j:=1 to n do
begin
write('A[',i,',',j,']=');
readln(a[i,j]);
end;
for i:=1 to n do
for j:=1 to n do
begin
write('B[',i,',',j,']=');
readln(b[i,j]);
end;
for i:=1 to n do
for j:=1 to n do
begin
c[i,j]:=a[i,j]+b[i,j];
d[i,j]:=a[i,j]-b[i,j];
end;
writeln('ma tran tong:');
for i:=1 to n do
begin
for j:=1 to n do write(c[i,j]:5);
writeln;writeln;
end;
writeln('ma tran hieu:');
for i:=1 to n do
begin
for j:=1 to n do write(d[i,j]:5);
writeln;writeln;
end;
for i:=1 to n do
for k:=1 to n do
begin
c[i,k]:=0;
for j:=1 to n do c[i,k]:=c[i,k]+a[i,j]*b[j,k];
end;
writeln('ma tran tich:');
for i:=1 to n do
begin
for j:=1 to n do write(c[i,j]:6);
writeln;writeln;
end;
readln;
end.
Bài 2: Nhập mảng 2 chiều cấp nxn.
+ Kiểm tra xem mảng có đối xứng qua đường chéo chính không.
+ Đưa ra phần tử lớn nhất, nhỏ nhất của mảng.
+ Có số nào là ước của mọi số không? Có số nào là bội của mọi số không?
uses crt;
var a: array[1..10,1..10] of integer;
n,i,j,max,min:byte;
kt:boolean;
begin
clrscr;
write('n=');readln(n);
for i:=1 to n do
for j:=1 to n do
begin
write('A[',i,',',j,']=');
readln(a[i,j]);
end;
for i:=1 to n do
begin
for j:= 1 to n do write(a[i,j]:5);
writeln;
end;
kt:=true; i:=1; j:=1;
while (i<=n) and (j<=n) and (kt=true) do
begin
if a[i,j]a[j,i] then kt:=false;
i:=i+1;
j:=j+1;
end;
if kt=true then writeln('MT doi xung qua duong cheo chinh')
else writeln('Mt ko doi xung qua duong cheo chinh');
max:=a[1,1]; min:=a[1,1];
for i:=1 to n do
for j:=1 to n do
begin
if a[i,j]>max then max:=a[i,j];
if a[i,j]<min then min:=a[i,j];
end;
writeln('GTLN cua mang:', max,' GTNN cua mang:',min);
kt:=true;
for i:=1 to n do
if a[i] mod min 0 then kt:=false;
if kt=true then writeln(a[i],'la uoc cua moi so')
else writeln('ko co so nao la uoc cua moi so');
kt:=true;
for i:=1 to n do
if max mod a[i] 0 then kt:=false;
if kt=true then write(max,'la boi cua moi so')
else writeln('ko co so nao la boi cua moi so');
readln;
end.
Bài 3: Nhập ma trận vuông nxn.
+ Tính tổng các phần tử ở dòng 2 và cột 2.
+ Tính tổng các phần tử trên đường chéo chính và đường chéo phụ.
uses crt;
var a: array[1..10,1..10] of integer;
n,i,j,t1,t2:byte;
begin
clrscr;
write('n=');readln(n);
for i:=1 to n do
for j:=1 to n do
begin
write('A[',i,',',j,']=');
readln(a[i,j]);
end;
for i:=1 to n do
begin
for j:=1 to n do write(a[i,j]:5);
writeln; writeln;
end;
t1:=0;
for i:=1 to n do t1:=t1+a[2,i]+a[i,2];
t1:=t1-a[2,2];
writeln('tong cac phan tu o dong 2 cot 2: ',t1);
t2:=0;
for i:=1 to n do t2:= t2 + a[i,i] + a[i,n-i+1];
if n mod 2 0 then t2:=t2-a[(n div 2)+1,(n div 2)+1];
writeln('tong cac phan tu tren duong cheo chinh va duong cheo phu: ',t2);
readln;
end.
Bài 4: Nhập vào dãy số nguyên. Sắp xếp lại thành dãy không giảm.
uses crt;
type mt=array[1..100] of integer;
var a:mt;
n,i,j,t,cv:byte;
procedure hoan_vi(var x,y:integer);
var tg:integer;
begin
tg:=x;
x:=y;
y:=tg;
end;
procedure nhap_day(var a:mt;n:integer);
begin
for i:=1 to n do
begin
write('A[',i,']=');readln(a[i]);
end;
end;
procedure in_day(var a:mt;n:integer);
begin
writeln;
for i:=1 to n do write(a[i]:7);
end;
procedure sx_lua_chon(var a:mt;n:integer);
var m:integer;
begin
for i:=1 to n do
begin
m:=1;
for j:=1 to i+1 do
if a[j]>a[m] then m:=j;
if mi then hoan_vi(a[i],a[m]);
end;
end;
procedure sx_chen(var a:mt;n:integer);
var x:integer;
begin
for i:=2 to n do
begin
x:=a[i];
j:=i-1;
while x<a[j] do
begin
a[j+1]:=a[j];
j:=j-1;
end;
a[j+1]:=x;
end;
end;
procedure sx_trao_doi(var a:mt;n:integer);
begin
for i:=n downto 2 do
for j:=1 to i-1 do
if a[j]>a[j+1] then hoan_vi(a[j],a[j+1]);
end;
begin
clrscr;
write('n=');readln(n);
nhap_day(a,n);
writeln;
writeln('day ban dau:');
in_day(a,n);
writeln('ban chon kieu sap xep nao:');
writeln('1. sap xep lua chon');
writeln('2. sap xep chen');
writeln('3. sap xep trao doi');
writeln('4. thoat');
write('chon: ');readln(cv);
case cv of
1: sx_lua_chon(a,n);
2: sx_chen(a,n);
3: sx_trao_doi(a,n);
4: exit;
end;
writeln('day sau khi sap xep:');
in_day(a,n);
readln;
end.
Bài 5: Nhập vào dãy số nguyên, sắp xếp theo thứ tự không giảm, đọc thêm 1 số từ bàn phím và chèn vào dãy sao cho thứ tự không đổi.
uses crt;
var a:array[1..100] of integer;
i,j,tg,m,n:integer;
begin
clrscr;
write('n=');readln(n);
for i:=1 to n do
begin
write('A[',i,']=');readln(a[i]);
end;
writeln('day ban dau:');
for i:=1 to n do write(a[i]:7); writeln;
for i:=n downto 2 do
for j:=1 to i-1 do
if a[j]>a[j+1] then
begin
tg:=a[j];
a[j]:=a[j+1];
a[j+1]:=tg;
end;
writeln('day sau khi sap xep:');
for i:=1 to n do write(a[i]:7); writeln;
write('chen vao so:');readln(m);
i:=1;
while (m>a[i]) and (i<n) do i:=i+1;
writeln('vi tri chen: ',i);
if i>n then a[i]:=m
else
begin
for j:=n downto i do a[j+1]:=a[j];
a[i]:=m;
end;
writeln('day sau khi chen:');
for i:=1 to n+1 do write(a[i]:6);
readln;
end.
Bài 6: Nhập vào dãy số nguyên, đưa ra những phần tử trong dãy là số đẹp. (Tương tự với số chẵn, số lẻ, số nguyên tố, số chính phương, số hoàn hảo. Tương tự với ma trận)
uses crt;
var a:array[1..100] of integer;
n,i:integer;
function sd(var x:integer):boolean;
var s:string; kt:boolean;
begin
str(x,s);
kt:=true;
for i:=1 to length(s)-1 do
if s[i]>s[i+1] then kt:=false;
sd:=kt;
end;
begin
clrscr;
write('n=');readln(n);
for i:=1 to n do
begin
write('A[',i,']=');readln(a[i]);
end;
writeln('nhung so hoan hao trong day:');
for i:=1 to n do
if sd(a[i])=true then writeln(a[i],' la so hoan hao');
readln;
end.
Bài 7: Phần tử của ma trận được gọi là phần tử yên ngựa nếu như nó là bé nhất hàng và lớn nhất cột, hoặc nó là lớn nhất hàng và bé nhất cột.
Nhập vào 1 ma trận và cho biết có bao nhiêu phàn tử là phần tử yên ngựa, ơe vị trí nào?
uses crt;
var a: array[1..10,1..10] of integer;
d,n,m,i,j:byte;
maxd,maxc,mind,minc:array[1..10] of integer;
begin
clrscr;
write('n=');readln(n);
write('m=');readln(m);
for i:=1 to n do
for j:=1 to m do
begin
write('A[',i,',',j,']=');
readln(a[i,j]);
end;
for i:=1 to n do
begin
for j:=1 to m do write(a[i,j]:7);
writeln; writeln;
end;
for i:=1 to n do
begin {lon nhat tren dong}
maxd[i]:=a[i,1];
for j:=2 to m do
if maxd[i]<a[i,j] then maxd[i]:=a[i,j];
end;
for i:=1 to n do write(maxd[i]:6); writeln;
for i:=1 to n do
begin {nho nhat tren dong}
mind[i]:=a[i,1];
for j:=2 to m do
if mind[i]>a[i,j] then mind[i]:=a[i,j];
end;
for i:=1 to n do write(mind[i]:6); writeln;
for j:=1 to m do
begin {lon nhat tren cot}
maxc[j]:=a[1,j];
for i:=2 to n do
if maxc[j]<a[i,j] then maxc[j]:=a[i,j];
end;
for j:=1 to m do write(maxc[j]:6);writeln;
for j:=1 to m do
begin {nho nhat tren cot}
minc[j]:=a[1,j];
for i:=2 to n do
if minc[j]>a[i,j] then minc[j]:=a[i,j];
end;
for j:=1 to m do write(minc[j]:6); writeln;
d:=0;
for i:=1 to n do
for j:=1 to m do
if ((a[i,j]=maxd[i]) and (a[i,j]=minc[j])) or
((a[i,j]=mind[i]) and (a[i,j]=maxc[j])) then
begin
d:=d+1;
writeln(a[i,j],' o dong ',i,' cot ',j,' la PT yen ngua');
end;
if d=0 then write('ko co PT yen ngua nao')
else write('co ',d,' PT yen ngua');
readln;
end.
Bài 8: Hai số được gọi là sinh đôi nếu nó là các số nguyên tố và có hiệu bằng 2. Nhập dãy số nguyên và cho biết cso bao nhiêu cặp số sinh đôi.
uses crt;
var a:array[1..20] of byte;
i,j,n,d:byte;
function nt(var x:byte):boolean;
var k,m:byte; kt:boolean;
begin
kt:=false;
k:=2;
m:=trunc(sqrt(x));
while (k0) do k:=k+1;
if (x>1) and (k>m) then kt:=true;
nt:=kt;
end;
begin
clrscr;
write('n=');readln(n);
for i:=1 to n do
begin
write('A[',i,']=');readln(a[i]);
end;
for i:=1 to n do write(a[i]:7);
writeln;
for i:=1 to n do
d:=0;
for i:=1 to n-1 do
for j:=i+1 to n do
if ((nt(a[i])=true) and (nt(a[j])=true)) and (abs(a[i]-a[j])=2) then
begin
writeln(a[i],' va ',a[j],' la 2 so sinh doi');
d:=d+1;
end;
if d=0 then write('ko co cap so sinh doi nao')
else write('co ',d,' cap so sinh doi');
readln;
end.
Bài 8: Viết hàm tính ƯCLN(a,b). Nhập vào ma trận A, đưa ra dãy B có các phần tử là ƯCLN của từng dòng. (tương tự từng cột)
uses crt;
var a:array [1..10,1..10] of longint;
b:array [1..10] of longint;
i,j,m,n,d,k:longint;
function ucln(var x,y:longint):longint;
begin
while xy do
if x>y then x:=x-y else y:=y-x;
ucln:=x;
end;
begin
clrscr;
write('n=');readln(n);
write('m=');readln(m);
for i:=1 to n do
for j:=1 to m do
begin
write('A[',i,',',j,']=');
readln(a[i,j]);
end;
for i:=1 to n do
begin
for j:=1 to m do write(a[i,j]:6);
writeln;writeln;
end;
for i:=1 to n do
begin
d:=ucln(a[i,1],a[i,2]);
for j:=3 to m do d:=ucln(d,a[i,j]);
writeln('ucln cua dong ',i,' la ',d);
b[i]:=d;
end;
writeln('day ucln cua tung dong:');
for i:=1 to n do write(b[i]:7);
readln;
end.
Bài 9: Nhập vào ma trận A cỡ nxm. In ra dãy B có các phần tử là tổng của từng cột. (tương tự với dãy B là tổng các phần tử trên từng hàng)
Bài 10: Nhập vào dãy rồi cho biết có bao nhiêu số chỉ xuất hiện một lần, là những số nào. T51-55.
Bài tập về xâu kí tự
Bài tập về file
Bài tập kết hợp
Tài liệu đính kèm: