帮我讲讲循环吧,我不懂,就快考级了 急急急

来源:百度知道 编辑:UC知道 时间:2024/05/01 21:46:54
int i,j,m=0;
for(k=2;k<6;k++,k++)
{s=1;
for(j=k;j<6;j++) s+=j;
}
printf("%d\n",s) 输出结果是怎么得到的?麻烦详细讲一讲,谢谢了!!!!
第一个for后为什么是两个K++?是不是题目出错了??
谢谢各位
答案是10,不知道怎么算的啊

int i,j,m=0; /*赋初值*/
for(k=2;k<6;k++,k++) /*后面k++,k++是逗号表达式,实际K加 了2,可以看作k+=2*/
{s=1; /*赋值给s*/
for(j=k;j<6;j++) s+=j; /*第二个循环,j从k到5,s增加j.*/
}
printf("%d\n",s) /*输出s的十进制值*/

题目是问最后输出,因此就是求s的值,
先看外圈循环,一共会执行两次循环体--第一次是取k=2,第二次取4(之后由于k=6,不符合条件k<6,因此不会执行循环体就跳出);

但是需要注意的是,
循环体第一步是重赋 s 的值(不论前面循环多少次,开始新一轮时,s都为1。),因此s的最后的值是由最后一次循环的k值决定。
所以,求s的值,我们考虑k=4时就行了。

循环体:
{s=1; /*赋值给s*/
for(j=k;j<6;j++) s+=j; /*第二个循环,j从k到5,每轮s增加
j */
}

所以 s=1+4+5=10 最后的答案是10。

好象讲得比较罗嗦,明白就好。

k++有两个应该是错了,是一个二重循环,int i,j,m=0;三个初始整形变量,m被负值为0。for(k=2;k<6;k++) 第一重循环,k被负值为2 ,k的最大值不大于6,k开始连加。
{s=1;
for(j=k;j<6;j++) s+=j;
}
s被负值为1,把k的值负值给j,j不大于6 ,j连加,最后把j的值+1给s
结果可能是6789,以前学的好久不用
大概就是

答案是10
k++,k++相当于k自加2
这里是执行2个for循环
楼上的不要误人子弟。。。