//输入星期几的第一个字母来判断是星期几
//若有相同的,则继续输入第二个字母,继续判断
//环境是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;
}
}