| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 658 人关注过本帖
标题:这个程序这样分析错了吗?
只看楼主 加入收藏
sfesdm
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2008-5-2
收藏
 问题点数:0 回复次数:4 
这个程序这样分析错了吗?

程序
#include<iostream.h>
void main()
{
int i,a(0);
for(i=1;i<=15;i++)
do{
i++;
a++;}
while(i<10);
i++;
cout<<i<<' '<<a<<endl;
}
对于这个程序,我的分析思路是:判断i的初始值小于15后,先在do语句里循环,i++之后=10,a=9,然后i++在while后面自增为11;i再在for里面的表达式三自增,变为12,此时a还是等于9;然后判断i=12<15,再执行do循环,i=13,a=10。i再在while后面自增为14,再在for里面自增为15,此时a=10。因为i=15,于是又执行do循环,i自增为16,a自增为11。然后i在while后面自增为17,再在for里自增为18,a仍然为11,程序循环结束,输出i=18,a=11。
但是实际上的结果是i=18,a=12......请教各位高手,我这样分析的这个程序到底错在哪里了?
搜索更多相关主题的帖子: include 表达式 
2008-05-03 13:46
ml232528
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:5
帖 子:367
专家分:879
注 册:2007-7-23
收藏
得分:0 
最后那个 i++ 没有在for循环里

-︻┻┳═一 ☆ 悲伤的代价就是让自己明白什么是最重要的和应该珍惜的
2008-05-03 15:30
linwu_2006
Rank: 1
等 级:新手上路
帖 子:45
专家分:0
注 册:2008-4-10
收藏
得分:0 
#include<iostream.h>
void main()
{
int i,a(0);
for(i=1;i<=15;i++)
{do{
i++;
a++;}
while(i<10);
i++; }
cout<<i<<' '<<a<<endl;
}
如果在for循环下+个{}就是你想的那种结果
而你的程序没有这个{},所以每次for只是执行do...while语句,并没有执行最下面的i++,所以结果才是i=18,a=12。
2008-05-03 15:42
sfesdm
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2008-5-2
收藏
得分:0 
原来是这样啊,开窍开窍了,呵呵,谢谢两位了!!
这题是在书上的,看课件时跟着老师的思路这样分析程序,但是太粗心了,写代码时少了三楼大哥说的那对括号。。。不过似乎是塞翁失马呢,不然还会有一段时间以为for后面的都会无条件出现在循环里面呢
2008-05-03 17:55
jianfeng
Rank: 1
等 级:新手上路
帖 子:58
专家分:0
注 册:2006-11-20
收藏
得分:0 
这个程序是很绕...你可以设一些输出...一步一步检查输出结果...
2008-05-04 15:39
快速回复:这个程序这样分析错了吗?
数据加载中...
 
   



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

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