解题思路:用数组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);
	
}


点赞(1)
 

0.0分

0 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论