消息关闭
    暂无新消息!
不知道为什么,我这个循环一直在继续无法终止。请大家帮我看一下。
#include<stdio.h>
int main()
{
int n;
scanf("%d",&n);
int min,max;
int sortmax(int);
int sortmin(int);
min=sortmin(n);
max=sortmax(n);
printf("%d\n",max);
printf("%d\n",min);
while(1)
{
min=sortmin(n);
max=sortmax(n);
n=max-min;
printf("%d ",n);
if(n==6174) break;
}
return 0;
}

int sortmax(int n)
{
int a[5],i=0,j,temp;
for(i=0;i<4;i++)
{
a[i]=n%10;
n=n/10;
}
for(i=0;i<3;i++)
for(j=i+1;j<4;j++)
if(a[i]<a[j])
{
temp=a[i]; a[i]=a[j]; a[j]=temp;
}
int max=0;
for(i=0;i<4;i++)
{
max+=a[i];
max=max*10;
}
max=max/10;
while(max<=999)
{
max=max*10;
}
return max;
}

int sortmin(int n)
{
int a[5],i=0,j,temp;
for(i=0;i<4;i++)
{
a[i]=n%10;
n=n/10;
}
for(i=0;i<3;i++)
for(j=i+1;j<4;j++)
if(a[i]>a[j])
{
temp=a[i]; a[i]=a[j]; a[j]=temp;
}
int min=0;
for(i=0;i<4;i++)
{
min+=a[i];
min=min*10;
}
min=min/10;
while(min<=999)
{
min=min*10;
}
return min;
}

2个回答

︿ 0
这是卡布列克常数,我已经知道哪里出了问题。非常感谢你的回答。