| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2625 人关注过本帖
标题:关于Switch输入字母后死循环怎么解决?求指导
只看楼主 加入收藏
handy99999
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2015-5-25
收藏
得分:0 
我的意思是当输入字母时;
首先不会死循环,
第二 输入字母时,结果应该到default 分支去。就是输出"错误",而不是重复之前的结果。
比如:1ef 输出显示1111
再输入gfd 还是输出显示1111
再输入其他字母仍然是输出1111
这就不对了呀
正确显示是应该输出“错误!
我们用代码
while (ch=getchar()!='\n')
        continue;
只是屏蔽了字母,在缓冲中还是保留了上次输入的值。
没有题目,是我在练习是发现的问题
2015-06-29 00:11
handy99999
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2015-5-25
收藏
得分:0 
while ((ch=getchar())!= '\n')
        continue;
是的。忘记多加一个括号
2015-06-29 00:17
家力掠
Rank: 2
等 级:论坛游民
帖 子:52
专家分:16
注 册:2015-6-28
收藏
得分:0 
回复 12楼 handy99999
因为switch(i)中的变量是整型,所以你输入字母的话不会进入switch语句中.
所以你想实现的应该要在外层嵌套一个if else语句.
如果使用强制类型转换的话个人感觉无法识别数字和字母并且int转换为char类型可能出现问题.
2015-06-29 00:39
hjx1120
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:李掌柜
等 级:贵宾
威 望:41
帖 子:1314
专家分:6927
注 册:2008-1-3
收藏
得分:1 
解决字母问题
#include<stdio.h>
int main(void)
{
    char i;
    while(1)
    {
        printf("输入:");
        scanf("%c",&i);//%c和%d都可以
        while (getchar()!='\n')
            continue;
        switch (i)
        {
            case '1': printf("1111\n");
            break;
            case '2': printf("2222\n");
            break;
            case '3': printf("3333\n");
            break;
            case '4': return 0;
            default : printf("错误!\n");
            break;
        }
    }
    return 0;
}

[ 本帖最后由 hjx1120 于 2015-6-29 00:58 编辑 ]
2015-06-29 00:49
快速回复:关于Switch输入字母后死循环怎么解决?求指导
数据加载中...
 
   



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

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