关于C++中的for 和while循环,在线等,急用

#include<iostream>
using namespace std;
void main()
{ int i(1),a(0);
for(;i<=5;i++)
{
do{ i++;a++;}
while(i<3);
i++;
}
cout<<a<<","<<i<<endl;
}

求运算结果和过程解释,手边有答案是3和8但是不懂为什么

i的初始值为1;a为0
当i=1;满足i<=5;
所以进入for的内部,执行for的循环体。

do while循环是先执行循环体,再进行判断
所以:i++,a++ i变成2了,a变成1了。
i=2<3成立,所以再执行do里面的循环体
i++,a++ i变成3了,a变成2了。
此时i=3<3不成立,所以do循环结束运行,执行后面得i++,i变成4了。
然后在执行for中的i++;i变成5了。
再进行i<=5的判断,依然成立,所以再次执行for的循环体。
由于dowhile循环总是先执行一遍,再进行判断,所以
i++,a++ i变成6了,a变成3了。
此时判断i<3,不成立,结束dowhile循环。
执行后面i++,i变成7了。
然后在执行for中的i++;i变成8了.
此时再进行i<=5的判断,显然不成立,结束for循环。
所以最后结果为,3,8.
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-07-06
直接用vc单步调试运行,不就出来了嘛。
首先要明白的意思:for(;i<=5;i++){......}分为四个步骤:
1.初使化i= 1,
2.然后判断中间的条件成立不i<=5成立?如果成立,执行步骤3.如果不成立,直接跳到步骤7.
3.如果成立,执行大括号里面的内容;如果不成立,不执行大括号里面的内容;
4.最后执行i++。(不管大括号里面的有没有执行,都要执行这个步骤)
6.再次回到步骤2,判断条件成立否。
7.结束。追问

主要就是这个流程不明白……

第2个回答  2011-07-06
怎么了追问

就是一道题,已经写出来了