题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母。
程序分析:用情况语句比较好,如果第一个字母一样,则判断用情况语句或if语句判断第二个字母。
#include<stdio.h>
int main()
{
char i,j;
printf("请输入第一个字母:\n");
scanf("%c",&i);
getchar();//scanf("%c",&j);的问题,第二次是读入的一个换行符,而不是输入的字符,因此需要加一个getchar() 吃掉换行符
switch(i)
{
case 'm':
printf("monday\n");
break;
case 'w':
printf("wednesday\n");
break;
case 'f':
printf("friday\n");
break;
case 't':
printf("请输入下一个字母\n");
scanf("%c",&j);
if (j=='u') {printf("tuesday\n");break;}
if (j=='h') {printf("thursday\n");break;}
case 's':
printf("请输入下一个字母\n");
scanf("%c",&j);
if (j=='a') {printf("saturday\n");break;}
if (j=='u') {printf("sunday\n"); break;}
default :
printf("error\n"); break;
}
return 0;
}
结果输出:
请输入第一个字母: s 请输入下一个字母 a saturday
#include<stdio.h>
void special(char letter)
{
char letter2;
printf("请再输入星期的第二个字母(小写):");
scanf("%*[^\n]"); //在第二次输入前要清除一下输入缓冲区,因为缓冲区里还有个换行符
scanf("%*c"); //如果在这里去掉这两行语句会直接显示输入错误
scanf("%c", &letter2);
if(letter2 == 'u' && letter == 'T')
printf("今天是星期二\n");
else if(letter2 == 'u' && letter == 'S')
printf("今天是星期日\n");
else if(letter2 == 'h')
printf("今天是星期四\n");
else if(letter2 == 'a')
printf("今天是星期六\n");
else printf("输入错误\n");
}
int main ()
{
char letter;
printf("请输入星期的第一个字母(大写):");
scanf("%c", &letter);
switch(letter)
{
case 'M' : printf("今天是星期一\n"); break;
case 'T' : special('T'); break;
case 'W' : printf("今天是星期三\n"); break;
case 'F' : printf("今天是星期五\n"); break;
case 'S' : special('S'); break;
default : printf("输入错误\n");
}
return 0;
}