题目
请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续 判断第二个字母.
#include
main()
{char i,j;
printf("please enter the first letter ");
scanf("%c",&i);
switch(i)
{case 'm':printf("monday\n"); break;
case 'w':printf("wednesday\n"); break;
case 'f':printf("friday\n"); break;
case 't':printf("please enter the next letter\n");
\x09 scanf("%c",&j);
\x09\x09 if (j=='u') printf("tuesday\n");
\x09\x09 if (j=='h') printf("thursday\n");break;
\x09\x09
case 's':printf("please enter the next letter\n");
\x09 scanf("%c",&j);
\x09\x09 if (j=='a') printf("saturday\n");
\x09\x09 if (j=='u') printf("sunday\n"); break;
default :printf("error\n"); break;
}
}
在要判断第二个letter时,出现了错误,无法判断了.
#include
main()
{char i,j;
printf("please enter the first letter ");
scanf("%c",&i);
switch(i)
{case 'm':printf("monday\n"); break;
case 'w':printf("wednesday\n"); break;
case 'f':printf("friday\n"); break;
case 't':printf("please enter the next letter\n");
\x09 scanf("%c",&j);
\x09\x09 if (j=='u') printf("tuesday\n");
\x09\x09 if (j=='h') printf("thursday\n");break;
\x09\x09
case 's':printf("please enter the next letter\n");
\x09 scanf("%c",&j);
\x09\x09 if (j=='a') printf("saturday\n");
\x09\x09 if (j=='u') printf("sunday\n"); break;
default :printf("error\n"); break;
}
}
在要判断第二个letter时,出现了错误,无法判断了.
提问时间:2021-03-02
答案
给你一个改动最少的方案:
#include<stdio.h>
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(),这样就多接收了一个字符了
#include<stdio.h>
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(),这样就多接收了一个字符了
举一反三
已知函数f(x)=x,g(x)=alnx,a∈R.若曲线y=f(x)与曲线y=g(x)相交,且在交点处有相同的切线,求a的值和该切线方程.
我想写一篇关于奥巴马的演讲的文章,写哪一篇好呢?为什么好
奥巴马演讲不用看稿子.为什么中国领导演讲要看?
想找英语初三上学期的首字母填空练习……
英语翻译
最新试题
热门考点
- 1若a为锐角,sina -cosa =1/2,则sin(a)^3-cos(a)^3的值等于_____
- 2函数Y=loga(1-2x)在定义域上单调递增,求a取值范围?
- 3三角形ABC,角A=2角b=3角c,则角A,b,c,分别等于多少?AC等于2根号3,BC等于几?三角形的面积是多少?
- 4一个数除以4加上3后等于这个数除已5加上4.求这个数是几?l列式计算
- 5文明伴我成长作文.速度~~~!
- 6《紫藤萝瀑布》文章结尾说:“有的知识精神的宁静和生的喜悦.”这句话的含义
- 7八阵图这首古诗的意思是什么要短要快!
- 8一批稻谷存放在两个粮食仓库中,甲库所存的稻谷的质量是乙仓库的八分之五,后来从甲仓库取出42吨,从乙仓库取出20分之9,这时两仓库所存的稻谷的质量相等,乙仓库原来存稻谷多少吨?
- 9x+4y-3=0 2^x 16^y
- 10sell sth.________a good price 用with 还是for?