永发信息网

C++输入字符出现死循环

答案:5  悬赏:10  手机版
解决时间 2021-03-28 03:54
定义数据类型是整型,如果不小心输入字符,就出现死循环,要怎么避免呢?
#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,如果输入的是字符,程序循环停不下来。你调试了吗?
最佳答案
#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改为字符,再加个判断条件结束循环
全部回答
3楼是对的,解释一下。cin.fial()是说如果输入错误,就返回true。而cin.clear就是修复输入流。cin.sync()是清空输入流。因为如果输入错误,错误的信息依然在输入流中,没有被取走。这样,使得循环每次都是输入的错误信息。把输入流清空一下,当前的输入流就为空了,再次输入如果正确,就输入进去,如果还是错误,就再次把当前输入流清空。
判断输入字符类型。
那在你输入变量值之前应该看好你所定义的变量是什么类型。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
一个WORD文档怎么才可以有横竖两种不同的文字
如何为信奉基督教的一对新人挑选礼物
请教各位卡神,目前手上有几张信用卡,如何支
课外古文千里之马 古之君人,有以千金求千里马
素描打形怎么练?
做二手房,要怎么做,我是新手,需要学习什么
名声臭的很的女人你愿意娶她吗?
CG插画使用 photoshop绘画笔刷和工具预设有什
地被植物的单位是什么
中国为什么不把传统节日定为法定假日,是出于
望山跑死马是什么意思?
辽宁卫视有个娱乐节目有个穿红色西装的人模仿
尊敬的客户,您本次提出的信用额度调整申请暂
欧诗漫润颜美白活肤水,珍珠透白水嫩平衡露,
1+1x8=?
推荐资讯
带苟的四字词语
四川罗卜丁的做法
形容喜欢名利和荣耀羡慕钱财的成语是哪个
D.O出演的有一部韩剧是不是叫《没关系 是爱情
当我问男生喜欢我吗?他把我搂住拼命的亲我,
那好莱坞些科幻电影是怎么拍的??
翡翠龙壁摆件的寓意
跑跑键盘灵敏度
东方21文化集团在上海什么区
如何计算O型密封圈结构的密封能力(即能承受
我想请问,猪饲料小型颗粒机?两项电能用吗?
请问下那个 电雕制版是什么东西,他和出菲林
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?