| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 759 人关注过本帖
标题:[讨论]一些小程序的结果(急!)
取消只看楼主 加入收藏
淡蓝光点
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2005-11-18
收藏
 问题点数:0 回复次数:2 
[讨论]一些小程序的结果(急!)
之所以说“急”是因为明天就考试了,可是今天居然还有想不通的地方。汗颜。希望大家帮帮忙,不胜感激。。。

第一题:
main()
{ int x=10,y=10,i;
for( i=0; x>8; y=++i)
printf("%d %d\n",x--,y);
}

这道题的运行结果是:10 109 1 其实结果是两组:第一组是10 10;第二组是:9 1。可是结果为什么是这个呢?我不明白的是for语句中的x>8这个表达式,for语句不是应该当x>8这个式子不成立的时候才退出循环执行打印吗?那么x是不变的,也就是说x>8始终都成立,这不就是死循环了么?为什么还能得出结果呢?

第二题:(其实这是一个很典型的题,可是我。。。。不说了,看题吧)

#indude(stdio.h)

main()

{ char c='A'; /*这里应该等于65*/

if('0'<=c<='9') /*这里应该是“48<=65<=57没错吧”*/

printf("YES"); /*可是,555,居然这个是输出结果??*/

else

printf(”NO”)"

}
win-TC和TC运行结果都是YES,老师给的答案也是YES。。可是我就是整不明白啊,'0'<=c<='9'明明不成立的不是么?还望大家狠狠的批评我啊,到底哪里错了呢。。。。>_< #

谢谢谢谢你们!!!

搜索更多相关主题的帖子: 结果 
2006-01-14 18:47
淡蓝光点
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2005-11-18
收藏
得分:0 
谢谢回答!

if('0'<=c<='9'),卷子上就是这么写地呀,我没写错呢。。

main()
{
int x=10,y=10,i;
for( i=0; x>8; y=++i)
printf("%d %d\n",x--,y);
}


第一次打印:x=10(我懂了),而y,我怎么觉得这时候已经变成++i也就是等于0+2=2?
关于for语句是我记错了,它是每次判断表达式为真都执行一次循环体,直到为假的时候程序结束是吧,可是x>8永远成立,这程序为什么循环两次就停下来了呢?当第二次和第三次循环的时候表达式依然是x>8呀。。。5555
2006-01-14 19:26
淡蓝光点
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2005-11-18
收藏
得分:0 
呵呵,我K书已经K晕了。明天考试去,有点信心了。多谢大家呀,非常感谢!

第二题,我忽然记起来了,老师好像是说过类似“a<b<c”这样的式子在C语言中是不识别的,可是老师似乎没说过这样就等于执行a<b而跳过b<c呀。。莫非真的是故意出这样的题,考试真黑啊!!!

第一题,我明白了,谢谢你,还有一点,就是程序不是从上到下执行的么,为什么第一次打印的时候y没有先变成1呢?而是执行一次打印后才从for语句里转换?
2006-01-15 00:40
快速回复:[讨论]一些小程序的结果(急!)
数据加载中...
 
   



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

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