| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 483 人关注过本帖
标题:今天又遇到几题搞不懂
只看楼主 加入收藏
whoaiwo310
Rank: 1
等 级:新手上路
帖 子:36
专家分:0
注 册:2010-3-16
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:5 
今天又遇到几题搞不懂
1.若输入字符串“abcde"<回车>,则以下while循环体执行次数为多少次。while ((ch=getchar()=='e') printf("*");
答案:0次(个人认为1次)
2.main()
{unsigned short a=65536;int b;printf("%d\n",b=a);}
结果0
3.t=0;
while (printf("*"))
{t++;if(t<3) break;
}下面描述正确的是 A其中循环控制表达式与0等价 B其中循环控制表达式与‘0’等价
答案选B  
以上3题是我今天做题有点迷惑的几题 希望有高人讲解下 !
2010-03-23 23:01
whoaiwo310
Rank: 1
等 级:新手上路
帖 子:36
专家分:0
注 册:2010-3-16
收藏
得分:0 
我自己顶个,怎么没人讲解下 ,讲了我结贴啊
2010-03-23 23:13
ldg628
Rank: 12Rank: 12Rank: 12
等 级:火箭侠
威 望:3
帖 子:526
专家分:3036
注 册:2009-6-23
收藏
得分:15 
1.当getchar接受到第一个字符时是'a',它不等于'e',条件为假,不进入循环,所以为0次
2.short 是两个字节, 65536(0x10000)超过了它的范围,截短(0x0000),所以为0
3.printf("*")永远返回1,循环表达式值为真,当然不可能与0等价了,但是'0'的ASCII码不等于0,所以也为真
2010-03-23 23:28
whoaiwo310
Rank: 1
等 级:新手上路
帖 子:36
专家分:0
注 册:2010-3-16
收藏
得分:0 
第2题和第3题都懂了 就第1题有点疑问 就是ch=getchar()它是一个一个字符接收,当a不符合的时候在接受b,一直碰到'\0'就不接受字符了  为什么在这题中接受了字符a  当不满足情况时就不接收b了呢
2010-03-23 23:40
ldg628
Rank: 12Rank: 12Rank: 12
等 级:火箭侠
威 望:3
帖 子:526
专家分:3036
注 册:2009-6-23
收藏
得分:0 
while ((ch=getchar())=='e')
    printf("*");
这是一个语句,它是按顺序执行的,当ch = 'a'时,它不等于 'e',条件为假,不执行printf,也不再执行它的条件表达式了,也就是不再调用getchar了
2010-03-23 23:52
apull
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:三体星系
等 级:版主
威 望:216
帖 子:1489
专家分:9082
注 册:2010-3-16
收藏
得分:5 
((ch=getchar()=='e')展开就是
(ch=getchar()) == 'e'也就是先执行ch=getchar(),获取一个字符,然后跟'e'比较,也就是判断ch=='e',如果结果为真,进入循环,否则跳过循环。所以结果是0次。
2010-03-24 10:37
快速回复:今天又遇到几题搞不懂
数据加载中...
 
   



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

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