求C++程序输出结果

#include<iostream>usingnamespacestd;voidmain(){inti(1),a(0);for(;i<=5;i++){do{i++;a++... #include<iostream>
using namespace std;
void main()
{inti(1),a(0);
for(;i<=5;i++)
{do{i++;
a++;
}while(i<3);
i++;}
cout<<a<<","<<i<<endl;
具体执行过程是怎样的 ? 谢谢
外部循环体:执行i++,i=7
外部循环体:结束前执行for内的i++,i=8
这个时候 I已经不满足I<=5了 还要执行I++?
展开
 我来答
百度网友872695cd9
2007-12-11 · 超过21用户采纳过TA的回答
知道答主
回答量:79
采纳率:0%
帮助的人:45.2万
展开全部
3,8
老大你最后还少一个}啊!

i=1: i=2,a=1;//for循环进入时i=1;执行do之后i=2,a=1;
i=3,a=2;//判断while i<3为真,再次执行do,i=3,a=2
i=4;//判断while i<3为假,跳出do while,执行while下面的i++
i=5//执行for循环的第三表达式i++,i=5
i=5: i=6,a=3//判断for循环条件i<=5为真,进入循环,执行do
i=7//判断while i<3为假,跳出while,执行i++
i=8 //执行for循环第三表达式i++,i=8;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
leolzd
2007-12-11 · TA获得超过477个赞
知道小有建树答主
回答量:420
采纳率:0%
帮助的人:295万
展开全部
这样看清楚点
int i(1),a(0);
for(;i<=5;i++)
{
do
{ i++;
a++;
}while(i<3);
i++;
}
cout<<a<<","<<i<<endl;

for开始循环 i=1,a=0(初始化结果)
进入do-while循环
直到i=3,a=2
推出do-while循环,继续
遇到i++, i=4,
for循环i++ --> i=5
继续循环 进入do-while循环
i=6,a=3,
退出do-while循环
遇到i++, i=7,
for循环i++--->i=8
跳出for循环
a=3 i=8
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
风骚的可乐
推荐于2017-12-16 · TA获得超过1550个赞
知道小有建树答主
回答量:412
采纳率:0%
帮助的人:609万
展开全部
补充:

注意看这三行的过程:
(1)外部循环体:执行i++,i=7
(2)外部循环体:结束前执行for内的i++,i=8
(3)满足i<=5吗?不满足,执行cout。

实际上执行到(2)的时候,就标志着一次for循环的结束,这时候程序并不知道要不要继续执行for循环,那么它需要再回到for的头部,去判断一下for的条件是不是成立。很显然,这时候iM=5不成立,于是就不继续执行for循环,跳出来,执行cout了。

而这里执行i++,是因为for循环展开代码的特性,你可能没仔细看我写的展开代码,仔细看你会发现,for循环的第三个子句(这里就是i++)是在每次循环的结束时被执行的,无论for的条件满足不满足,只要你结束了某次循环,就会执行这个语句。
那么我们看上面三行,(1)结束后,标志着1次循环的结束,这时候不是执行下一次循环,而是直接执行i++,然后再“尝试”执行下一次for循环。(能理解我这里为什么写“尝试”么?)

我们还可以换个思路来看。
假如从一开始,(1)类似的语句结束后,不执行(2)类似的语句,直接跳到下一次for循环,也就是进入for的条件判断,那么结果会怎样?
很显然,for循环的第三个子句(i++)将永远不被执行,循环将变成死循环。

下面是补充前的回答:

-----------------------------------------

结果:

3,8

代码注释:

#include<iostream>
using namespace std;
void main()
{
int i(1),a(0); // 初始化:i=1,a=0
for(;i<=5;i++) // 当i<=5满足就执行循环,每次循环结束前执行i++,一共执行5次
{
do {
i++;
a++;
} while(i<3); // 当i<3时才执行do后面的语句,一共执行3次
i++;
}
cout<<a<<","<<i<<endl; // 输出结果
}

执行过程:

// 我们称for循环为外部循环体
// 称do-while循环为内部循环体
//

初始化:i=1,a=0
满足i<=5吗?满足,进入外部循环体:
内部循环体:i=2,a=1
满足i<3吗?满足,继续执行内部循环体。
内部循环体:i=3,a=2
满足i<3吗?不满足,跳出内部循环体。
外部循环体:执行i++,i=4
外部循环体:结束前执行for内的i++,i=5
满足i<=5吗?满足,进入外部循环体:
内部循环体:i=6,a=3
满足i<3吗?不满足,跳出内部循环体。
外部循环体:执行i++,i=7
外部循环体:结束前执行for内的i++,i=8
满足i<=5吗?不满足,执行cout。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式