Professional Documents
Culture Documents
Program Ktra_sngto;
Var n: word;
Funtion Ngto(k:word): Boolean;
Var i,dem:Word;
begin
dem:=0;
Ngto:=false;
for i:=2 to n do if n mod i = 0 them
dem:=dem+1;
if dem = 2 then Ngto:= true;
end;
BEGIN
Writeln('Nhap n '); readln(n);
while n <2 do
begin
writeln('nhap lai');
readln(n);
end;
if Ngto(n) then writeln(' So nguyen to')
else
writeln('Khong la so nguyen to;
End.
Bài 3:
Var n:longint;
{------------------------------}
Function ngto(n:longint):boolean;
Var i:word;
Begin
ngto:=false;
for i:=2 to trunc(sqrt(n)) do
if n mod i=0 then exit;
ngto:=true;
end;
{------------------------------}
BEGIN
write('nhap n: ');
readln(n);
for i:=2 to n do
if ngto(i) then write(i,' ');
Readln;
END.
Bài 9 : Nhập 3 số bất kì kiểm tra xem nó có phải là 3 cạnh của tam giác ko
uses crt;
var
a,b,c,p,s: real;
Begin
clrscr; {Xóa màn hình}
write ('Nhap a:= ');readln (a);
write ('Nhap b:= ');readln (b);
write ('Nhap c:= ');readln (c);
if (a>0) and (b>0) and (c>0) and (a+b>c) and (b+c>a) and (a+c>b) then
begin
write ('3 cạnh tren tao thanh 1 tam giac');
if (a=b) and (b=c) then
write ('Day la tam giac deu');
if (a=b) or (b=c) or (a=c) then
weite ('Day la tam giac can');
p:= (a+b+c)/2;
s:= SQRT(p*(p-a)*(p-b)*(p-c));
write ('chu vi: ',2*p:0:5,' Dien tich: ',s:0:5);
end
else
write ('3 so nay khong tao thanh 1 tam giac');
readln;
End.
Bài 10: đếm số chữ số tạo thành 1 số nguyên
Var
m, n, dem : longint;
Begin
Write (;nhap n:’); readln(n);
Dem:= 0;
m:= n;
Repeat
n:= n div 10;
inc (dem);
Until n=0;
Writeln(‘n,’co tat ca la’,dem,’chu so’);
Readln;
End.
Bài 11 : Thông báo ra màn hình các sô k<=n bằng tổng các ước số của nó và nhỏ hơn nó.
Var
n, I, j, s : integer;
Begin
Write(‘nhap n’); readln(n);
Repeat
For I = 1 to n do
Begin
S:= 0;
For j :=1 to I div 2 do
If I mod j = 0 then s := s + j;
If s := I then write (i:j,’ ‘);
End;
Until n <= 1000 ;
Readln;
End.
Bài 18. Lập trình tìm các số có ba chữ số với điều kiện giá trị của số đó bằng tổng lập phương các
chữ số của nó.
uses crt;
Var
a,b,c,i:integer;
Begin
clrscr;
For i:=100 to 999 do
begin
a:=i div 100;
b:=(i div 10) mod 10;
c:=i mod 10;
if a*a*a+b*b*b+c*c*c=i then
begin
Writeln('So ',i,' co gia tri bang tong lap phuong cac chu so cua no.');
end;
end;
Readln;
End.
Bài 19. Tính tổng sau (với x thực nhập từ bàn phím):
x 2 n +1
Chương trình dừng khi ( −1) n . <0,0001
( 2n +1)
uses crt;
Var
i:integer;
a,b,c,x,t:real;
Procedure tinh;
begin
a:=x;b:=0;t:=x;c:=1;
While abs(c*a/(2*b+1))>=0.0001 do
begin
a:=a*x;b:=b+1;c:=c*-1;
t:=t+c*a/(2*b+1);
end;
end;
Begin
clrscr;
Write('Ban hay nhap so x:');Readln(x);
tinh;
Writeln('Ket qua la:',t:0:10);
Readln;
End.
Bài 20: Nhập vào một số tự nhiên n.Lập trình trả lời các câu hỏisau:
- n có bao nhiêu chữ số?
- Tổng các chữ số của n bằng bao nhiêu?
- Tìm chữ số đầu tiên của n.
- Giả sử trong cách biểu diễn thập phân của n có dạng sau:
akak - 1 .....a 2 a 1 a 0 .
Hãy tính tổng S = ak - ak - 1 + ak - 2 - .... + (-1) k + 1 .a 0
- Nhập vào số m (m ≤ số chữ số của n). Hãy tính tổng m chữ số cuối
cùng của n.
uses crt;
var
i,k,m,n:longint;
s:string;
Begin
clrscr;
Repeat
Write('Ban hay nhap so thu nhien n:');Readln(n);
if n<0 then Writeln('n phai la so tu nhien.');
Until n>=0;
Str(n,s);
Writeln('So ',n,' co ',length(s),' chu so.');
k:=0;m:=0;
For i:=1 to length(s) do
begin
k:=k+(ord(s[i])-48);
if i mod 2=1 then m:=m+(ord(s[i])-48)
else m:=m-(ord(s[i])-48);
end;
Writeln('Tong cac chu so cua ',n,' la:',k,'.');
Writeln('Chu so dau tien cua ',n,' la:',s[1],'.');
Bài 21.Với giá trị x nhập từ bàn phím, hãy tính tổng sau:
( x −1) ( x −1) 3 ( x −1) 5 ( x −1) 2 n +1
+ + + ... + + ...
( x +1) 3. ( x +1) 3 5. ( x +1) 5 ( 2n +1) . ( x +1) 2 n +1
uses crt;
var i:integer;
a,b,x,t: real;
Procedure tinh;
begin
i:=1;
a:=x-1;b:=x+1;t:=a/(i*b);
While a/(i*b)>=0.0001 do
begin
i:=i+2;
a:=a*(x-1)*(x-1);
b:=b*(x+1)*(x+1);
t:=t+a/(i*b);
end;
end;
Begin
clrscr;
Write('Ban hay nhap so x:');Readln(x);
if x<>-1 then
begin
if x=1 then Writeln('Ket qua la:0')
else
begin
tinh;
Writeln('Ket qua la:',t:0:10);
end;
end
else
Writeln('Cac phan tu co mau la 0 nen the chia duoc.');
Readln;
End.
Bài 5:
program BT;
const NMax = 50;
type Mass = array[1...NMax, 0...NMax-1] of real;
var A: Mass;
i, j, N:byte; C: real;
Begin
write ('Nhap N=');readln(N);
for i:= 1 to N do
for j:= 0 to N-1 do
begin
write('A[',i,',',j,']= '); readln(A[i,j]);
end;
{Đoạn trên này để nhập vào 1 ma trận}
for i:= 1 to N do
for j:= 0 to N-1 do
begin
C:= A[i,j];
A[i,j]:= A[N-i+1,j];
A[N-j+1,j]:= C;
end;
{Đoạn này để đổi vị trí các hàng của ma trận theo kiểu hàng đầu đổi cho hàng cuối, hàng thứ 2
đổi cho hàng kế cuối}
for i:= 1 to N do
begin
for j:= 0 to N-1 do write (A[i,j]:5:2,' ');
writeln;
end;
{Còn đoạn cuối này thì để in ma trận đã được đổi vị trí các hàng ra màn hình}
readln;
end.
Bảng 2: 15 55 9
3 4 1
7 6 2
Thì phần tử A2 2 = 4 là phần tử yên ngựa.
Hãy lập chương trình nhập từ bàn phím một bảng số kích thước m x n và in ra các phần tử yên ngựa
( nếu có ).
uses crt;
Program ChuoiChuan;
Var s : String;
i : Byte;
Begin
Writeln('Nhap s: '); Readln(s);
{ Thêm khoảng trắng cầm canh đầu và cuối }
s := ' ' + s + ' ';
i := Pos(' ', s);
While (i > 0) do
Begin
Delete(s, i, 1);
i := Pos(' ', s);
End;
Delete(s, 1, 1); { Xóa cầm canh đầu }
Delete(s, Length(s), 1); {Xóa cầm canh cuối }
Writeln('Chuoi da chuan hoa: ', s);
End.
Bài 6
program tim_kiem;
uses crt;
Var
s1,s2:string;
k,i,j:integer;
Begin
write('nhap s1:'); read(s1);
write(nhap s2:'); read(s2)
for i:=1 to length(s1) do
i:=i+1;
begin
for j:=1 to length(s2) do
j:=j+1;
if k:=i:=j do
write('so lan xuat hien s1 trong s2 la:',k);
end;
readln;
End.
Bài 8 :
uses crt;
const m=...; {tuy loai man hinh ma cho do dai vao}
var s,s1:string;
i,d,dem,l:integer;
BEGIN
clrscr;
write('Nhap xau: '); readln(s);
clrscr;
l:=length(s);
for i:=1 to m-l do s:=s+' ';
dem:=0;
repeat
if dem=0 then d:=1;
if dem=m-l then d:=-1;
write(s);
delay(200);
clrscr;
if d=1 then s1:=s[m]+copy(s,1,m-1)
else
s1:=copy(s,2,m-1)+s[1];
s:=s1;
dem:=dem+d;
until keypressed;
readln;
END.
Bài 9 :
uses crt;
var s:string;
i,k,max,a,h:integer;
begin
clrscr;
write('Nhap xau s: ');readln(s);
while s[1]=#32 do delete(S,1,1);
while s[length(S)]=#32 do delete(s,length(s),1);
while pos(#32#32,s)>0 do delete(s,pos(#32#32,s),1);
s:=s+#32;
a:=1;
max:=1;
for i:=1 to length(S) do
begin
if s[i]=#32 then
begin
if i-a>max then
begin
max:=i-a;
h:=a;
k:=i-1;
end;
a:=i+1;
end;
end;
for i:=h to k do write(s[i]);
Bài 10 : Cho 1 biểu thức ngoặc chưa hoàn chỉnh. Hãy thực hiên các bước thêm các dâu ngoặc "(" hoặc ")"
để được 1 biểu thức ngoặc đúng sao cho số bước là ít nhất.
program ngoac;
Var s,p : string; i : byte; sm : byte;
Begin
write('Input string: '); readln(s);
p:=''; sm:=0;
for i:= 1 to length(s) do
if s[i]='(' then
begin
inc(sm);
p:=p+s[i];
end
else
if s[i]=')' then
if sm = 0 then p:=p+'()'
else
begin
dec(sm);
p:=p+s[i];
end
else p:=p+s[i];
for i:= 1 to sm do p:=p+')';
writeln('Result: ',p);
readln;
End.
Bài 11. Xâu nghịch đảo
Hãy sử dụng kỹ thuật đệ quy trong lập trình để tìm xâu nghịch đảo của một xâu nhị phân cho trước (xâu
nhị phân là xâu chỉ gồm hai kí tự ‘0’ và ‘1’).
var i,k:integer;
s:string;
Procedure dao(i:integer);
begin
if i<=length(s) then
begin
if s[i]='0' then s[i]:='1'
else s[i]:='0';
dao(i+1);
end;
end;
Begin
clrscr;
Repeat
Write('Ban hay nhap 1 xau nhi phan:');Readln(s);
k:=0;
For i:=1 to length(s) do
if not (s[i] in ['0','1']) then
begin
k:=1;Break;
end;
Until k=0;
dao(1);
Writeln('Xau nghich dao:',s);
ROOMS.INP ROOMS.OUT
7 3 2
3 1
1 1
4 2
2
0
0
Program room;
var
a,b:array [1..1000] of integer;
i,k,m,n,p,q:integer;
f:Text;
Procedure doc;
begin
Assign(f,'room.inp');
Reset(f);
Readln(f,n,m);
For i:=1 to m do
Readln(f,a[i]);
Close(f);
end;
Procedure tinh;
Procedure sua;
Cho một lưới K x N điểm gồm K dòng và N cột ( 2 ≤ K, N ≤ 9 ) là các điểm nút của một lưới ô
vuông ( các dòng được đánh số từ trên xuống dưới, các cột được đánh số từ trái qua phải bắt đầu từ 1 ).
Trên lưới điểm đó cho một số đoạn thẳng, mỗi đoạn nối một cặp điểm cạnh nhau trên cùng một dòng
( đoạn ngang ) hoặc trên cùng một cột ( đoạn dọc ). Cần phải đếm số các hình vuông với kích thước nhất
định được tạo thành bởi các đoạn thẳng đã cho của lưới nêu trên. Chẳng hạn ở hình 1 dưới đây có 3 hình
vuông; 2 hình kích thước 1 và 1 hình kích thước 2 ( kích thước của hình vuông là số các đoạn thẳng tạo
thành 1 cạnh của hình vuông ).
Hình 1
Yêu cầu: Hãy xác định số lượng các loại hình vuông và số hình vuông mỗi loại trong lưới điểm đã
cho ( hình vuông có cùng kích thước được xếp vào cùng một loại ).
Dữ liệu: Vào từ file văn bản SQUARE.INP có khuôn dạng như sau:
• Dòng 1 chứa số nguyên N là số cột của lưới.
• Dòng 2 chứa số nguyên M là số các đoạn thẳng được cho trên lưới.
• Mỗi dòng trong M dòng tiếp theo có 1 trong 2 dạng sau:
H i j chỉ một đoạn ngang trên dòng thứ i nối hai điểm ở cột j và cột j+1.
Hoặc: V j i chỉ một đoạn dọc trên cột thứ j nối hai điểm ở dòng i
và dòng i +1.
Số liệu được ghi từ vị trí đầu tiên của mỗi dòng, giữa ký tự và số và giữa hai số liên tiếp trên một
dòng có đúng một dấu cách.
Close(f);
Begin
clrscr;
Assign(f,'sothuc.inp');
Assign(f2,'sothuc.out');
Reset(f);
Rewrite(f2);
While not eof(f) do
begin
Readln(f,s);
if pos('*',s)<>0 then break;
Writeln(f2,kt(s));
end;
Close(f);
Close(f2);
End.
Bài 15. Chuỗi đối xứng
Mỗi chuỗi kí tự được gọi là đối xứng nếu nó có không ít hơn 1 kí tự và nếu ta đọc từ phải sang trái
hay từ trái sang phải đều giống nhau. Ví dụ ' Z ' , ' TOT ' , ' NAN ' là các chuỗi đối xứng còn ' NAM '
không phải.Yêu cầu:
Viết chương trình nhận vào chuỗi kí tự cho trước S và hãy cho biết có bao nhiêu chuỗi con khác
nhau của S là chuỗi đối xứng. Chuỗi con của S là chuỗi gồm một số kí tự nằm liên tiếp nhau trong S.
Dữ liệu vào cho trong tập tin văn bản CHUOI.INP gồm nhiều dòng, mỗi dòng là một chuỗi kí tự
cần xem xét(các chuỗi có độ dài không quá 80 kí tự ).
Kết quả ghi trong tập tin văn bản CHUOI.OUT có số dòng bằng với số dòng của CHUOI.INP. Mỗi
dòng chứa một số nguyên là con số cho biết số chuỗi con đối xứng của chuỗi ở dòng tương ứng trong
CHUOI.INP.Ví dụ:
Dữ liệu vào: Dữ liệu ra:
BEGIN
Dulieu;
assign(f,fo);
rewrite(f);
fillchar(cx,sizeof(cx),true);
Try(K,1);
close(f);
END.
1 số bài pascal...