c语言,编写程序,实现输入n个实数,并分别统计正数的和及负数的和,最后输出统计结果。我编写的程序如图

我编写的程序如图,最后得出的结果不正确。程序哪里错了?#include<stdio.h>voidmain(){intsum1=0,sum2=0,x;printf("输入n... 我编写的程序如图,最后得出的结果不正确。程序哪里错了?
#include<stdio.h>void main(){int sum1=0,sum2=0,x;printf("输入n个实数:\n");while(getchar()!='\n'){scanf("%d",&x);if(x>0)sum1+=x;if(x<0)sum2+=x;}printf("正数的和为%d,负数的和为%d",sum1,sum2);}
展开
 我来答
宋Lm
2019-07-28
知道答主
回答量:9
采纳率:0%
帮助的人:2.8万
展开全部

没有注意到scanf()和getchar() 的区别:前者不接受空格,后者接收空格。

当输入    

1【空格】2【空格】3【空格】4 【回车】

时,数字1被getchar “吃掉了”,接下来scanf忽略1和2之间的空格,“吃掉”2,然后getchar“吃掉”2后面的空格,然后scanf再吃掉3 ……

可以看到数字1被getchar捕捉,其他几个数字被scanf捕捉,即最终计算出来的结果是 0+2+3+4 = 9【图一所示】

而如果从键盘上提前输一个空格,即输入

【空格】1【空格】2【空格】3【空格】4【回车】

时,程序就可以得出正确结果。【图二所示】

希望可以帮到你!

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式