495被称为黑洞数或者陷阱数
即:给定任何一个小于1000的正整数,经前位补00后可以得到一个三位数(两位数前面补11个00,一位数前面补22个00)。如果这个三位数的三个数字不全相等,那么经有限次“重排求差”操作(组成该数的数字重排后的最大数减去重排后的最小数),总会得到495。
这里通过for循环和选择结构的嵌套得到黑洞数:495
#include<stdio.h>
int main()
{
int n;
int a,b,c,max,min,num,trem;
int max1,mid1,min1;
scanf("%d",&n);
for(num=1;n!=495;num++)
{
if(n>=100)//三位数
{
/*通过各数位比较得到三个数大小以便进行重排*/
a=n/100;//分离
b=n/10%10;
c=n%10;
if(a<b)
{
trem=a;
a=b;
b=trem;
}
if(a<c)
{
trem=a;
a=c;
c=trem;
}
if(b<c)
{
trem=b;
b=c;
c=trem;
}
max1=a;mid1=b;min1=c;
max=max1*100+mid1*10+min1;
min=min1*100+mid1*10+max1;
}
else if(n<10)一位数
{
max=n*100;
min=n;
}
else//两位数
{
a=n/10;b=n%10;
if(a>b)
{
max=a*100+b*10;
min=b*10+a;
}
else
{
max=b*100+a*10;
min=a*10+b;
}
}
n=max-min;
printf("%d:%d-%d=%d",num,max,min,n);
if(n==495)break;
}
return 0;
}
运行结果:
如有不妥请指正。