c++ 求解决方法:int a 后cin>>a ,输入char 类型或溢出 后面的语句直接运行
#include<iostream>#include<time.h>#include<stdlib.h>usingnamespacestd;main(){srand(ti...
#include <iostream>
#include <time.h>
#include <stdlib.h>
using namespace std;
main()
{
srand (time(NULL));
int num=rand()%100,in,i;
for (i=0;i<10;i++)
{ cin>>in;
if (in==num)
{cout<<"Right!"<<endl;
break;
}
if (in<num)
cout<<"xiao le"<<endl;
if (in>num)
cout<<"da le "<<endl;
}
system("pause");
} 展开
#include <time.h>
#include <stdlib.h>
using namespace std;
main()
{
srand (time(NULL));
int num=rand()%100,in,i;
for (i=0;i<10;i++)
{ cin>>in;
if (in==num)
{cout<<"Right!"<<endl;
break;
}
if (in<num)
cout<<"xiao le"<<endl;
if (in>num)
cout<<"da le "<<endl;
}
system("pause");
} 展开
8个回答
展开全部
int main(int argc, char* argv[])
{
srand (time(NULL));
int num = rand()%100;
int in;
while(in != EOF && in != -1)
{
while(!(cin>>in)) // 此处加入校验,呵呵,应该算是终级解决了~~
{
cin.clear();
cin.ignore();
}
if (in == num)
{
cout<<"Right!"<<endl;
break;
}
if (in < num)
cout<<"xiao le"<<endl;
if (in > num)
cout<<"da le "<<endl;
}
system("pause");
return 0;
}
是这个效果么?
{
srand (time(NULL));
int num = rand()%100;
int in;
while(in != EOF && in != -1)
{
while(!(cin>>in)) // 此处加入校验,呵呵,应该算是终级解决了~~
{
cin.clear();
cin.ignore();
}
if (in == num)
{
cout<<"Right!"<<endl;
break;
}
if (in < num)
cout<<"xiao le"<<endl;
if (in > num)
cout<<"da le "<<endl;
}
system("pause");
return 0;
}
是这个效果么?
追问
恩恩 是的是的,还请问一下
while(in != EOF && in != -1)和
while(!(cin>>in)) 的意思是什么啊
追答
in != EOF 用来判断输入结束的,在DOS界面下输入符提示的时候键入ctrl+z,产生一个EOF
in != -1, 这个其实多余了,一般EOF的值就是-1,这里就是给你一个提示,这个EOF值为-1
加入你一直没有猜中那个数字,不想玩了,就输入-1或者ctrl+z,就可以跳出这个猜数字的游戏了
while(!(cin>>in)) 是对输入的判断,表示如果输入不合法。。。。
http://zhidao.baidu.com/question/319022617.html 这个是我上次答复别人的,EOF用在输入和读文件的时候很常用的。。。。
有问题继续问啊~~
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
程序的输入都建有一个缓冲区,即输入缓冲区。一次输入过程是这样的,当一次键盘输入结束时会将输入的数据存入输入缓冲区,而cin函数直接从输入缓冲区中取数据。如果输入非法时会造成一个输入缓冲区的异常,缓冲区中会残留数据,因为cin函数是直接从缓冲区取数据的,cin函数会直接取得这些残留数据而不会请求键盘输入,这就是你程序中为什么会出现输入语句失效并且没等键盘输入继续执行的原因!
如果你要严格控制输入的合法非法,你可以把输入类型改成char型,加入判断条件控制数据的输入合法度。比如说a,b,c,d,ree,等字符非法,重新输入,1,2,等数字字符合法,再把合法的字符转成整形数据,这样就不会有非法错误了。字符转整形你可以看看字符表达式的运算的程序。
如果你要严格控制输入的合法非法,你可以把输入类型改成char型,加入判断条件控制数据的输入合法度。比如说a,b,c,d,ree,等字符非法,重新输入,1,2,等数字字符合法,再把合法的字符转成整形数据,这样就不会有非法错误了。字符转整形你可以看看字符表达式的运算的程序。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你输入的类型与定义的类型不符和。当然会出错了!也就是说cin>>in.这条指令一直没法执行成功。继续向下运行。因为cin>>in.这条指令一直没法执行成功。所以一直运行到for循环结束。而in因为没有值。所以!=num。就只能是 in<num 一直就输出xiao le!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include <iostream>
#include <time.h>
#include <stdlib.h>
using namespace std;
void main()
{
srand (time(NULL));
int num=rand()%100,in,i;
for (i=0;i<10;i++)
{
cin.clear(); //注意清空cin的缓存
cin>>in;
if (in==num)
{cout<<"Right!"<<endl;
break;
}
if (in<num)
cout<<"xiao le"<<endl;
if (in>num)
cout<<"da le "<<endl;
}
system("pause");
}
#include <time.h>
#include <stdlib.h>
using namespace std;
void main()
{
srand (time(NULL));
int num=rand()%100,in,i;
for (i=0;i<10;i++)
{
cin.clear(); //注意清空cin的缓存
cin>>in;
if (in==num)
{cout<<"Right!"<<endl;
break;
}
if (in<num)
cout<<"xiao le"<<endl;
if (in>num)
cout<<"da le "<<endl;
}
system("pause");
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include <iostream>
#include <time.h>
#include <stdlib.h>
using namespace std;
main()
{
srand (time(NULL));
int num=rand()%100,in,i;
for (i=0;i<10;i++)
{ cin>>in;
if (in==num)
{cout<<"Right!"<<endl;
break;
}
else if (in<num)
cout<<"xiao le"<<endl;
else if (in>num)
cout<<"da le "<<endl;
else
cout<<"input error :"<<endl;
}
system("pause");
}
#include <time.h>
#include <stdlib.h>
using namespace std;
main()
{
srand (time(NULL));
int num=rand()%100,in,i;
for (i=0;i<10;i++)
{ cin>>in;
if (in==num)
{cout<<"Right!"<<endl;
break;
}
else if (in<num)
cout<<"xiao le"<<endl;
else if (in>num)
cout<<"da le "<<endl;
else
cout<<"input error :"<<endl;
}
system("pause");
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询