标题:[求助]为什么输入整数的时候运行正常,如果输入非整数就会连续不断的输出* ...
只看楼主
27149
Rank: 1
等 级:新手上路
帖 子:39
专家分:0
注 册:2005-5-16
 问题点数:0 回复次数:12 
[求助]为什么输入整数的时候运行正常,如果输入非整数就会连续不断的输出* * wrong

大家看看下面一段程序
为什么输入整数的时候运行正常,如果输入非整数就会连续不断的输出* * wrong * *
// 3_1.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include "iostream.h"

int main(int argc, char* argv[])
{
int c=1;
int magic=123;
int guess;
while(c)
{
cin>>guess;
if(guess==magic)
{cout<<"* * right * *"<<endl;
c=0;}
else
cout<<"* * wrong * *"<<endl;
}
return 0;
}

搜索更多相关主题的帖子: wrong 整数 连续不断 int 
2006-01-22 09:07
aiyuheng
Rank: 1
等 级:新手上路
威 望:1
帖 子:656
专家分:0
注 册:2006-1-12
得分:0 

因为在非整数的时候,C一直等于1,并没有给它付0,所以WHILE循环一直继续下去.所以一直输出WRONG.


when i want to ask anyone,i will ask myself first.
2006-01-22 13:21
ElfDN
Rank: 4
等 级:贵宾
威 望:11
帖 子:291
专家分:0
注 册:2005-11-13
得分:0 
你下面那个语句也加个c=0呀

2006-01-22 19:44
olivezhang
Rank: 1
等 级:新手上路
帖 子:223
专家分:0
注 册:2005-9-14
得分:0 
我想问题的实质应该在这里:
cin>>guess;
当输入非数字键时,cin里面的缓冲好像一时没有清理,于是计算机再一次执行这一语句时就认为用户已经进行输入操作了。
现在的问题是怎样把缓冲清0。
我用过cin.clear()
也用过cin.delbuf()
都不行,还等高人指点呐。。。:)

谷底深深行 ,峰顶漫漫步......@_@
2006-01-26 11:39
ElfDN
Rank: 4
等 级:贵宾
威 望:11
帖 子:291
专家分:0
注 册:2005-11-13
得分:0 
#include <iostream>
using namespace std;
int main(int argc, char* argv[]){
int magic=123;
double guess;
while(1){
cin>>guess;
int(guess);
if(guess==magic){
cout<<"* * right * *"<<endl;
break;
}
else{
cout<<"* * wrong * *"<<endl;
guess=0;
}
}
}

[此贴子已经被作者于2006-1-26 12:04:28编辑过]


2006-01-26 12:00
DarkHero
Rank: 1
等 级:新手上路
威 望:2
帖 子:191
专家分:0
注 册:2006-1-14
得分:0 
楼上的不行啊,我试了,我想是不是可以做string处理,虽然代价高了点?

for( ; me.alive() ; ) { 淡泊名利,志存高远 } //Forever
2006-01-27 22:43
DarkHero
Rank: 1
等 级:新手上路
威 望:2
帖 子:191
专家分:0
注 册:2006-1-14
得分:0 

#include<iostream>
#include<string>
using namespace std;

int main()
{
string magic="123";
string guess;
while(1){
cin>>guess;
if(guess.compare(magic)==0){
cout<<"* * right * *"<<endl;
break;
}
else{
cout<<"* * wrong * *"<<endl;
}
}
return 0;
}
//测试过了,行


for( ; me.alive() ; ) { 淡泊名利,志存高远 } //Forever
2006-01-27 22:48
ElfDN
Rank: 4
等 级:贵宾
威 望:11
帖 子:291
专家分:0
注 册:2005-11-13
得分:0 
楼上的,你不要把char 一起混进去啊
他说的输入非整数,你输入小数我的程序不会有问题的呀

2006-01-28 13:33
DarkHero
Rank: 1
等 级:新手上路
威 望:2
帖 子:191
专家分:0
注 册:2006-1-14
得分:0 
我的各种情况当然都性,因为全作为char处理了,代价高了点吧
你的如果输入字符呢?
还有输入整数我试了也不成

for( ; me.alive() ; ) { 淡泊名利,志存高远 } //Forever
2006-01-30 15:52
ElfDN
Rank: 4
等 级:贵宾
威 望:11
帖 子:291
专家分:0
注 册:2005-11-13
得分:0 

呃,对不起括号打错了
#include <iostream>
using namespace std;
int main(int argc, char* argv[]){
int magic=123;
double guess;
while(1){
cin>>guess;
(int)guess;
if(guess==magic){
cout<<"* * right * *"<<endl;
break;
}
else
cout<<"* * wrong * *"<<endl;
}
}


2006-02-01 21:07



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-43637-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.127049 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved