解题思路:具体的思路参考注释

注意事项:无

参考代码1(C++版):

#include <stdio.h>
#include <algorithm>	//调用sort排序函数,纯C的话需要自定义sort函数 
using namespace std;
int main(){
	int n,sum=0;
	scanf("%d",&n);	//读取四位数 
	int str[4];	//存储四位数 
	while(n!=6174){	//判断是否符合条件 
		int m = n;
		int i = 0;
		while(m!=0){	//将四位数拆分为单个字符存储到数组 
			str[i]=m%10;
			m /= 10;
			i++;
		}
		sort(str,str+4);	//排序 
		int s1 = str[0] * 1000 + str[1] * 100 + str[2] * 10 + str[3];	//默认递增排序,最小值 
		int s2 = str[3] * 1000 + str[2] * 100 + str[1] * 10 + str[0];	//最大值 
		n = s2 - s1;	//新数 
		sum++;	//统计次数 
	}
	printf("%d\n",sum);
	return 0;
}

参考代码2(纯C版):

#include <stdio.h>

int cap(const void *a, const void *b){
    return *(int*)b - *(int*)a;
}

int stor(int n){
    int zoo[4] = {n/1000, n%1000/100, n%100/10, n%10};
    qsort(zoo, 4, sizeof(int), cap);
    return zoo[0] * 1000 + zoo[1] * 100 + zoo[2] * 10 + zoo[3];
}

int rever(int n){
    return n/1000 + n%1000/100 * 10 + n%100/10 * 100 + n%10 * 1000;
}

int main(){
    int n, sum = 0;
    scanf("%d", &n);
    do{
        n = stor(n);
        sum++; 
        n = n - rever(n);
    }while(n != 0 && n != 6174) ;
    printf("%d\n", sum);
    return 0;
}


点赞(0)
 

0.0分

0 人评分

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

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

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

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

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

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

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

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

评论列表 共有 0 条评论

暂无评论