C语言简单循环问题,求解释每一步

int k=0,m=0,i,j;
for (i=0; i<2; i++)
{
for (j=0; j<3; j++)
k++ ;
k-=j ;
}
m = i+j ;
printf("k=%d,m=%d",k,m) ;

int k=0,m=0,i,j;//定义变量及赋初值
for (i=0; i<2; i++)//for循环,i初值0,跑2次
{
for (j=0; j<3; j++)//for循环,j初值0,跑3次
k++ ;//最后k=3
k-=j ;//由于此时j=3,k=0
}
m = i+j ;//i=2,j=3,m=5
printf("k=%d,m=%d",k,m) ;//输出k=0,m=5追问

for (i=0; i<2; i++)//for循环,i初值0,跑2次
第一次,j=3,k=0;
第二次 k-=j ;
跑两次K的值不是变成-3吗?

追答

for (i=0; i<2; i++)//for循环,i初值0,跑2次
第一次,j=3,k=0;
第二次也是一样啊,j重新赋值为0,k=0
最后结果还是j=3,k=3; 然后k-=j;k就变成0了

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-01-17
int k=0,m=0,i,j; //申明int变量k,m,i,j,并给m,k赋值为0
for (i=0; i<2; i++) //循环,给i初始值为0,;当i的值小于2的时候跳出循环,每次循环i值加1
{
for (j=0; j<3; j++) //循环,给j初始值为0,;当j的值小于3的时候跳出循环,每次循环i值加1
k++ ; //k=k+1;

k-=j ; //k=k-j;
}
m = i+j ; //把i的值和j的值相加之后赋给m
printf("k=%d,m=%d",k,m) //输出k,m的值 k=2,m=5
第2个回答  2013-01-17
不知道你有没有写错,如果按照你这里,我帮你对齐应该是这样的:int k=0,m=0,i,j;
for (i=0; i<2; i++)
{
for (j=0; j<3; j++)
k++;

k-=j; }
m = i+j;printf("k=%d,m=%d",k,m);
那么这个执行顺序就很容易看了。
首先i=0;判断i<2;成立,进入循环体。
进入循环体之后又先执行了一个循环for (j=0; j<3; j++)
这个会将k++执行3次,然后执行"k -= j"一次,然后i++
上面的步骤重复,直到i<2不成立。外层循环结束。开始打印。
第3个回答  2013-01-17
楼上上上正解
相似回答