这样的问题如何解决????

kohan 2002-11-04 05:23:07
我练习写了个程序,但有点问题。程序运行结果如下:
Enter result (1=pass,2=fail): 1
Enter result (1=pass,2=fail): Enter result (1=pass,2=fail):
.
.
.
这样的问题如何解决????

#include <iostream.h>

int main()
{
int passes = 0,
failures = 0,
studentcounter = 1,
result;

while ( studentcounter <= 10 )
{
cout << "Enter result (1=pass,2=fail): ";
result = cin.get();

switch (result)
{
case '1':
passes = passes + 1;
studentcounter = studentcounter + 1;
break;
case '2':
failures = failures + 1;
studentcounter = studentcounter + 1;
break;
}
}

cout << "Passed " << passes << endl;
cout << "Failed " << failures << endl;

if ( passes > 8 )
cout << "Raise tuition " << endl;

return 0;
}

...全文
30 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
bryan99 2002-11-04
  • 打赏
  • 举报
回复
就是缓冲区的问题了...没有刷新缓冲区...用cin>>result就可以避免这个问题的出现...
waterstony 2002-11-04
  • 打赏
  • 举报
回复
错误原因:输入缓冲区没有刷新,第二次输入时,先写输入缓冲区,在从缓冲区中提取,所以会多出一些。
解决办法,可以将result = cin.get();改为:cin>>result;
因为碰到cin的提取操作>>时,系统会自动清空输出缓冲区。
当然,cin.get()前面加一个flush()也可以清空(刷新)输出缓冲区。
sandrowjw 2002-11-04
  • 打赏
  • 举报
回复
cin.get()前面flush()一下就可以了
kohan 2002-11-04
  • 打赏
  • 举报
回复
我想解决的关于哪个输入的问题,我要求他是这样的输入提示:
Enter result (1=pass,2=fail):1
Enter result (1=pass,2=fail):2
Enter result (1=pass,2=fail):3
...........
而不是那样:
Enter result (1=pass,2=fail): 1
Enter result (1=pass,2=fail): Enter result (1=pass,2=fail):2
Enter result (1=pass,2=fail): Enter result (1=pass,2=fail):3
..........
Flamesong 2002-11-04
  • 打赏
  • 举报
回复
result = cin.get();
改为:
cin>>result;
Flamesong 2002-11-04
  • 打赏
  • 举报
回复
你想解决什么问题?

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧