求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++? 展开
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++? 展开
3个回答
展开全部
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;
老大你最后还少一个}啊!
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;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这样看清楚点
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
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
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
补充:
注意看这三行的过程:
(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)外部循环体:执行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。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询