解题思路:使用数组和数学函数

注意事项:程序中多次使用输入的数字和数字的位数,因此注意不要改变这两个值。

注意数组f[i]是从f[0]开始的。
参考代码:

#include<stdio.h>

#include<math.h>

int main()

{

    int a, b, m, n=0;

    int f[10],i;//引用数组

    scanf_s("%d", &a);//输入一个10位以下的数字

    m = a;//避免将a的值改变

    while (m)

    {

        m/=10;

        n++;//将数字的位数累加

    }

    printf("%d\n", n);//输出数字的位数

    m = a;//重新为m赋值

    b = n;//避免将n的值改变

    while (n)

    {

        for (i=0;i<b;i++,n--)

        {

            f[i] = m / pow(10, n-1);//将数字的每一位数字按顺序为数组f[i]赋值,注意数组f[i]是从f[0]开始的

            m = m - f[i] * pow(10, n-1);

            if (n == 1)

                printf("%d\n", f[i]);//最后一位数字没有空格

            else

            printf("%d ", f[i]);//按顺序输出每位的数字

        }

    }//此时i的值为数字的位数

    for (; i > 0; i--)

        printf("%d", f[i-1]);//将数组反向输出,即将数字反向输出,如1234反向为4321

    return 0;

}


点赞(0)
 

0.0分

2 人评分

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

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

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

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

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

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

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

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

评论列表 共有 1 条评论

余万 3年前 回复TA
可以,简单易学。