统计负数的个数,关于ctrl+Z

theITcat 2012-07-13 05:45:56
for(i=0;i<100;++i)
{
cin>>value;
if(value<0)
{
++sum;
}
}

用上面的循环统计负数。当我输入十个数后按下CTRL+Z,循环终止,但是得到的是很奇怪的结果,请问为什么会这样?比如我输入8、-9、-8得到的结果是99.
...全文
86 点赞 收藏 5
写回复
5 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
pathuang68 2012-07-13
参考:

#include <iostream>
using namespace std;

int main(int argc, char** argv)
{
int value = 0;
int sum = 0;
while(true)
{
cin >> value;
if(value == 0) break; // 用输入0作为结束
if(value < 0)
{
++sum;
}
cin.sync();
cin.clear();
}
cout << sum << endl;

return 0;
}
回复
W170532934 2012-07-13
按strl+z的时候,流已经被设置为fail了。从而你使用for循环,但是cin这句不执行,value里还是未按ctrl+z之前的值。然后++那么多次
回复
goas 2012-07-13
cin是流结构的..
回复
theITcat 2012-07-13
[Quote=引用 1 楼 的回复:]

sun初值赋值了没? 判断结束后并没有把value清空,用scanf吧,清晰些,用cin不太清晰,又不知道你value什么类型。
[/Quote]果然在++sum;之后加上value=0就好了,这个深层次的原因是什么呢?
回复
xiebin133 2012-07-13
sun初值赋值了没? 判断结束后并没有把value清空,用scanf吧,清晰些,用cin不太清晰,又不知道你value什么类型。
回复
相关推荐
发帖
新手乐园
创建于2007-09-28

3.3w+

社区成员

C/C++ 新手乐园
申请成为版主
帖子事件
创建了帖子
2012-07-13 05:45
社区公告
暂无公告