解题思路:
在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; }
0.0分
235 人评分
直接敲回车会出错……,我在devc++调试的。 0 49
for (i=0;i<=count-2;i++) ,在这里,如果count=4,那不就只能输出a[0],a[1],a[2]了吗,只有三位数啊? 我也是这个疑问啊 i<=3之后执行一次循环,然后自增到4,然后判断,过不去了哇,就算后面还有printf("%d\n",x[i]),那也不就是只有四位数吗
黄宗泽 2018-05-22 21:35:22 |
for语句只执行到printf("%d ",x[i]); 后面那个语句i已经自增了输出最后一个数字
qqqj 2018-08-23 15:38:10 |
先输出三个,再输一个换行,
qqqj 2018-08-23 15:40:07 |
保证最后一个数字后没有空格
Clearlove7 2018-11-25 20:56:20 |
count=4表明这个数只有四位啊,依次输出四位数的话,输出四次正好啊
for (i=0;i<=count-2;i++) ,在这里,如果count=4,那不就只能输出a[0],a[1],a[2]了吗,只有三位数啊?
源一 2018-05-03 23:21:23 |
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]); 主要是由于输入到最后一位数字时要换行,比较麻烦。
月夜魂 2018-05-05 17:10:13 |
哦,之前没注意后面还有 printf("%d\n",x[i]);
寡人有疾 2018-05-17 17:10:05 |
@1016323 老哥,不懂啊……i自加到4之后不就结束循环了吗
源一 2018-05-19 20:58:04 |
i=4时for循环是结束了,但是,你仔细想,i=4的循环结束后,i已经自加到5了。由于for循环只控制后面一句printf.所以你会发现第十五行的代码就输出了i=5时的数字,我这么说你明白了么。还有问题可以私信我。
源一 2018-05-19 20:58:47 |
@lal920965154 i=4时for循环是结束了,但是,你仔细想,i=4的循环结束后,i已经自加到5了。由于for循环只控制后面一句printf.所以你会发现第十五行的代码就输出了i=5时的数字,我这么说你明白了么。还有问题可以私信我。
Minesweeper (C语言代码)浏览:856 |
C语言程序设计教程(第三版)课后习题10.3 (C语言代码)浏览:590 |
矩形面积交 (Java代码)浏览:1281 |
C语言训练-求1+2!+3!+...+N!的和 (C语言代码)浏览:575 |
哥德巴赫曾猜测 (C语言代码)浏览:1149 |
数组输出 (C语言代码)错误???浏览:602 |
C语言程序设计教程(第三版)课后习题8.3 (C语言代码)浏览:624 |
简单的for循环浏览:1498 |
Wu-求圆的面积 (C++代码)浏览:1994 |
WU-C语言程序设计教程(第三版)课后习题12.1 (C++代码)浏览:1024 |
paul 2018-10-21 11:52:57 |
规范,初始化变量是个好习惯规范