目录
题目
问题分析
代码
测试如果
错误分析
题目
请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母。
问题分析
(1)星期日 Sunday,缩写Sun.
(2)星期一 Monday,缩写Mon.
(3)星期二 Tuesday,缩写Tues.
(4)星期三 Wednesday,缩写Wed.
(5)星期四 Thursday,缩写Thur. / Thurs.
(6)星期五 Friday,缩写Fri.
(7)星期六 Saturday,缩写Sat.
可以发现最多只需要判断两个字母就可以判断出是星期几了。所以用 switch 分支语句来进行,对于第一个字母相同的,我们只需要在该分支下用 if 语句进行判断第二个字母的判断。
代码
#include<stdio.h>
int main()
{
char L1,L2;
printf("请输入第一个字母:\n");
L1 = getchar();
getchar();
switch (L1)
{
case 'S':
printf("请输入第二个字母:\n");
L2 = getchar();
if (L2 == 'u')
{
printf("星期日 Sunday\n");
break;
}
else if (L2 == 'a')
{
printf("星期六 Saturday\n");
break;
}
else
{
printf("输入错误\n");
break;
}
case 'M':
printf("星期一 Monday\n");
break;
case 'T':
printf("请输入第二个字母:\n");
L2 = getchar();
if (L2 == 'u')
{
printf("星期二 Tuesday\n");
break;
}
else if (L2 == 'h')
{
printf("星期四 Thursday\n");
break;
}
else
{
printf("输入错误\n");
break;
}
case 'W':
printf("星期三 Wednesday\n");
break;
case 'F':
printf("星期五 Friday\n");
break;
default:
printf("输入错误\n");
break;
}
return 0;
}
测试如果
错误分析
在写代码的过程中,我第一次写得代码是在switch语句外加了一个while循环,想着可以在控制台中可以进行多次测试输入不同的字母判断星期几,但是运行结果一直与我预期的不一致,后来我发现是因为在while循环中我可以输入第一个字母但是第二个字母输入后我再按回车就会显示输入错误,是因为getchar一次只能输入一个字符,所以不管我输入什么最后一句的default语句都会执行。最后代码运行就是错误的。