猿问

数学黑洞c++编程题,用数组排列过后怎么循环下去,有没有实例,谢谢?

“数学黑洞”:任意一个4位自然数,,,形成一个最大数和一个最小数,之后,两数相减,其差仍然为一个自然数。重复进行上述运算,会发现一个神秘的数。请找出该神秘数,并对所有4位自然数进行验证。


柔情似水的眼眸3611166
浏览 1794回答 1
1回答

源小猿

#include <stdio.h> int main(void) {     int a=0;  //用于获取输入的数字     int b[4]={0};  //用于保存每个位     int c=0;  //用于排序时暂存     int max=0,min=0;  //保存最大最小值         printf("请输入一个四位数字:");     scanf("%d",&a);         if(a>=1000&&a<=9999)  //判断输入的值是否过大或过小     {     while(a>=10)     {     b[0]=a/1000;     b[1]=(a%1000)/100;     b[2]=(a%100)/10;     b[3]=a%10;         for (int i=0;i<3;i++)  //由小到大排序     {         for (int j=i+1;j<4;j++)         {             if (b[i]>b[j])             {                 c=b[i];                 b[i]=b[j];                 b[j]=c;             }         }     }     min=b[0]*1000+b[1]*100+b[2]*10+b[3];     max=b[3]*1000+b[2]*100+b[1]*10+b[0];         a=max-min;  //差值保存到a中便于while检查     }     }     printf("这个数字为:%d",a);     return 0; } 这是我的看法,我没有编译,编译器好像出了点小问题,你自己试试看,你说测试所有四位数字的话就加一个for循环,挨个把值附给a应该就可以吧
随时随地看视频慕课网APP
我要回答