题目描述:对于任意一个四位数,只要他们各位上的数字不完全相同,就有这样的规律:将每一位上的数字重新组成一个最大的数和最小的数,并求差。重复,总能得到6174.
思想:重点是分离每一位上的数字。将其分离保存在数组里,并排序。之后求出最大的和最小的。
#include <stdio.h>
#define N 4
void shuZu(int num,int *a)//分离每一位上的数字并排序
{
int i,j,t;
for(i=0;i<N;i++)
{
a[i]=num%10;
num=num/10;
}
for(i=0;i<N-1;i++)
{ for(j=0;j<N-1-i;j++)
if(a[j]>a[j+1])
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
}
int max(int *a)
{
int i,sum=0;
for(i=N-1;i>=0;i--)
sum=sum*10+a[i];
return sum;
}
int min(int *a)
{
int i,sum=0;
for(i=0;i<N;i++)
sum=sum*10+a[i];
retu