解题思路:
看注释即可。注释是本人解决本题的心路历程。(有点杂,凑合看吧。)
注意事项:
参考代码:
#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分
2 人评分
#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; } 各个位存到数组,直接输出,没试过字符串
简单的a+b (C语言代码)浏览:718 |
C语言训练-最大数问题 (C语言代码)浏览:633 |
C语言程序设计教程(第三版)课后习题9.2 (Java代码)浏览:632 |
printf基础练习2 (C语言代码)浏览:942 |
蛇行矩阵 (C语言代码)浏览:753 |
C语言训练-阶乘和数* (C语言代码)-------- 呆板写法浏览:1362 |
【计算两点间的距离】 (C语言代码)浏览:1494 |
母牛的故事 (C语言代码)浏览:715 |
Cylinder (C语言描述+详细分析)浏览:3266 |
sizeof的大作用 (C语言代码)浏览:1028 |
古灵精怪 2021-09-06 21:51:39 |
好方法,变量num即直接输出,同时又给数组赋值,简单明了