| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 420 人关注过本帖
标题:一个关于case 匹配的问题,求指点!
只看楼主 加入收藏
tobery
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2012-9-16
收藏
 问题点数:0 回复次数:4 
一个关于case 匹配的问题,求指点!
    int a;
    bool test=0;
    do
    {
        scanf("%d",&a);
        switch(a)
        {
        case 1:printf("a=%d\n",a); test=1; break;
        case 2:printf("a=%d\n",a); test=1; break;
        case 3:printf("a=%d\n",a); test=1; break;
        case 4:printf("a=%d\n",a); test=1; break;
        default: printf("输入错误,请重新输入!\n"); break;
        }
    } while (test==0);
    输入5,6,7,8这类的数会提示输入错误,请重新输入,然后就回到重新输入那里等待输入没错,但如果输入a,b,c,F,G,这类的就会无限打印"输入错误,请重新输入!"这是为什么,数字和字符不都走得是default吗,然后回到输入阿?
搜索更多相关主题的帖子: default 
2012-09-16 19:39
爱闹的娃
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:3
帖 子:265
专家分:975
注 册:2011-10-23
收藏
得分:0 
你在scanf()后面加一个getchar(),就ok了............输入字符a==之类的时候,那是因为在循环外面初始化test=0,当输入的类型有误时,scanf()关闭,但是缓冲区一直没清空,不能输入,test就一直=0,所以就循环输出default这一句.....
2012-09-16 21:21
tobery
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2012-9-16
收藏
得分:0 
回复 2楼 爱闹的娃
谢谢了,找了好久都找不出原因呢,C++的基础还是不行啊,要多学习了~
2012-09-17 23:13
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:0 
以下是引用tobery在2012-9-17 23:13:28的发言:

谢谢了,找了好久都找不出原因呢,C++的基础还是不行啊,要多学习了~

嗯。对于初学者来说确实是一个比较隐晦的问题了。IO 是个比较复杂的主题,错误处理对于初学者来说也比较复杂。
c++ 里一般主张用 cin >> a 和 cout << "string" << endl; 这样的写法。虽然熟悉 c 的人可能会觉得比较麻烦。另外即使这么写,该出错的地方还是会出错。
2012-09-18 18:53
chongzijiazu
Rank: 1
等 级:新手上路
帖 子:2
专家分:3
注 册:2012-9-19
收藏
得分:0 
IO问题挺有趣的
2012-09-19 10:45
快速回复:一个关于case 匹配的问题,求指点!
数据加载中...
 
   



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

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