C语言 (为什么是输出为10)

#include <stdio.h>
main()
{ 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);
}

第一次循环:k=2,s=1,j=k固j=2,其中第二层for语句执行的结果是1+2+3+4+5=15,此时s的值为15;
第二次循环:在第一层for循环语句中k++了两次,所以此时k的值为4,s又重新进行了复制,所以s的值为1,j=k固j=4,其中第二层for语句执行的结果是1+4+5=10,此时s的值为10;
第三次循环:此时k又加加了两次,此时k的值为6,与k<6的条件不符,固循环停止,跳出循环,执行接下来的语句printf("%d\n",s);
此时执行输出语句,输出s的值为10,所以输出的是10~
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-04-20
两次循环啊,而且有两个k++,都起作用了,不信可以去掉一个k++试试就知道了
第2个回答  2010-04-20
因为在外层for循环中,每次循环开始s都赋值为1,所以只用看最后一次外循环,此时k=4,s=1,然后进入内层for循环,j初始化为4,所以结果为1+4+5=10。
第3个回答  2010-04-20
第1次循环的时候:
k=2,s=15

但是在第2次循环时:
k=4,s的值又被赋值为1,所以嵌套在里面的for循环中s=1+4+5=10
相似回答