请C高手为我解答以下问题,并附属解题思路和过程,谢谢!!~

来源:百度知道 编辑:UC知道 时间:2024/06/13 15:42:23
有如下程序段,请问输出结果是: {int k,j,s; for(k=2;k<6;k++,k++) {s=1; for(j=k;j<6;j++) s+=j;} printf("%d\n",s);}

输出结果是:10
不要写一行看,太别扭
int k,j,s;
for(k=2;k<6;k++,k++)
{
s=1;
for(j=k;j<6;j++)
s+=j;
}
printf("%d\n",s);
}
这样看就比较清楚了,
每次内循环,也就是
for(j=k;j<6;j++)
s+=j;
进行之前,s都被赋予了初值1
因此在外层循环输出的s的值便是最后一次做内层循环后s的值

那么什么条件下最后一次做内层循环呢?
通过for(k=2;k<6;k++,k++)
可以看出,外层循环每进行一次k都要加2,而内层循环执行条件是j=k;j<6,即k<6
因此当k=4时,内层循环执行,k=6时内层循环就不执行了,
所以输出的s值应当是k=4时执行内层循环计算的结果。

那么s=1进入内层循环,
首先j=4,s+=4,s的值变为5
循环一次,j=5,s+=5,s的值变为10
j=6时内层循环终止。

综上分析,输出的s值为10

3
4
5
6
4
5
6
5
6
6
都两年没碰C了,不知道对不对....居然两重循环....