输入一个任意的四位正整数(全相同的除外,如1111)。将数字重新组合成一个最大的数和最小的数相减,重复这个过程,最多七步,必得6174。
请用程序进行模拟运算证明,要有中间过程。
代码如下:
#include "stdio.h"
int main()
{
int num,i,j,k,max,min,sort[4]={0};
scanf("%d",&num);
for(i=0;i<7;i++)
{
sort[0]=num/1000;
sort[1]=(num-sort[0]*1000)/100;
sort[2]=(num-sort[0]*1000-sort[1]*100)/10;
sort[3]=num-sort[0]*1000-sort[1]*100-sort[2]*10;
for(j=0;j<3;j++)
for(k=i+1;k<4;k++)
if(sort[i] > sort[j])//升序
{
sort[i]^=sort[j];
sort[j]^=sort[i];
sort[i]^=sort[j];
}
max=sort[3]*1000+sort[2]*100+sort[1]*10+sort[0];
min=sort[0]*1000+sort[1]*100+sort[2]*10+sort[3];
printf("%d-%d=%d\n",max,min,max-min);
if(max-min == 6174)
break;
}
return 0;
}