int IsNumberEqual(int number);
void ntos (int number, int c[]);
void sort (int a[]);
int getmaxn(int a[]);
int getminn(int b[]);
int main()
{
int num;
int s[4];
int i;
do
{
printf("Input:");
scanf("%d",&num);
}while(IsNumberEqual(num));
i=0;
while(num!=6174 & i<10000)
{
ntos(num,s);
sort(s);
num=getmaxn(s)-getminn(s);
i++;
}
printf("Total:%d\n",i);
//system("PAUSE");
return 0;
}
int IsNumberEqual(int number)
{
int s[4];
ntos(number,s);
if(s[0]==s[1] ||s[1]==s[2] ||s[2]==s[3] ||s[3]==s[0]) return 1;
return 0;
}
void ntos (int number, int c[])
{
c[0]=number/1000;
number%=1000;
c[1]=number/100;
number%=100;
c[2]=number/10;
number%=10;
c[3]=number;
}
void sort(int a[])
{
int i,j,temp;
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 getmaxn(int a[])
{
return a[3]*1000+a[2]*100+a[1]*10+a[0];
}
int getminn(int b[])
{
return b[0]*1000+b[1]*100+b[2]*10+b[3];
}
輸出叠代次數,超過10000次就結束(不過貌似不會發生)