C语言的switch,高手解答一下.谢谢啦

来源:百度知道 编辑:UC知道 时间:2024/09/25 07:09:42
#include<stdio.h>
void main()
{
char a,b;
a=getchar();
switch (a)
{
case 'm':
printf("星期一");
break;
case 'w':
printf("星期三");
break;
case 'f':
printf("星期五");
break;
case 't':
b=getchar();
scanf("%c",&b);
if (b=='u')
printf("星期二");
else
printf("星期四");
break;

当中的case 't':我如果只有一个输入语句的话那他就不执行,要有两个时他才执行一个输入语句..这是为什么?
答案并不好呀~```我的意思是如果把b=getchar()或scanf语句两句其中一句删掉``那当我输入第一个t的时候他的输出是星期四的..直接是在case t中IF语句的ELSE部分...但当我用了两个输入语句的时候他才会提示我输入..而且只输入一个字符..也就是说两个输入语句只有一个是有效的```

#include<stdio.h>

int main(void)
{
char a,b;

a=getchar();
fflush(stdin);
switch (a)
{
case 'm': printf("星期一"); break;
case 'w': printf("星期三"); break;
case 'f': printf("星期五"); break;
case 't':
b=getchar();
fflush(stdin);

if(b=='u') printf("星期二");
else printf("星期四");
break;
}
}

加入一句 fflush(stdin);就可以了。。

定义了a和b,输入一个字符只能运行到
case 'f':
printf("星期五");
break;

输入第二个字符才能接着运行下去。愚见……

b=getchar();
scanf("%c",&b);
是这两句的问题,第一句是输入一个字符到变量b中,而第二句是把变量b以scanf形势输入的,scanf这个函数是将输入的buf的起始地址送入内存中,并以回车确认输入,所以这两句输入其实相当于把变量b输入到内存中了,建议你这两个输入写一个就行了,没必要把两个都写上,也不符合编程的规范。。。

// Note:Your choice is C++