| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2625 人关注过本帖
标题:关于Switch输入字母后死循环怎么解决?求指导
只看楼主 加入收藏
handy99999
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2015-5-25
结帖率:0
收藏
已结贴  问题点数:2 回复次数:13 
关于Switch输入字母后死循环怎么解决?求指导
本人小白,看书后写了一个简单的switch程序,但是在运行的时候不小心输入了字母,然后就死循环了,请各位大大帮忙看看要怎么改才不会那样;
先谢谢了!新人没有多少分,请见谅!

#include<stdio.h>
int main(void)
{
int i;
char ch;
while(i!=4)
    {
    printf("输入:");
    scanf("%d",&i);
    while (ch=getchar()!='\n')//只解决了1we格式输入的问题,但是连续输入字母时显示的结果还是之前的。
    continue;
    switch (i)
    {
    case 1: printf("1111\n");
        break;
    case 2: printf("2222\n");
        break;
    case 3: printf("3333\n");
        break;
    case 4: break;
    default : printf("错误!\n");
        break;
   
    }
    }
return 0;
}
搜索更多相关主题的帖子: continue include 字母 
2015-06-28 23:08
家力掠
Rank: 2
等 级:论坛游民
帖 子:52
专家分:16
注 册:2015-6-28
收藏
得分:1 
i没有初始化那么i!=4让计算机怎么判断
2015-06-28 23:12
handy99999
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2015-5-25
收藏
得分:0 
开始没有打如下代码时,一按字母就死循环
while (ch=getchar()!='\n')//只解决了1we格式输入的问题,但是连续输入字母还是不行
        continue;
后来想来想去加上去后,发现只要按字母显示的都一样,
比如:1ef 显示1111
再输入gfd 还是显示1111,我想正确显示是应该“错误!”
要怎么修改?
2015-06-28 23:12
家力掠
Rank: 2
等 级:论坛游民
帖 子:52
专家分:16
注 册:2015-6-28
收藏
得分:0 
回复 3楼 handy99999
printf("输入")
while(scanf("%d",&i)&&i!=4)
{
while(ch=getchar()!='\n')
后面的就是balabala....
你自己调试下..
}
2015-06-28 23:15
handy99999
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2015-5-25
收藏
得分:0 
忘了说我用的是VC++6.0
2015-06-28 23:15
handy99999
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2015-5-25
收藏
得分:0 
回复 4楼 家力掠
没怎么看懂您的意思。。。
2015-06-28 23:19
家力掠
Rank: 2
等 级:论坛游民
帖 子:52
专家分:16
注 册:2015-6-28
收藏
得分:0 
回复 6楼 handy99999
gcc下调试可以.就是那个地方该一下后面照抄.
2015-06-28 23:24
handy99999
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2015-5-25
收藏
得分:0 
试了你的代码,结果还是和我写的效果一样,仍然没有解决我说的问题:
以下是引用handy99999在2015-6-28 23:12:57的发言:

开始没有打如下代码时,一按字母就死循环
while (ch=getchar()!='\n')//只解决了1we格式输入的问题,但是连续输入字母还是不行
        continue;
后来想来想去加上去后,发现只要按字母显示的都一样,
比如:1ef 显示1111
再输入gfd 还是显示1111,我想正确显示是应该“错误!”
要怎么修改?
2015-06-28 23:38
家力掠
Rank: 2
等 级:论坛游民
帖 子:52
专家分:16
注 册:2015-6-28
收藏
得分:0 
对不起,还是没明白你说的意思.如果是字母的话case需要是字符的变量并且case也需要改动.不妨把题目贴上来看看能否解决.
2015-06-28 23:54
lmlm1001
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:4
帖 子:107
专家分:550
注 册:2015-3-1
收藏
得分:1 
while (ch=getchar()!='\n')
= 的优先级低于!=
ch 的值是1 或者0,而不是读取stdin的字符 并与\n对比的结果
2015-06-29 00:00
快速回复:关于Switch输入字母后死循环怎么解决?求指导
数据加载中...
 
   



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

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