题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母.不知这样做是否可以,但我无法把所有的星期数输出来,请高手试一下,在原有的框架下,适当
来源:学生作业帮助网 编辑:作业帮 时间:2024/07/04 00:50:04
![题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母.不知这样做是否可以,但我无法把所有的星期数输出来,请高手试一下,在原有的框架下,适当](/uploads/image/z/6789381-69-1.jpg?t=%E9%A2%98%E7%9B%AE%EF%BC%9A%E8%AF%B7%E8%BE%93%E5%85%A5%E6%98%9F%E6%9C%9F%E5%87%A0%E7%9A%84%E7%AC%AC%E4%B8%80%E4%B8%AA%E5%AD%97%E6%AF%8D%E6%9D%A5%E5%88%A4%E6%96%AD%E4%B8%80%E4%B8%8B%E6%98%AF%E6%98%9F%E6%9C%9F%E5%87%A0%2C%E5%A6%82%E6%9E%9C%E7%AC%AC%E4%B8%80%E4%B8%AA%E5%AD%97%E6%AF%8D%E4%B8%80%E6%A0%B7%2C%E5%88%99%E7%BB%A7%E7%BB%AD%E5%88%A4%E6%96%AD%E7%AC%AC%E4%BA%8C%E4%B8%AA%E5%AD%97%E6%AF%8D.%E4%B8%8D%E7%9F%A5%E8%BF%99%E6%A0%B7%E5%81%9A%E6%98%AF%E5%90%A6%E5%8F%AF%E4%BB%A5%2C%E4%BD%86%E6%88%91%E6%97%A0%E6%B3%95%E6%8A%8A%E6%89%80%E6%9C%89%E7%9A%84%E6%98%9F%E6%9C%9F%E6%95%B0%E8%BE%93%E5%87%BA%E6%9D%A5%2C%E8%AF%B7%E9%AB%98%E6%89%8B%E8%AF%95%E4%B8%80%E4%B8%8B%2C%E5%9C%A8%E5%8E%9F%E6%9C%89%E7%9A%84%E6%A1%86%E6%9E%B6%E4%B8%8B%2C%E9%80%82%E5%BD%93)
题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母.不知这样做是否可以,但我无法把所有的星期数输出来,请高手试一下,在原有的框架下,适当
题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母.
不知这样做是否可以,但我无法把所有的星期数输出来,请高手试一下,在原有的框架下,适当修改一下,把所有的星期数输出来.
题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母.不知这样做是否可以,但我无法把所有的星期数输出来,请高手试一下,在原有的框架下,适当
给你一个改动最少的方案:
#include
main()
{
char letter;
printf("please input the first letter of someday\n");
while((letter=getchar())!='y')
{
fflush(stdin);//这儿加一个强制键盘缓冲区清空处理,用以清空while判断里输入时最后所带的回车
switch (letter)
{
case 's':printf("please input second letter:\n");
if ((letter=getchar())=='a')printf("saturday\n");
else if (letter=='u')printf("sunday\n"); //这儿直接判断letter,而不需要再判断letter=getchar()
else printf("Data error\n");break;
case 'f':printf("friday\n");break;
case 'm':printf("monday\n");break;
case 't':printf("please input second letter:\n");
if ((letter=getchar())=='u')printf("tuesday\n");
else if (letter=='h')printf("thursday\n"); //这儿直接判断letter,而不需要再判断letter=getchar()
else printf("Data error\n");break;
case 'w':printf("wednesday\n");break;
default:printf("error\n");
}
fflush(stdin);//这儿加一个强制键盘缓冲区清空处理,用以清空case语句里输入时最后所带的回车
}
}
上面各位说的关于强制键盘缓冲区清空处理的都是对的,主要就是要注意输入数值时,回车的影响.
但是上面各位的改造都过于复杂,主要是对于if/else语句的执行范围认识有误,
对于
if ((letter=getchar())=='a')printf("saturday\n");
这个语句,即使当前输入的第2个字符不是'a',这里if判断里的letter=getchar()也会执行的,只是=='a'判断为假,所以if分支不执行.
所以其实用户输入的第2个字符已经被接收了,所以当前letter中已经存放了用户输入的第2个字符.
因此,后面的else if需要直接判断letter,而不需要再判断letter=getchar(),这样就多接收了一个字符了