给定任何一个小于1000的正整数,经前位补00后可以得到一个三位数(两位数前面补11个00,一位数前面补22个00)。如果这个三位数的三个数字不全相等,那么经有限次“重排求差”操作(组成该数的数字重排后的最大数减去重排后的最小数),总会得到495。 这里通过while循环和选择结构的得到黑洞数:495 分析题目意 输入一个数number后先判断是一位就先乘以100或乘以10后再定义one,ten,hundred; 分别将number的个,十,百。再用三个if找出最大值给hundred,第二大给ten,第三大one, 先定义max=hundred*100+ten*10+one,min=one*100+ten*10+hundred下一次number=max-min; #include void main() {int number; int max,min; int i=0; int one,ten,hundred; scanf("%d",&number); if(number>0&&number<1000) while(number!=495) { if(number/10==0) number*=100; else if(number/100==0) number*=10; one=number%10; ten=number/10%10; hundred=number/100; if(one>hundred) {one+=hundred; hundred=one-hundred; one-=hundred; } if(ten>hundred) {ten+=hundred; hundred=ten-hundred; ten-=hundred; } if(one>ten) {one+=ten; ten=one-ten; one-=ten; } max=hundred*100+ten*10+one; min=one*100+ten*10+hundred; number=max-min; printf("%d:%d-%d=%d\n",++i,max,min,number); } else printf("你输入不在范围中"); }