高手看下这道C程序答案是什么

来源:百度知道 编辑:UC知道 时间:2024/05/22 03:03:18
int k,j,s;
for(k=2;k<6;k++,k++)
{ s=1;
for(j=k;j<6;j++)s+=j;
}
printf ("%d\n",m);
谢谢给个详细解说

输出结果为10

原因:
为了说明方便,先这么定义一下:
for(k=2;k<6;k++,k++) //这个外部循环,叫做外循环
for(j=k;j<6;j++) //这个内部循环,叫做内循环

其实在这里有一个小陷阱,
就是外循环的循环体里有一个s=1; 处理,
所以不论在内循环里,s累加成多少,下一次外循环执行时,s都会被设置为1,重新进入内循环

所以,我们只要考虑最后一次外循环。

对于外循环来讲,k的初始值为2,循环条件为k<6,
但是由于一次循环完毕后进行的是k++,k++处理,所以k每次累加2,
因此k的取值为2,4,6的等偶数值,
又由于循环条件为k<6,所以最后一次外循环执行时,k是等于4的

现在看k=4时,内循环的执行情况:
初始条件:k=4,s=1,j=k=4
第1次循环判断:j<6成立,执行s+=j处理,s+=j也就是s=s+j=1+4=5
第1次循环后,k=4,s=5,j=5
第2次循环判断:j<6成立,执行s+=j处理,s=s+j=5+5=10
第2次循环后,k=4,s=10,j=6
第3次循环判断:j<6不成立,退出内循环

随后进行的是k++,k++处理,k=6,外循环的k<6不成立,也退出了外循环

所以最后s的值为10