我来我网
https://5come5.cn
 
您尚未 登录  注册 | 菠菜 | 软件站 | 音乐站 | 邮箱1 | 邮箱2 | 风格选择 | 更多 » 
 

本页主题: 求助一C++的问题 显示签名 | 打印 | 加为IE收藏 | 收藏主题 | 上一主题 | 下一主题

xuer



誓言守护者 执着之戒 真诚之戒 勇敢之戒
性别: 帅哥 状态: 该用户目前不在线
头衔: 学而时习之
等级: 人见人爱
家族: 起早不摸黑
发贴: 3393
威望: 0
浮云: 0
在线等级:
注册时间: 2006-11-19
最后登陆: 2018-08-13

5come5帮你背单词 [ everyday /'evridei/ a. 每天的,日常的 ]


求助一C++的问题

#include<iostream>
const int MAX=5;
int main()
{
    using namespace std;
    int golf[MAX];
    cout<<"Please enter your golf scores.\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";
    return 0;

}
题目的意思是输入五个整数,然后算平均值
                while(!(cin>>golf[i]))
        {
            cin.clear();
            while(cin.get()!='\n')
                continue;
            cout<<"Please enter a number: ";
        }
这段代码的作用是当输入为非整数值时提示错误并重新输入,但是看不明白哈,书上的解释是用clear()来重置输入,接下来程序在while循环中使用cin.get()来读取行尾之前的所有输入,从而删除这一行的错误输入,我不明白的是重置输入是什么意思,还有用cin.get()来读取行尾之前的所有输入的话那不是把错误再读一遍么,还有这个结构看得也不太明白哈,谁能给我说说哈
顶端 Posted: 2007-10-02 16:24 | [楼 主]
seekts



性别: 帅哥 状态: 该用户目前不在线
等级: 前途无量
家族: 丢丢
发贴: 9456
威望: 0
浮云: 1106
在线等级:
注册时间: 2006-11-12
最后登陆: 2009-07-08

5come5帮你背单词 [ truck /trΛk/ n. 卡车,载重汽车 ]


Quote:
引用第0楼xuer于2007-10-02 16:24发表的 求助一C++的问题 :
                while(!(cin>>golf))
        {
            cin.clear();
            while(cin.get()!='\n')
                continue;
            cout<<"Please enter a number: ";
        }
这段代码的作用是当输入为非整数值时提示错误并重新输入

没起到这个作用啊,输入为1.1这样的数时,就直接取整,并执行下一个了
顶端 Posted: 2007-10-02 17:30 | [1 楼]
我来我网·5come5 Forum » 程序员之家

Total 0.008608(s) query 6, Time now is:11-22 20:38, Gzip enabled
Powered by PHPWind v5.3, Localized by 5come5 Tech Team, 黔ICP备16009856号