早教吧 育儿知识 作业答案 考试题库 百科 知识分享

C++程序设计,数字黑洞6174给定任意的一个四位正整数(数字不全相同),将它的各位数字重新组合成一个最大的数和最小的数相减后得到一个新的数,对这个新的数重复组数、相减的过程,最多

题目详情
C++ 程序设计,数字黑洞6174
给定任意的一个四位正整数(数字不全相同),将它的各位数字重新组合成一个最大的数和最小的数相减后得到一个新的数,对这个新的数重复组数、相减的过程,最多七步,必得6174.即:7641-1467=6174 ,将永远出不来.输入格式:一个四位整数(不全相同) 输出格式:若干行(每行为一个相减运算等式) 输入样例 5060输出样例 6500-56=6444     6444-4446=1998     9981-1899=8082     8820-288=8532     8532-2358=6174编程参考:从 n 中分解出四个数字,排序,组合得最大数、最小数,     二数相减结果重赋给 n ,输出减式,     直到 n=6174 为止.
▼优质解答
答案和解析
#include 
void sort(int a[],int left,int right)
{
     int i,j,t;
     i=left,j=right+1;
     if(left      while(1){
       while(i+1       while(j-1>left-1&&a[--j]>a[left]);
       if(i>=j)break;
       t=a[i],a[i]=a[j],a[j]=t;
      }
      t=a[left],a[left]=a[j],a[j]=t;
      sort(a,left,j-1);
      sort(a,j+1,right);
     }
}

int main()
{
    int a,b[4],ma,mi,i;
    scanf("%d",&a);
    for(;;)
    {
        for(i=0;i<4;i++)b[i]=a%10,a/=10;
        sort(b,0,3);
        ma=b[3]*1000+b[2]*100+b[1]*10+b[0];
        mi=b[3]+b[2]*10+b[1]*100+b[0]*1000;
        a=ma-mi;
        printf("%d-%d=%d\n",ma,mi,a);
        if(a==6174)break;
    }
    return 0;
}
看了C++程序设计,数字黑洞617...的网友还看了以下: