一个C语言的问题,我觉得很奇怪:下面是代码

#include<stdio.h>#include<conio.h>intmain(){charletter;printf("pleaseinputthefirstlet... #include <stdio.h>
#include <conio.h>
int main()
{
char letter;
printf("please input the first letter of someday\n");
while ((letter=getch())!='Y')/*当所按字母为Y 时才结束*/
{
switch (letter)
{
case 'S':
printf("please input second letter\n");
if((letter=getch())=='a')
printf("saturday\n");
else if ((letter=getch())=='u')//发现一个奇怪的现象,想输出sunday时,第二个字母u必须要按两下才能输出来,同理,输出thursday也是,第二个字母需要按两下,但输出saturday和sunday都只按一下
printf("sunday\n");
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=getch())=='u')
printf("tuesday\n");
else if ((letter=getch())=='h')
printf("thursday\n");
else printf("data error\n");
break;
case 'W':
printf("wednesday\n");break;
default:
printf("data error\n");
}
}
getch();
}
我想不通为什么,是与getch()的原理有关吗?
展开
 我来答
donyAC
2011-02-11 · TA获得超过121个赞
知道答主
回答量:45
采纳率:0%
帮助的人:48.9万
展开全部
letter=getch() 的意思是从键盘获取一个按键,将其赋给letter。
即每出现一个getch() ,系统都要等待直到键盘的一个有效键被按下。如果要程序进入到
printf("sunday\n");
这里。你需要第一个按键只能按S,第二个按键不能按a(防止进入saturday),第三个按键必须是u,进入到printf("sunday\n");

总之,你程序设计和你的本意有出入,再想想吧

参考资料: ogin-mem-pass

flowerteamaker
2011-02-11 · TA获得超过626个赞
知道小有建树答主
回答量:425
采纳率:0%
帮助的人:350万
展开全部
不是getch()的问题,
if((letter=getch())=='a')
printf("saturday\n");
else if ((letter=getch())=='u')
输入只要不是'a',就会运行第三行,就再次运行letter=getch(),也就是要连续输入两次
修改办法:将第三行改为else if (letter=='u')
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式