原题链接:C语言训练-阶乘和数*
参考代码:
#include<stdio.h>
int factorial(int molecule){
int product =1;
for(int i=1; i<=molecule; i++){
product *= i;
}
return product; //0的阶乘是1
}
int split(int sample){
int sum=0;
while(sample!=0){
sum += factorial(sample%10);
sample /= 10;
}
return sum;
}
void arrange(int disoder[], int subscript){
int gist[20]={0};
for(int i=0; i<subscript; i++){
gist[i] = disoder[i];
while(gist[i]>=10){
gist[i] /=10;
}
}
int avatar1, avatar2;
for(int i=0; i<subscript; i++){
for(int j=subscript-1; j>i; j--){
if(gist[j]<gist[j-1]){
avatar1 = gist[j-1];
gist[j-1] = gist[j];
gist[j] = avatar1;
avatar2 = disoder[j-1];
disoder[j-1] = disoder[j];
disoder[j] = avatar2;
}
}
}
for(int i=0; i<subscript; i++){
printf("%d ", disoder[i]);
}
}
int main(){
int sum;
int store[20];
int index=0;
for(int i=1; i<=100000; i++){
sum = 0;
sum = split(i);
if(i==sum){
store[index] = i;
index++;
}
}
arrange(store, index);
return 0;
}0.0分
0 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复