c语言,,这一题的运行结果是多少,为什么,求解释

如题所述

程序运行的结果是10.解释如下:程序第一次执行外层的for循环时k=2,满足k<6的条件,所以执行s=1;这一句将s的值赋为1。此时j=k=2满足j<6的条件,执行s+=j;(这句等价于s=s+j;)这一句
执行结果s=s+j=1+2=3。然后执行j++,j的值变为3,满足j<6的条件。再次重复内层for循环执行s+=j;
这一句;s=3+3=6让后执行j++,j的值变为4,满足j<6的条件,继续重复执行s+=j;直到j++将j的值变为6,不满足j<6的条件,跳出内层循环。此时s的值应该是s=1+2+3+4+5=15.退出内层循环后执行外层循环for(k=2;k<6;k++,k++)中的k++,k++即按从左到右的执行顺序,把k进行两次加1。把k值变为4.满足k<6,执行s=1;s的值从15变成了1.然后进入内层for循环此时执行j=k就把j值变为4,进行内层循环会循环两次即j=4和j=5. s+=j被执行两次即s=1+4=5;s=5+5=10;在执行两次后j=6不满足循环条件退出内层循环,执行k++,k++。 k的值由4变成6.不满足K<6的条件不在进入循环。然后执行循环后的printf(”%d\n",s);显然因为没有在进入外层for循环,所以s的值依旧还是上次进入循环执行后s+=j;这一句被内层循环执行两次后(s=1+4=5;s=5+5=10;)的值10。
语言表达能力有点弱,希望对你有帮助。我也是初学c。以后多交流~~
温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-03-13
for(k=2; k<6; k++,k++)
{
    s=1;  //每次循环开始s都会重新赋值为1,所以只计算最后一个循环就可以了
    for(j=k; j<6; j++)
        s+=j;
}
k=2,会进入第二次循环
k=4,会进入第二次循环,这是最后一次循环,只计算这个
k=6,不会进入第一次循环


for(j=4; j<6; j++)
 s+=k;
 
所以s = 1 + 4 + 5 = 10

本回答被网友采纳
相似回答