HzuMomoc


私信TA

用户名:932521665

访问量:35960

签 名:

记得在搬砖中多摸鱼!!!

等  级
排  名 90
经  验 9079
参赛次数 8
文章发表 68
年  龄 0
在职情况 在职
学  校 贺州学院
专  业

  自我简介:

解题思路:用数组a保存每个 位数

              排序后,还原四位数

过程有点麻烦,耐下性子写,肯定可以写出的


注意事项:因为是从大到小排列,所以第二步要逆着还原


参考代码:

#include <stdio.h>
#include <math.h>
void f(int a[])//从大到小排序 
{
	int i,j,max,t;
	for(i=0;i<4;i++)
	{
		max=i;
		for(j=i;j<4;j++)
		{
			if(a[max]<a[j])
			    max=j;
		}
		t=a[max];
		a[max]=a[i];
		a[i]=t;
	}
	
}
void f1(int a[],int x)//将x拆分并保存到数组a 
{
	int i;
	i=0;
	while(x!=0)
	{
		a[i]=x%10;
		x=x/10;
		i++;
	}
	
}
int main (){
	int x,a[4],c,d,i=0;
	scanf("%d",&x);
	while(++i)
	{
		 f1(a,x);//拆分并保持到数组a[]
		 f(a);//排序 
		 c=a[3]*1000+a[2]*100+a[1]*10+a[0];//第一步
		 f1(a,x);//拆分
		 f(a);//排序 
		 d=a[0]*1000+a[1]*100+a[2]*10+a[3];//因为是从大到小排列,所以第二步要逆着还原
		 x=abs(c-d);//第三步
		 if(x==6174)//判断
		 break;
    }
    printf("%d",i);
	
}


 

0.0分

0 人评分

  评论区

  • «
  • »