C语言中的FOR循环

来源:百度知道 编辑:UC知道 时间:2024/05/12 18:51:56
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,我想问的是,循环过程中,s=1不是附值运算吗?为什么不起作用

起作用了!你的k循环,每次k都是+2的,所以
k的循环执行了2次,k=2 和 k=4;
每次s都赋值为1,所以直接看第二次:
s= 1, j=4
所以第二次j的循环执行2次,分别是j=4 和 j=5
所以最终s = 1 + 4 + 5
答案为10 !

每次循环改变s的值后 由于进入内层循环之前又重新对s赋值 所以最后结果只跟最后一次循环有关
s=1 j=k=4 s=s+k=5
j=5 s=s+k=10
此时j=6 不满足条件 退出内循环
k=6 不满足条件 退出外循环
s=10

起作用了,注意到k++,k++是每次加2,符合条件是k有2,4,正因为起作用了,所以只有k = 4时运算结果:
s = 1;
for(j=4; j<6; j++) s+=j;
也就是:
s = 1
s = 4 + s = 5 (j = 4)
s = 5 + s = 10 (j = 5)

int k,j,s;
for(k=2;k<6;k++,k++)
{
s=1;
for(j=k;j<6;j++)s+=j;//地二次开始的时候j=6,k=4,由于j=k=4,所以s+=j
//做2次,就是s+=4,s+=5,所以1+9=10;
}
printf("%d\n",s);

k每次循环后加2,所以最后一次循环时k=4
此次先是s=1,然后j从4到5循环,执行了s+=4和s+=5,s变成了10

因为有两个K++,所以k的取值为2和4,因为有s=1;语句所以只有最后一次k=4时起作用,这是第二个循环里j的取值为4和5,所以执行两次s+=j;第一次s=1+4=5,第二次s=5+5=10。
s=1是起了作用的