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

«1 2 » Pages: ( 2/2 total )
本页主题: 一个很瓜的问题[已解决] 显示签名 | 打印 | 加为IE收藏 | 收藏主题 | 上一主题 | 下一主题

abcd0106





性别: 帅哥 状态: 该用户目前不在线
等级: 鹤立鸡群
发贴: 1093
威望: 0
浮云: 1049
在线等级:
注册时间: 2005-10-08
最后登陆: 2009-04-04

5come5帮你背单词 [ authorize /'o:θəraiz/ vt. 授权,委托,许可,批准 ]


好像是cin>>a没有阻塞啊,
加一个getchar()试一下吧
顶端 Posted: 2007-11-12 22:26 | [15 楼]
yinx



性别: 帅哥 状态: 该用户目前不在线
等级: 人见人爱
家族: 丢丢
发贴: 2333
威望: 0
浮云: 1260
在线等级:
注册时间: 2006-09-15
最后登陆: 2009-05-11

5come5帮你背单词 [ arrange /ə'reind3ə/ vt. 安排,准备,整理,排列;vi. 安排,准备 ]


好了,我投降了……
上外网找答案:

Quote:

nemozhang

今天写了个程序,结果发现一个问题!请大虾们指点一二!
源程序代码如下:
#include<iostream>
using namespace std;

void main()
{
    int year;
    do
    {
        cout<<endl<<"请输入年份(格式为XXXX):";
        cin>>year;
        if(year<0||year>9999)
        {
            cout<<"输入错误!"<<endl;
            cout<<endl<<"请输入年份(格式为XXXX):";
            cin>>year;
        }
   
    }while(year<0||year>9999);
   
}

运行结果是:输入数字一切正常;如果输入的是字母的话就出现死循环了
            反复的
              请输入年份(格式为XXXX):输入错误!
      跪求解释


Quote:

aipb2007

当然死循环,year是int型,输入字符流将被设置错误,残留的输入会导致死循环。

可以加如判断,使只能输入数字。

cin >> year;
while (cin.bad()){
    cout << "bad input.\n";
    cin.clear();
    cin.ignore();
    cin >> year;
}



Quote:

nemozhang

    程序我进行了调试,发现如果输入的是字符,year这个变量并没有被赋值,现在修改了一下,没有问题了! 
    早上看过斑竹的回帖后,又去查了一下CIN的详细,才明白了不少!
    小弟感激万分!呵呵!
                                                               

    现在又出现个问题,我编的程序,需要多次调用这个循环,在二次调用这个循环的时候,再次出现了死循环这是为什么?
  我尝试了一下,改了一下代码,将判断语句中的cin.bad()改成cin.fail(),就又正常了,能帮我解释一下吗?



Quote:

aipb2007

晕,我的错,又笔误,我想写的就是cin.fail()

cin.bad()是输入流被不可恢复的破坏。
cin.fail()是可恢复的。

你的情况是后者,道理一样,你如果用cin >> 这样的形式做循环条件,那退出循环的时候,流就被设置了failbit或者eofbit,所以要清除流错误状态,同时清除残留在输入缓冲区里的输入, ignore()就有这个功能,当然也可以用sync()……还有几个函数,自己查下,都可以。

我太粗心了,呵呵~不好意思。


Quote:

nemozhang

      呵呵,没关系了,问题不都解决了吗!没到论坛提问,俺都不知道还有这gate道的,看来还需要多多学习才是啊!
顶端 Posted: 2007-11-12 22:46 | [16 楼]
luwen



性别: 帅哥 状态: 该用户目前不在线
头衔: 无我相
等级: 人见人爱
发贴: 4372
威望: 0
浮云: 1120
在线等级:
注册时间: 2006-09-14
最后登陆: 2013-09-25

5come5帮你背单词 [ besides /bi'saidz/ prep. 除…之外(还);ad. 而且,此外 ]


Quote:
引用第16楼yinx于2007-11-12 22:46发表的  :
好了,我投降了……
上外网找答案:


谢谢蝈蝈了
顶端 Posted: 2007-11-12 22:55 | [17 楼]
zhd32



性别: 帅哥 状态: 该用户目前不在线
等级: 版主
家族: YD一族
发贴: 619
威望: 0
浮云: 543
在线等级:
注册时间: 2006-04-22
最后登陆: 2009-06-22

5come5帮你背单词 [ invalid /'invəli:d, in'vælid/ a. 无用的,无效的 ]


C的话可以用
fflush + scanf() 来解决
顶端 Posted: 2007-11-12 23:31 | [18 楼]
«1 2 » Pages: ( 2/2 total )
我来我网·5come5 Forum » 程序员之家

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