switch case语句 里面嵌套if else语句出现错误,求指导

输入S后再输入u显示Sunday,但是输入a就提示输入错误,到底哪里出现了问题?谢谢!
没有财富值,见谅!谢谢各位
代码如下:
#include "stdio.h"

void main()
{
char in=getchar();
switch(in)
{
case 'F':printf("Friday.");break;
case 'M':printf("Monday.");break;
case 'S':printf("目前无法判断,请输入第二个字符!\n");
if(getchar()=='a')
printf("Saturday.");
else if (getchar()=='u')
printf("Sunday.");
else
printf("输入错误!");
break;
case 'T':printf("目前无法判断,请输入第二个字符!\n");
if(getchar()=='u')
printf("Tuesday.");
else if (getchar()=='h')
printf("Thursday.");
else
printf("输入错误!");
break;
case 'W':printf("Wednesday.");break;
default:printf("输入错误!");
}

}

你的case内的if中的 getchar()应该只执行一次,用变量保存,如case‘S':改为:

在switch(in)前面加个 char ch;

case 'S':printf("目前无法判断,请输入第二个字符!\n");
ch = getchar();
if(ch=='a')
printf("Saturday.");
else if (ch=='u') //错误因为你这里再用getchar()得到的就是输入的第三个字符了。
printf("Sunday.");
else
printf("输入错误!");
break;

case'T'同理。。。追问

我试过了,当输入S然后按回车的时候直接输出输入错误!都不给我输第二个字母的机会0.0

追答

额,对了,还要在ch=getchar();前面 加一句getchar()接收上次输入时输的回车符

追问

对了,谢谢,这个问题困扰我一上午了,太感谢了!

温馨提示:内容为网友见解,仅供参考
第1个回答  2014-03-26
输入1 0
第一次运行:

案例1:

开关(Y)

{0的情况下:一+ +;打破;

案例1:B + +;打破;

}

因为Y = 0,所以运行:0案例:一+ +;打破;

案例1:

开关(Y) BR /> {情况下0:+ +;打破;

案例1:B + +;打破;

}

没有中断,因此继续运行

案例2: + +,B + +;打破;

突破这里出来,所以最终的执行具有A + + A + + B + +;

要得到:

一= 1 ,B = 0

成这样:

案例1:开关(Y)

{0的情况下:一+ +;打破;

案例1:B + + ;打破;

}

突破;

案例2:A + +,B + +;打破;
案例3:A + +,B + +;追问

不理解

第2个回答  2014-03-26
在case 'S':printf("目前无法判断,请输入第二个字符!\n");case 'T':printf("目前无法判断,请输入第二个字符!\n");后边加一句getchar();就行了追问

谢谢你啊

相似回答