[C] c语言 黑洞数 三位数 →→→→→进入此内容的聊天室

来自 Toxic Octupus, 2024-03-21, 写在 C, 查看 13 次.
URL http://www.code666.cn/view/e26ca29a
  1. 给定任何一个小于1000的正整数,经前位补00后可以得到一个三位数(两位数前面补1100,一位数前面补2200)。如果这个三位数的三个数字不全相等,那么经有限次“重排求差”操作(组成该数的数字重排后的最大数减去重排后的最小数),总会得到495
  2.  
  3. 这里通过while循环和选择结构的得到黑洞数:495
  4.  
  5. 分析题目意
  6.  
  7. 输入一个数number后先判断是一位就先乘以100或乘以10后再定义one,ten,hundred;
  8.  
  9. 分别将number的个,十,百。再用三个if找出最大值给hundred,第二大给ten,第三大one,
  10.  
  11. 先定义max=hundred*100+ten*10+one,min=one*100+ten*10+hundred下一次number=max-min;
  12.  
  13.  
  14.  
  15. #include<stdio.h>
  16. void main()
  17. {int number;
  18. int max,min;
  19. int i=0;
  20. int one,ten,hundred;
  21. scanf("%d",&number);
  22. if(number>0&&number<1000)
  23. while(number!=495)
  24. {
  25.         if(number/10==0)
  26.         number*=100;
  27.         else if(number/100==0)
  28.         number*=10;
  29.         one=number%10;
  30.         ten=number/10%10;
  31.         hundred=number/100;
  32.         if(one>hundred)
  33.         {one+=hundred;
  34.         hundred=one-hundred;
  35.         one-=hundred;
  36.          }
  37.         if(ten>hundred)
  38.         {ten+=hundred;
  39.         hundred=ten-hundred;
  40.         ten-=hundred;
  41.         }
  42.         if(one>ten)
  43.         {one+=ten;
  44.         ten=one-ten;
  45.         one-=ten;
  46.         }
  47.         max=hundred*100+ten*10+one;
  48.         min=one*100+ten*10+hundred;
  49.         number=max-min;
  50.         printf("%d:%d-%d=%d\n",++i,max,min,number);
  51.         }      
  52.  
  53.         else printf("你输入不在范围中");
  54.  
  55. }

回复 "c语言 黑洞数 三位数"

这儿你可以回复上面这条便签

captcha