这个C语言逻辑错误怎么改?

//输入星期几的第一个字母来判断是星期几
//若有相同的,则继续输入第二个字母,继续判断
//环境是mac OS下的Xcode
//这个环境没有conio.h头文件,所以不能用getch和getche,所以只能用getchar

/*
Sunday 星期日
Monday 星期一
Tuesday 星期二
Wednesday 星期三
Thursday 星期四
Friday 星期五
Saturday 星期六
*/

#include
int main(){
printf("请输入:");//输入之后按回车
char one;
scanf("%c", &one);
switch(one){
case 's':
printf("请输入第二个字母\n");//输入之后按回车
if(getchar() == 'a'){
printf("星期六\n");
}
else if (getchar() == 'u'){
printf("星期日\n");
}
else{
printf("非法输入!\n");
}
break;
case 'm':printf("星期一\n");break;
case 't':printf("请输入第二个字母\n");//输入之后按回车
if(getchar() == 'u'){
printf("星期二\n");
}
else if (getchar() == 'h'){
printf("星期四\n");
}
else{
printf("非法输入!\n");
}
break;
case 'w':printf("星期三\n");break;
case 'f':printf("星期五\n");break;
default:printf("非法输入!");
}
return 0;
}
/*
这是结果。很明显不应该显示非法输入啊,应该是星期六才对啊。
请输入:s
请输入第二个字母
a
非法输入!
Program ended with exit code: 0


我又试了一下,这样是对的,为什么啊?
请输入:s
请输入第二个字母
u
星期日
Program ended with exit code: 0
*/
后来我
把第24行的 ‘a’ 改为 'u'
把第25行的 星期六 改为 星期日
把第27行的 ‘u’ 改为 'a'
把第28行的 星期日 改为 星期六
这么修改之后,输入s然后输入a,结果是对的!
但是输入s然后输入u结果就不对了,显示非法输入!
*/
//求大神救救我吧~
图片说明

在进入case之后,printf之前加一个char变量,然后用getchar将字符读给这个新的char变量,但不要对这个变量做其他操作。

应该是getcar()读取的问题,24行设个断点看看读到了什么东西就知道怎么改了

图片说明

小哥,你这第一个输入s后,按回车键结束输入的,在getchar()时它先接收的是你上次结束时的\n字符,故在正式接收字符之前需要先处理你上次结束时的\n字符,下面给你代码
#include

int main()
{
printf("请输入:\n");
char one;
scanf("%c",&one);

switch (one) {
    case 's':
        printf("请输入第二个字母\n");
        getchar();                  // 处理你上次结束标记的\n字符
        if (getchar() == 'a') {
            printf("星期六");
        }else if(getchar() == 'u'){
            printf("星期日\n");
        }else{
            printf("非法输入\n");
        }
        break;

    case 'm':
        printf("星期一\n");
        break;

    case 't':
        getchar();// 处理你上次结束标记的\n字符
        printf("请输入第二个字母\n");
        if (getchar() == 'u') {
            printf("星期二\n");
        }else if(getchar() == 'h'){
            printf("星期四\n");
        }{
            printf("非法输入\n");
        }

        break;
    case 'w':

        printf("星期三\n");
        break;

    case 'f':
        printf("星期五\n");
        break;

    default:
        printf("非法输入\n");
        break;
}

}