c++ 两个for循环 能否有大神解释一下for语句的意思 我不明白结果10是怎么来的

#include <iostream>
using namespace std;
int main()
{
int s ;
for (int k = 2;k<6;k+=2)
{
s=1;
for(int j = k;j<6;j++) s+=j;
}
cout<< s <<endl;
}

for(A;B;C){D}

for循环的主要部分分为四个部分,也就是上面列举的A,B,C,D,中间用分号隔开。

    A充当一个初始化的作用,里面写的语句会在for循环的开始使用,如果使用的是定义的,比如您的例子中的int k,那么这个k就只在这个for循环中使用,在for循环外就无法调用到这个变量了。(c++中可以这样用,c就不行了)

    B的主要作用是一个表达式,B的返回值为1的话就会接着执行这个for循环,否则会结束。

    C的作用是执行一个语句,这个语句会在每次for循环的末尾执行一次。

    D的作用也是语句,每次循环会执行一次。

其中执行顺序大概就是这样的:

    先执行A,然后判断B,如果B的返回值为1,执行D,然后执行C。这算是循环了一次,然后再判断B,若返回值为1,执行D,然后执行C.....然后某次发现B的返回值为0,不再循环退出。


其中A,B,C语句都不能带分号,中间隔开的分号不能省。D可以像在for循环外面一样使用。

而且其中A,B,C,D都可以省略。

省略A表示不需要初始化。

省略B表示没有终止条件。

省略C表示循环末尾没有操作。

省略D表示循环过程中没有操作。

但是注意的是,即使省略了A,B,C中间的分号也不能省!


另外还有就是循环结构都可以使用的语句:

continue

break

都是仍然可以在for中使用的。


那么根据上面描述的执行顺序,这个for循环就可以解释了。

for(int k=2;k<6;k+=2){
    s=1;
    for(int j=k;j<6;j++)
        s+=j;
}

按照上面的来,先看最外面一层的for循环。

A: int k=2

B: k<6

C: k+=2

D: s=1;

    for(...);


那么就是先执行int k=2,然后判断k是否小于6,发现k<6是true,则执行s=1和第二个for,然后再执行k+=2,使得k=k+2=4,发现k<6仍然是true,接着执行s=1和第二个for,然后再执行k+=2,使得k=k+2=6,此时k<6的返回值是false了,于是退出循环。


那么要看输出的s,就要回到刚才的循环中的D部分去。

这又是一个for循环。因为每次都将s=1了,所以可以只看第二次k=4的时候的循环。

A: int j=k;

B: j<6

C: j++

D: s+=j;

那么先让j=k=4,然后判断j<6为true,于是执行s+=j,s=1+4=5,然后执行j++,j=5,然后判断j<6,仍然等于true,于是接着执行s=s+j=5+5=10,再执行j++使得j=6,发现j<6返回值为false,于是退出循环,输出s的值为10.

温馨提示:答案为网友推荐,仅供参考
第1个回答  2016-07-19
哟,直接学C++啊……
这是个双重循环,其中外循环执行了2次,内循环执行了6次
第一次,k=2的时候j=k=2,并且将1赋给s。
然后,执行内循环,j从2~6,执行4次s+=j。
第二次,k=4的时候j=4,刚才计算的s的值没有意义,又被重新置为1
然后,执行内循环,j从4~6,执行2次s+=j。
即:
j=4,s=1+4=5;
j=5,s=5+5=10;
所以最终结果是10 o(^▽^)o。