解题思路:

在for循环中用getchar()接收输入的数字字符,并将其ASCII码赋值给temp(temp的数据类型为int),temp==10时(换行“\n”的ASCII码是10)判断输入结束跳出循环,未输入换行前则用count++统计位数,并将temp减48(字符0的ASCII码是48)后赋值给数组储存。
注意事项:

字符0的ASCII码是48,换行“\n”的ASCII码是10,输出第二行时最后一个数特殊处理。

参考代码:

#include <stdio.h>
int main()
{
    int i,count=0,x[5];             //count统计位数,x[5]储存数字
    for (i=0;i<5;i++)
    {
        int temp=0;
        temp=getchar();             //temp临时储存数字字符的ASCII码
        if (temp==10) break;      //输入换行\n后跳出for循环
        count++;
        x[i]=temp-48;               //字符0的ASCII码是48
    }
    printf("%d\n",count);
    for (i=0;i<=count-2;i++) printf("%d ",x[i]);
    printf("%d\n",x[i]);
    for (i=count-1;i>=0;i--) printf("%d",x[i]);
    return 0;
}


点赞(133)
 

0.0分

194 人评分

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

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

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

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

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

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

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

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

评论列表 共有 179 条评论

Akubi 6年前 回复TA
这个可以。
黄宗泽 6年前 回复TA
@寡人有疾 for语句只执行到printf("%d ",x[i]); 后面那个语句i已经自增了输出最后一个数字
源一 6年前 回复TA
@月夜魂 @lal920965154 i=4时for循环是结束了,但是,你仔细想,i=4的循环结束后,i已经自加到5了。由于for循环只控制后面一句printf.所以你会发现第十五行的代码就输出了i=5时的数字,我这么说你明白了么。还有问题可以私信我。
源一 6年前 回复TA
@月夜魂 i=4时for循环是结束了,但是,你仔细想,i=4的循环结束后,i已经自加到5了。由于for循环只控制后面一句printf.所以你会发现第十五行的代码就输出了i=5时的数字,我这么说你明白了么。还有问题可以私信我。
寡人有疾 6年前 回复TA
for (i=0;i<=count-2;i++) ,在这里,如果count=4,那不就只能输出a[0],a[1],a[2]了吗,只有三位数啊?
我也是这个疑问啊

i<=3之后执行一次循环,然后自增到4,然后判断,过不去了哇,就算后面还有printf("%d\n",x[i]),那也不就是只有四位数吗
寡人有疾 6年前 回复TA
@月夜魂 @1016323 老哥,不懂啊……i自加到4之后不就结束循环了吗
月夜魂 6年前 回复TA
@月夜魂 哦,之前没注意后面还有 printf("%d\n",x[i]);
源一 6年前 回复TA
@月夜魂 for(i=0;i<count-2;i++)输入到count-2之后,i自加,所以他后面还写了一个printf(“%d\n”,x[i]).所以就相当于for(i=0;i<=count-1;i++)printf("%d",x[i]); 主要是由于输入到最后一位数字时要换行,比较麻烦。
月夜魂 6年前 回复TA
for (i=0;i<=count-2;i++) ,在这里,如果count=4,那不就只能输出a[0],a[1],a[2]了吗,只有三位数啊?