| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 485 人关注过本帖
标题:嘎,一上机懵了,请教下...
只看楼主 加入收藏
FMaster
Rank: 2
等 级:论坛游民
帖 子:63
专家分:62
注 册:2010-9-1
结帖率:88.89%
收藏
 问题点数:0 回复次数:2 
嘎,一上机懵了,请教下...
先看下面的C语句...(本人手机无大括号,就用中括号来表示...)
while((ch=getchar())!='#')
[
switch(ch)
[
case 'a':printf("1");
break;
case 'b':printf("2");
break;
default:
printf("3");
break;
]
]
上面的语句,就当它没有毛病,(我们现在讨论的是这语句的BUG问题,不是语法问题)
这个语句,理论上当输入a时,输出1,输入b时,输出2,输入除a,b外的字符时,输出3,但这是理论上的......
实际上...
输入a,输出1和3,输入b,输出2和3,输入除a或b外的字符时,输出33...
为什么哪?
因为在输入时,不光输入了一个字符,而且,在敲回车确认输入时,也输入了一个回车符...
解决的办法就是想法把那个回车符输出来...但怎么输哪?但我忘了...杯具...高人给提示下...
(当然还有别的毛病,比如:输入时不一定会只输入一个子符...在这,就光讨论回车符问题...)
搜索更多相关主题的帖子: 上机 上机 
2010-09-28 10:30
cacker
该用户已被删除
收藏
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽
2010-09-28 12:07
cosdos
Rank: 9Rank: 9Rank: 9
来 自:ShangHai
等 级:蜘蛛侠
威 望:6
帖 子:2109
专家分:1385
注 册:2007-6-19
收藏
得分:0 
输入字母后。因为要按回车,而回车留在输入流中。getchar()读取了这个回车,回车并不是a和b,故输出3。

while((ch=getchar())!='#')


—>〉Sun〈<—
2010-09-28 12:12
快速回复:嘎,一上机懵了,请教下...
数据加载中...
 
   



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

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