请高手们帮个忙!谢谢

zcl198715 2008-03-08 02:27:57
请大家看下面的程序:(是在c++primer上看到的一个例子程序!)
#include<iostream>
using namespace std;
int main()
{
const int Max=5;
int golf[Max];
cout<<"please enter your golf scores.\n";
cout<<"you must enter"<<Max<<"rounds.\n";
int i;
for(i=0;i<Max;i++)
{
cout<<"round#"<<i+1<<":";
while(!(cin>>golf[i]))
{
cin.clear();
while(cin.get()!='\n')
continue;
cout<<"please enter a number:";
}
}
double total=0.0;
for(int i=0;i<Max;i++)
total+=golf[i];
cout<<"average score"<<Max<<" rounds="<<total/Max<<endl;
return 0;
}
请问大家,对于这段代码:
while(cin.get()!='\n')
continue;
有什么作用?
我试着将它删除了,为什么会进入死循环?
希望大家能帮我解决一下!不胜感谢!
...全文
118 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
星羽 2008-03-09
  • 打赏
  • 举报
回复
:)
zcl198715 2008-03-09
  • 打赏
  • 举报
回复
网上的高手真多了,太谢谢了!
tangyangyu 2008-03-08
  • 打赏
  • 举报
回复
上面说错了.
for(i=0;i <Max;i++)
{
cout < <"round#" < <i+1 < <":";
while(!(cin> > golf[i]))
{
cin.clear();
while(cin.get()!='\n')//如果有两话,当你输入(round1:34 )你会按回车符的吧!
continue; //cin.get(),它会获取回车符,然后continue;它就会结束外层while循环
//直接执行下一次的for语句.整个大的循环最终是由FOR结束的.
//如果您去掉它的话,你会一直在while(!(cin> > golf[i]))中,不会出来.因为你每次都江
//要求你输数.只要有数字,条件就为真,就会一直下去.
cout < <"please enter a number:";
}
}
tangyangyu 2008-03-08
  • 打赏
  • 举报
回复
while(cin.get()!='\n')
continue;
只是结束本次的循环的,它会直接进入下一次循环,即到while(!(cin> > golf[i]))处
它后面的东东就不在执行了.
kbh1984 2008-03-08
  • 打赏
  • 举报
回复
continue结束本次循环进行下次循环.
while(cin.get()!='\n')
continue;
如果输入是不是回车则结束本次循环,即不执行cout < <"please enter a number:";
但还是执行外部的循环,
zcl198715 2008-03-08
  • 打赏
  • 举报
回复
谢谢啦!不过
while(cin.get()!='\n')
continue;
倒底是干什么用的啊?
study_live 2008-03-08
  • 打赏
  • 举报
回复
只要輸入的不是回車符,反回while繼續執行

64,849

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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