解题思路:
在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分
230 人评分
#include<stdio.h> int main() { int val; int a[5]; int i=0; int b=1; int c; int va; scanf("%d",&val); va=val; while(val>0) { ++i; val = val/10; } printf("%d\n",i); for(c=1;c<=i;++c) { a[c]=va%10; va/=10; } for(c=i;c>0;--c) { printf(" %d ",a[c]); } printf("\n"); for(c=1;c<=i;++c) { printf("%d",a[c]); } return 0; } 格式错误是什么鬼
#include<stdio.h> int main() { int a,a1,a2,a3,a4; scanf("%d\n",&a); a1=a%10000; a2=a1%10000; a3=a2%100; a4=a3%10; if(a/10000!=0) { printf("%d",a/10000); } if(a/1000!=0) { printf("%d",a1/1000); } if(a/100!=0) { printf("%d",a2/100); } if(a3/10!=0) { printf("%d",a/10); } printf("%d",a4); return 0; } 这样解第一位可以吗?
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]); 为什么一个是count-2.一个是count-1? 新手请多指教,谢谢
打不死的小白 2020-03-10 14:45:31 |
同问。。。
hui 2020-03-10 14:50:14 |
for (i=0;i<=count-2;i++) printf("%d ",x[i]); printf("%d ",x[i]);规定最后一个数后不能有空格,单独把它拿出来
Faker 2020-03-20 13:34:57 |
@huih 看不懂,count-2不就会少输出一个数吗
Faker 2020-03-20 13:37:03 |
噢,看懂了
包租公 2020-11-26 23:07:46 |
@huih 那最后一个数为啥是a【i】,i的z值如何被知道的呢
包租公 2020-11-26 23:08:12 |
@1337995064 单独拿出来的那行
第9行怎么理解,还有temp为什么开始要设置初值为0,我刚接触C,新手请大神多赐教
handsome 2020-02-23 20:59:55 |
读入换行符的时候表示输入结束,而换行符的ASCII码为10,所以当temp=10时输入结束。第二个问题怎么说,在这个地方不用赋值也可以,但是如果你要运行temp++这种类似的代码就必须为它赋初值
学渣求解 我这个方法在逆序输出的时候第一位总是0 哪位大神能解答一下吗 感谢感谢感谢 #include<stdio.h> int main() { int t,n,i=0,count=0,a[4]; scanf("%d",&t); n=t; while(t) { a[count]=t%10; t/=10; count++; } printf("%d\n",count); for(i=count-1;i>0;i--) { printf("%d ",a[i]); } printf("%d\n",a[0]); while(n) { printf("%d",n%10); n/=10; } return 0; }
#include<stdio.h> int main() { int m,i; int a[5]={0}; int sum=0; int cnt=0; scanf("%d",&m); while(m>0){ cnt++; i=m%10; m=m/10; a[cnt-1]=i; sum=sum*10+a[cnt-1]; } printf("%d\n",cnt); for(cnt--;cnt>=0;cnt--){ printf("%d ",a[cnt]); } printf("\n"); printf("%d\n",sum); }
大鱼MY 2020-05-22 10:42:50 |
单纯输入 数字 0 结果有问题
int num; int numCount = 0; int sumNum = 0; int sumNum1 = 0; int tempNum; scanf("%d",&num); if(num <= 99999 && num) //判断用户输入的数字是否为5位数并且不为0 { while(num) { sumNum *= 10; tempNum = num % 10; num /= 10; sumNum += tempNum; numCount++; } printf("%d\n",numCount); sumNum1 = sumNum; while(numCount--) { while(sumNum1) { tempNum = sumNum1 % 10; sumNum1 /= 10; printf("%d ",tempNum); } } printf("\n%d\n",sumNum); } else{ printf("要求输入的数字长度小于等于五位数!"); }
钻石之心 2019-12-28 18:59:40 |
while(numCount-- && sumNum1) 多打了个循环。。。。
2006年春浙江省计算机等级考试二级C 编程题(2) (C++代码)直接打表啊8以上值不变hhh浏览:638 |
十->二进制转换 (C语言代码)浏览:1408 |
去掉双斜杠注释 (C语言代码)浏览:1823 |
假币问题 (C语言代码)浏览:2339 |
Tom数 (C语言代码)浏览:736 |
C语言程序设计教程(第三版)课后习题8.3 (C语言代码)浏览:422 |
不会做的浏览:874 |
2003年秋浙江省计算机等级考试二级C 编程题(2) (C语言代码)浏览:751 |
简单的a+b (C语言代码)浏览:693 |
C语言程序设计教程(第三版)课后习题4.9 (C语言代码)浏览:600 |
。 2020-03-21 10:57:31 |
不好意思,我自己输入错了