解题思路:

        看注释即可。注释是本人解决本题的心路历程。(有点杂,凑合看吧。)

注意事项:

参考代码:

#include<stdio.h>
int main()
{
    int x1,x,a,b[5],i;            //首先确定的变量是输入的数x,然后根据需要再去设置变量a,x1,以及数组b[]。
    scanf("%d",&x);
    x1=x;                        //(本来没有设x1这个变量,但后面需要用到x的值,才用变量x1先代替x)
    for(a=0;x1>0;a++)            //这个for循环是求x的位数,用a输出。
    {
        x1=x1/10;                //采用x1/10,依次得到个位,十位,百位···
         
    }
    printf("%d\n",a);
    for( i=0;i<a;i++)        //这个for循环是为了给数组赋值。(为什么是i<a呢?因为位数是不确定的,所以我不采用i<5做循环结束的条件)
        {
             
            b[i]=x%10;            //b[0]是个位的数,b[1]是十位的数,依次赋值
           x=x/10;                //这里就是第二行注释说的事。后面不需要x了,所以我可以直接改变x的值。
             
        }
    for( i=a-1;i>=0;i--)    //这个for循环是为了实现题目中结果的第二行。(但我阴差阳错地先实现了结果的第三行,所以请先看下一个for循环。)
        {
            printf("%d",b[i]);    //倒序输出数组b[]。
            if(i!=0)
            printf(" ");
            else if(i==0)        //当输出了b[0]后,不打印空格而是进行换行操作。
            printf("\n");
        }
    for( i=0;i<a;i++)            //这个for循环实现了倒叙输出x。
    {
        printf("%d",b[i]);        //数组b[]是按照 个 十 百 千 的顺序赋值的,所以直接按正序输出即可。
    }
    return 0;
}                                        //如果对本题有疑问或者分享更好的思路,欢迎评论,大家一起讨论进步!
点赞(0)
 

0.0分

2 人评分

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

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

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

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

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

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

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

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

评论列表 共有 2 条评论

古灵精怪 3年前 回复TA
@zaodan 好方法,变量num即直接输出,同时又给数组赋值,简单明了
zaodan 3年前 回复TA
#include<stdio.h>
int main(void)
{
	int n, num = 0, i, t[5];
	scanf("%d", &n);
	while (n > 0)
	{
		t[num] = n % 10;
		num++;
		n /= 10;
	}
	printf("%d\n", num);
	for (i = 0; i < num; i++)
	{
		printf("%d ", t[num - 1 - i]);
	}
	printf("\n");
	for (i = 0; i < num; i++)
	{
		printf("%d", t[i]);
	}

	return 0;
}

各个位存到数组,直接输出,没试过字符串