A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

[论坛提问] 关于switch语句

© 堕落天使 高级黑马   /  2015-9-8 08:28  /  1135 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文


代码如下:
#include <stdio.h>

int main(int argc, const char * argv[]) {
    char week,week1;
    printf("输入一个字母!\n");
    scanf("%c",&week);
    switch (week) {
        case 'M':
            printf("周一");
            break;
        case 'W':
            printf("周三");
            break;
        case 'F':
            printf("周五");
            break;
        case 'T':
        {   printf("再输入一个字母\n");
            scanf("%c",&week1);
            switch (week1) {
                case 'u':
                    printf("周二");
                    break;
                case 'h':
                    printf("周四");
                    break;

                default:
                    break;
        }
            }


        default:
            break;
    }


    return 0;
}

为什么输入T的时候,case T下的语句无法执行啊。

5 个回复

倒序浏览
大神,你的这个为题解决了吗?为什么输入T的时候,case T下的语句无法执行啊??求告知
回复 使用道具 举报
caseT下的并不是没有执行,而是scanf的运行原理,因为你在前面输入的时候是T和回车,那么当T被从输入流中读取出来的时候,缓冲区内还是有‘\n’这个符号存在的,scanf在输入流不为空是是直接读取不要求用户输入的,所以你输入了T敲了回车,week1的值在scanf执行后变为'\n'没有匹配的所以就运行结束了。你在week1的scanf前加入char c;while ((c = getchar()) != '\n' && c != EOF);来清空输入缓冲区就可以了。或者在scanf的时候避开回车scanf("\n%c", &week1);都是可以的

评分

参与人数 1黑马币 +2 收起 理由
堕落天使 + 2 赞一个!

查看全部评分

回复 使用道具 举报
楼上说得有道理。
回复 使用道具 举报
jsh_513 发表于 2015-9-8 09:45
大神,你的这个为题解决了吗?为什么输入T的时候,case T下的语句无法执行啊??求告知 ...

问题已经解决,我写了完整地代码
帖子的地址
switch语句实现判断星期几代码
http://bbs.itheima.com/thread-236098-1-1.html
(出处: 黑马程序员IT技术论坛)
回复 使用道具 举报
lionheartism 发表于 2015-9-8 09:50
caseT下的并不是没有执行,而是scanf的运行原理,因为你在前面输入的时候是T和回车,那么当T被从输入流中读 ...

多谢,问题已经解决
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马