| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 823 人关注过本帖
标题:[求助]编译通过,但输入第二个字母无显示!
只看楼主 加入收藏
soft_wind
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:1430
专家分:0
注 册:2006-4-5
收藏
得分:0 
上面的程序仍是漏洞百出
只用了个getchar();就想接收所有的回车了吗?

对不礼貌的女生收钱......
2006-08-11 19:42
喝茶的小k
Rank: 1
等 级:新手上路
帖 子:87
专家分:0
注 册:2006-7-27
收藏
得分:0 

在c语言中输入是以回车作为结束而您用getchar()接收字符,前面刚好有个回车这个回车就背getchar()接收了,接下来在您的判断语句中就回出现错误;因此您在输入下一个字符的前应该再用getchar()接受前面的回车(相当于把回车这个字符清除了)

我以前也犯这样的错,这也是我再这个论坛里晓的的,

改过后的:

#include <stdio.h>
void main()
{
char letter ;
printf("please input the first letter of someday:\n");
/*当所按字母为Y时才结束*/
while((letter=getchar())!='Y')
{
switch(letter)
{
case 'S' :
getchar(); //清除回车,后面还有这种情况
printf("please input second letter:\n");
if((letter=getchar())=='a')
{
printf("saturday\n");
getchar();
}
else if((letter=getchar())=='u')
printf("sunday\n");
else printf("data error\n");
break ;
case 'F' :
getchar();
printf("friday\n");
break ;
case 'M' :
getchar();
printf("monday\n");
break ;
case 'T' :
getchar();
printf("please input second letter:\n");
if((letter=getchar())=='u')
{
printf("tuesday\n");
getchar();
}
else if((letter=getchar())=='h')
printf("thursday\n");
else printf("data error\n");
break ;
case 'W' :
getchar();
printf("wednesday\n");
break ;
default :
printf("data error\n");
}
}
}


2006-08-11 21:23
快速回复:[求助]编译通过,但输入第二个字母无显示!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018195 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved