#include<iostream>
const int Max = 5;
int main()
{
using namespace std;
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 (i = 0; i < Max; i++)
total += golf[i];
cout << total / Max << " =average score " << Max << " rounds\n";
system("pause");
return 0;
}
如果输入 88,则cin>>golf[i]表达式为ture,!(cin>>golf[i])为false,则程序结束循环返回到for;如果输入must it 则cin>>golf[i]表达式为false,!(cin>>golf[i])为ture,则会出现cin输入错误
fail() 被设定为真 failbit被设定 cin被标记错误 不可用( 意思是 出现不匹配 )然后就得用clear()清除错误状态 就是清除错误状态 (也就是把failbit设置为0)然后还得用 while(cin.get()!='\n')
continue;吸收缓冲区 也就是错误字符后面的字符之类的;
就是说如果输入123ab456的话,首先会接受到123,然后if(!cin)发现不是匹配的类型,出错,failbit被设定了,然后用clear()把被设定的failbit修改到原来的状态,接着继续接受456,直至遇到换行