哪位C++高手能帮忙解决一下此程序问题啊

#include<iostream>usingnamespacestd;voidmain(){inta=0;while(a!=4){cout<<"1.解一元二次方程"<<... #include<iostream>
using namespace std;
void main()
{
int a=0;
while (a!=4)
{
cout<<"1.解一元二次方程"<<endl;
cout<<"2.出圈游戏之一"<<endl;
cout<<"3.出圈游戏之二"<<endl;
cout<<"4.退出程序"<<endl;
cout<<" 选择:";
while(cin>>a)
{if (a==1||a==2||a==3||a==4)
cout<<endl;break;
cout<<"输入错误,重选1-4:";
}
switch(a)
{
case 1:cout<<"解一元二次方程"<<endl;break;
case 2:cout<<"出圈游戏之一"<<endl;break;
case 3:cout<<"出圈游戏之二"<<endl;break;
case 4:cout<<"再见!"<<endl;break;
}

}
}

这个程序当a的输入值为字符时本应输出
输入错误,重选1-4:
为何却进入死循环,不停刷屏呢……
大虾们帮帮忙啊~~~
厄,不等于的时候报错,输入非1-4的时候应该出 输入错误,重选1-4:
但是输入一个字符的时候却是刷屏……
展开
 我来答
百度网友329f036e3
2010-05-19 · 超过31用户采纳过TA的回答
知道答主
回答量:50
采纳率:0%
帮助的人:0
展开全部
#include<iostream>
#include<assert.h>
using namespace std;

void main()
{
/*这里要修改为char[]数组,因为输入可能会出现非int的字符,如果你定义为int,那么当输入为字符的时候,就会出现你说的死循环了*/
char a[1024]={'0'};

/* "*a"就是a[0]的意思,因为你要求的是1-4那么只需要一个字符就可以了,上面开1024是防止出现输入为abcde这种错误输入*/
while (*a!='4')
{
cout<<"1.解一元二次方程"<<endl;
cout<<"2.出圈游戏之一"<<endl;
cout<<"3.出圈游戏之二"<<endl;
cout<<"4.退出程序"<<endl;
cout<<" 选择:";
while(cin>>a)
{
if (*a>'0'&&*a<'5')/*这里是连续的,所以没必要用||或一个一个来*/
{
cout<<endl;
break;
}
cout<<"输入错误,重选1-4:";
}
switch(*a)
{
case '1':cout<<"解一元二次方程"<<endl;break;
case '2':cout<<"出圈游戏之一"<<endl;break;
case '3':cout<<"出圈游戏之二"<<endl;break;
case '4':cout<<"再见!"<<endl;break;
}

}
}
52crazyhan
2010-05-19
知道答主
回答量:15
采纳率:0%
帮助的人:0
展开全部
你的if那里,你的意思是输入等于1、2、3、4的时候报错还是不等于的时候报错?
你if那里有问题的,而且你可以直接在switch里面添加default:
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友587bc03
2010-05-19 · TA获得超过123个赞
知道答主
回答量:193
采纳率:0%
帮助的人:59万
展开全部
哈哈,几年前我都遇到过这样的问题了,至今无法解决。
尝试过用C++的类型判断函数来做,还是无法实现。
没有弄明白是怎么回事。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
dwthead
2010-05-19 · TA获得超过2308个赞
知道小有建树答主
回答量:1478
采纳率:0%
帮助的人:1906万
展开全部
这不就解决了么
#include<iostream>
using namespace std;
void main()
{
char a=NULL;

while (a!='4')
{
cout<<"1.解一元二次方程"<<endl;
cout<<"2.出圈游戏之一"<<endl;
cout<<"3.出圈游戏之二"<<endl;
cout<<"4.退出程序"<<endl;
cout<<" 选择:";
while(cin>>a)
{if (a=='1'||a=='2'||a=='3'||a=='4')
{cout<<endl;break;}
cout<<"输入错误,重选1-4:";
}
switch(a)
{
case '1':cout<<"解一元二次方程"<<endl;break;
case '2':cout<<"出圈游戏之一"<<endl;break;
case '3':cout<<"出圈游戏之二"<<endl;break;
case '4':cout<<"再见!"<<endl;break;
}

}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
松鼠小三
2010-05-19
知道答主
回答量:18
采纳率:0%
帮助的人:15.5万
展开全部
#include<iostream>
using namespace std;
void main()
{
int a=0,b=0;
if (a!=4)//while 改为if
{
cout<<"1.解一元二次方程"<<endl;
cout<<"2.出圈游戏之一"<<endl;
cout<<"3.出圈游戏之二"<<endl;
cout<<"4.退出程序"<<endl;
cout<<" 选择:";

while(cin>>a)
{if ((a==1||a==2)||(a==3||a==4))
{cout<<endl;break;}
else
cout<<"输入错误,重选1-4:";
}
switch(a)
{
case 1:cout<<"解一元二次方程"<<endl;break;
case 2:cout<<"出圈游戏之一"<<endl;break;
case 3:cout<<"出圈游戏之二"<<endl;break;
case 4:cout<<"再见!"<<endl;break;
}

}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
离离原上花开
2010-05-19 · TA获得超过6856个赞
知道大有可为答主
回答量:1923
采纳率:0%
帮助的人:691万
展开全部
while里面的break意味着出错跳出本次循环,由于外面还有一个循环,所以会不停地执行上面的循环。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式