解题思路:结合了几个题解可以参考

注意事项:

参考代码:

#include<stdio.h>

#include <math.h>

int fun(int);

int main()

{

    int i,n,num,k,j;

     for(i = 1; i <= 9; i++)//将十万以内的数按首位数字分9类

    {

        for(j = 0; j < 5; j++)

        {

            n = i * pow(10, j); //分别将1,10,100,1000,10000,2,20作为起始数字

            for(k = 0; k < pow(10, j); k++) // 

        {

                num = n + k;

        if(fun(num))

            printf("%d ", num);


}}}}

int fun(int n) //判断当前数是否是阶乘和数

{

    int sum = 0;

    int m;

    int i;

    int j;  //储存每位数

    int k;  //当前位数的阶乘

    m = n;

    while(1)

    {

        k = 1;

        j = m%10; //依次取个位数

        m = m/10; //消去个位,方便下次取数

        for(i=1; i<=j; i++)

        {

            k = k*i;

        }

        sum = sum + k;

        if(m == 0)  //终止循环

            break;

    }

    if(sum == n)

        return 1;

    else return 0;

}


点赞(1)
 

0.0分

0 人评分

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

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

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

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

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

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

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

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

评论列表 共有 0 条评论

暂无评论