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

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

xuer



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

5come5帮你背单词 [ alcohol /'ælkəhol/ n. 酒精,乙醇,含水量酒精的饮料 ]


求助一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帮你背单词 [ perhaps /pə'hæps/ ad. 也许,大概,可能 ]


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 楼]
perfect_刘



性别: 帅哥 状态: 该用户目前不在线
等级: 栋梁之材
发贴: 960
威望: 0
浮云: 1105
在线等级:
注册时间: 2005-11-20
最后登陆: 2009-05-08

5come5帮你背单词 [ solidarity /soli'dæriti/ n. 团结 ]


c++ primer上的~~~~
顶端 Posted: 2007-10-03 12:51 | [2 楼]
perfect_刘



性别: 帅哥 状态: 该用户目前不在线
等级: 栋梁之材
发贴: 960
威望: 0
浮云: 1105
在线等级:
注册时间: 2005-11-20
最后登陆: 2009-05-08

5come5帮你背单词 [ hanger // n. 吊架,吊轴承,挂钩 ]


输入小数时候输入流只截取整数部分~~
你这个可以避免输入非数字
你可以判断输入后流中下一个字符是不是回车符 若不是也重新输入
就在你的while判断中多加一个条件
后边一个while是将当前输入流中所有残留的数据搞掉~
clear()是重置cin对象内部的一个标记值


[ 此贴被perfect_刘在2007-10-03 13:14重新编辑 ]
顶端 Posted: 2007-10-03 13:04 | [3 楼]
我来我网·5come5 Forum » 程序员之家

Total 0.009847(s) query 5, Time now is:11-26 11:23, Gzip enabled
Powered by PHPWind v5.3, Localized by 5come5 Tech Team, 黔ICP备16009856号