定义数据类型是整型,如果不小心输入字符,就出现死循环,要怎么避免呢?
#include <iostream.h>
void main()
{
int ch,a=0,b=1;
while(1)
{
cout<<"1--存款;2--还款;3--借款;4--取款。"<<endl;
cout<<"选择:";cin>>ch;
while(ch!=1&&ch!=2&&ch!=3&&ch!=4){
cout<<"选择有误,请重新输入:";cin>>ch;}
switch(ch){
case 1:b=a;break;
case 2:b=a;break;
case 3:b=-a;break;
case 4:b=-a;break;
default:break;
}
}
}
输入字符后,程序陷入死循环,怎么改啊? 三楼的方法也不行啊
五楼的那位,当你输入ch时,本应该输入1,2,3,4,如果输入的是字符,程序循环停不下来。你调试了吗?
C++输入字符出现死循环
答案:5 悬赏:10 手机版
解决时间 2021-03-28 03:54
- 提问者网友:川水往事
- 2021-03-27 07:42
最佳答案
- 五星知识达人网友:风格不统一
- 2020-01-03 21:43
#include <iostream.h>
void main()
{
char ch,a=0,b=1;
bool temp=false;
while(1)
{
cout<<"1--存款;2--还款;3--借款;4--取款。"<<endl;
cout<<"选择:";cin>>ch;
while(ch!='1'&&ch!='2'&&ch!='3'&&ch!='4'){
cout<<"选择有误,请重新输入:";cin>>ch;}
switch(ch){
case '1':b=a; temp=true;break;
case '2':b=a;temp=true;break;
case '3':b=-a;temp=true;break;
case '4':b=-a;temp=true;break;
default:break;
}
if(temp)break;
}
}
我把你的程序改了一点,把ch改为字符,再加个判断条件结束循环
void main()
{
char ch,a=0,b=1;
bool temp=false;
while(1)
{
cout<<"1--存款;2--还款;3--借款;4--取款。"<<endl;
cout<<"选择:";cin>>ch;
while(ch!='1'&&ch!='2'&&ch!='3'&&ch!='4'){
cout<<"选择有误,请重新输入:";cin>>ch;}
switch(ch){
case '1':b=a; temp=true;break;
case '2':b=a;temp=true;break;
case '3':b=-a;temp=true;break;
case '4':b=-a;temp=true;break;
default:break;
}
if(temp)break;
}
}
我把你的程序改了一点,把ch改为字符,再加个判断条件结束循环
全部回答
- 1楼网友:洎扰庸人
- 2019-08-05 06:30
3楼是对的,解释一下。cin.fial()是说如果输入错误,就返回true。而cin.clear就是修复输入流。cin.sync()是清空输入流。因为如果输入错误,错误的信息依然在输入流中,没有被取走。这样,使得循环每次都是输入的错误信息。把输入流清空一下,当前的输入流就为空了,再次输入如果正确,就输入进去,如果还是错误,就再次把当前输入流清空。
- 2楼网友:十年萤火照君眠
- 2020-09-26 22:01
判断输入字符类型。
- 3楼网友:迷人又混蛋
- 2019-10-08 22:27
那在你输入变量值之前应该看好你所定义的变量是什么类型。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯