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

来自 Voluminous Camel, 2024-03-21, 写在 C, 查看 13 次. 这张便签是回复 c语言 四位数 黑洞数 来自 Perl Goat - 对比版本
URL http://www.code666.cn/view/0ece8779
  1. 任选4个不完全相同的数字(像1111就不行),让“最大排列”减“最小排列”(例如8753-3578),不断重复这个动作,最后一定会得到相同的结果:6174
  2.  
  3.  
  4. #include <stdio.h>
  5.  
  6. int convert(int number[],int ans);
  7. int *sort(int number[],int len);
  8.  
  9. int main(void)
  10. {
  11.     int number[4] = {0};
  12.     int *p = NULL;
  13.     int n = 0;
  14.     int ans = 0;
  15.     int count = 0;
  16.     printf("请输入一个互不相同的四位数:");
  17.     scanf("%d",&n);
  18.     //n=6610;
  19.     printf("输入的四位数是:%d\n\n",n);
  20.     ans = n;
  21.     while(ans!=6174)
  22.     {
  23.         ans = convert(number,ans);
  24.         printf("第%d次:%d\n\n",count+1,ans);
  25.         ++count;
  26.     }
  27.     printf("经过了%d次最大减最小的动作\n",count);
  28.     return 0;
  29. }
  30.  
  31. int *sort(int number[],int len) //大到小的排序
  32. {
  33.     int a =0;
  34.     for(int i=0; i<len; ++i)
  35.     {
  36.         for(int j=i+1;j<len;++j)
  37.         {
  38.             if(number[i] <number[j])
  39.             {
  40.                 a = number[i];
  41.                 number[i] = number[j];
  42.                 number[j] = a;
  43.             }
  44.         }
  45.     }
  46.     return number;
  47. }
  48. int convert(int number[],int ans)//每次变换得到的数字
  49. {
  50.     int *p = NULL;
  51.     int m=0;
  52.     number[0] = ans/1000;  //把这个数放入数组
  53.     number[1] = ans%1000/100;
  54.     number[2] = ans%100/10;
  55.     number[3] = ans%10;
  56.     p = sort(number,4);
  57.     m=(*p*1000+*(p+1)*100+*(p+2)*10+*(p+3))- ( *(p+3)*1000+*(p+2)*100+*(p+1)*10+*p);//最大数字减去最小数字
  58.     printf("%d-%d=%d\n",(*p*1000+*(p+1)*100+*(p+2)*10+*(p+3)),( *(p+3)*1000+*(p+2)*100+*(p+1)*10+*p),m);
  59.     return m;
  60. }

回复 "Re: c语言 四位数 黑洞数3333"

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

captcha