495是黑洞数:
题目为
给定任何一个小于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<stdio.h>
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("你输入不在范围中");
}
运行结果为
以上编程有不足,请指教一下,用发财双手给我点点赞赞对努力编程最大支持啊!谢谢大家观看!