黑马程序员技术交流社区
标题: 关于switch语句 [打印本页]
作者: 堕落天使 时间: 2015-9-8 08:28
标题: 关于switch语句
代码如下:#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下的语句无法执行啊。
作者: jsh_513 时间: 2015-9-8 09:45
大神,你的这个为题解决了吗?为什么输入T的时候,case T下的语句无法执行啊??求告知
作者: lionheartism 时间: 2015-9-8 09:50
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);都是可以的
作者: aidan 时间: 2015-9-8 10:22
楼上说得有道理。
作者: 堕落天使 时间: 2015-9-8 12:14
问题已经解决,我写了完整地代码
帖子的地址
switch语句实现判断星期几代码
http://bbs.itheima.com/thread-236098-1-1.html
(出处: 黑马程序员IT技术论坛)
作者: 堕落天使 时间: 2015-9-8 12:15
多谢,问题已经解决
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |