两道pascal数组题

来源:百度知道 编辑:UC知道 时间:2024/05/25 06:38:53
1.输入一个不超过10位的正整数,将它的各位数字重新排列,构成位数与原数相同的最整大数和最整小数。
2.跟上题一样,输入一个不超过10位的正整数,将它的各位数字重新排列,构成位数与原数相同的最整大数和最整小数。但要将两者的差做同样的处理,如此重复,最终必将是6174。
(我要的是程序,给思路的就不要白费唇舌了)
写错了,那个是“最大整数”和“最小整数”

题1
var st:string;
a:array[1..10] of char;
j,i,l,k:integer;
ch:char;
begin
readln(st);
l:=length(st);
for i:=1 to l do
a[i]:=st[i];
k:=l;
for i:=1 to l-1 do begin
for j:=1 to k-1 do
if a[j]>a[j+1] then begin
ch:=a[j];
a[j]:=a[j+1];
a[j+1]:=ch;
end;
k:=k-1;
end;
for i:=1 to l do write(a[i]);writeln;
for i:=l downto 1 do write(a[i]);writeln;
end.
题2 有问题 原始数只能为4位数 且4数不能重复
改后程序如下
var z,t,n,i,j,s:integer;
x:string;
a,b:array[1..4]of integer;
begin
readln(n);
str(n,x);
for i:=1 to 4 do
a[i]:=ord(x[i])-48;
s:=0;
repeat
for i:=1 to 4 do
for j:=1 to 3 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 4 do
b[i]:=a[5-i];
for i:=1 to 4 do
a[i]:=a[i]-b[i];
for i:=4 downto 1 do
if a[i]&