Spperman


私信TA

用户名:fan

访问量:64876

签 名:

优秀的程序员是没有女朋友的...

等  级
排  名 69
经  验 10335
参赛次数 0
文章发表 66
年  龄 19
在职情况 学生
学  校 河南师范大学
专  业 物联网

  自我简介:

单身是因为——太优秀了...

TA的其他文章

解题思路:

注意事项:


有源码虽好,不过请多多思考!

参考代码:



#include<stdio.h>


/*   sort1()用来形成最小四位数的排序,sort2形成最大;

getnum()用来返回这个新四位数,也就是max与min的差值

主函数写个死循环,当等于6174用break跳出;*/


void sort1(int a[])                  
{
    int i,j,k,temp;
    for(i=1;i<4;i++)
    {
        k=i;
        for(j=i+1;j<=4;j++)
        {
            if(a[k]>a[j])
            {
                k=j;
            }
        }
        if(k!=i)
        {
            temp=a[i];
            a[i]=a[k];
            a[k]=temp;
        }
    }
}

void sort2(int a[])
{
    int i,j,k,temp;
    for(i=1;i<4;i++)
    {
        k=i;
        for(j=i+1;j<=4;j++)
        {
            if(a[k]>a[j])
            {
                k=j;
            }
        }
        if(k!=i)
        {
            temp=a[i];
            a[i]=a[k];
            a[k]=temp;
        }
    }
}
int getnum(int n)
{
     int a[5],min,max;
   a[1]=n/1000;
   a[2]=n/100%10;
   a[3]=n/10%10;
   a[4]=n%10;
   sort1(a);
   min=a[1]*1000+a[2]*100+a[3]*10+a[4];               //数组记录各个位上的数字,乘以位数就得出这个数

   sort2(a);
   max=a[1]*1000+a[2]*100+a[3]*10+a[4];

   n=max-min;                                                          //n新4位数
   a[1]=n/1000;                                                         //别忘啦把新4位数各个位输入数组中
   a[2]=n/100%10;
   a[3]=n/10%10;
   a[4]=n%10;

   return n;                                                      //返回新四位数
   }


int main()
{
    int n,i=0,m;
    int a[5];
    scanf("%d",&n);
 

    while(1)
   {
       i++;                           //计数器i记录次数
       n=getnum(n);         //这里要n就是new,一个新四位数,先调用然后把返回值赋值给n,否则会死循环,
    if(n==6174)                 //因为n值没改变
    {
        break;
    }
   }
   printf("%d",i);
    return 0;
}



 

0.0分

0 人评分

  评论区

  • «
  • »