几道 pascal 题目 想了好长时间!!!都没想出来

[复制链接]
查看11 | 回复2 | 2011-4-24 13:16:12 | 显示全部楼层 |阅读模式
任意写一个数字不全一样的四位数N,先把这个四位数的各位数字从大到小的顺序组成一个新的四位数,然后减去这些数字由小到大组成的四位数得到差,再把差按上面的方法处理,经有限次运算,最后结果总是6174,编程验证四位数N要经过几次这样的运算才能得到这样的数。如输入1234 ,6步后得到6174
输入样例
1234
输出
6
还有一道题
输入N个数后,对这些书进行降序排列。其重复出现的数不输出(只保留一个) 如
输入:第一行N,代表有N个数

第二行是N个数,每两数间用一个空格隔开;
输入:10

8 9 6 7 5 6 2 3 4 3
输出:9 8 7 64 3 2
我写的是:
var
a,b:array[1..10000] of integer;
n,i,j,k,t,r:integer;
begin
readln(n);
for i:=1 to n do
read(a);
for i:=1 to n-1 do
begin
k:=i;
for j:=i+1 to n do
if a[j]k then
begin

t:=a;

a:=a[k];

a[k]:=t;
end;
end;
for i:=n downto 1do
if aa[i+1] then write(a,' ');
end.
小一点的数可以,但大一点的数就乱了,为什么?

回复

使用道具 举报

千问 | 2011-4-24 13:16:12 | 显示全部楼层
先说第一个题:代码如下:program js1;var s,o,p,s1:string;
c:char;
t,k,m,n,i,j,ans:longint;beginreadln(s1);repeatj:=0;s:=s1;o:=s;p:='';s1:='';
{每次循环初始化,j记录数字0的个数,s是要处理的数,o存最小值,p存最大值,s1存差值}for t:=1 to length(s) do
if s[t]='0' then inc(j);for t:=1 to length(s)-1 do
for k:=1 to lengt
回复

使用道具 举报

千问 | 2011-4-24 13:16:12 | 显示全部楼层
longint 就好了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行