以下程序的输出结果是()

#include<stdio.h>main{intk=0,m=0;inti,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);}
A.k=0,m=3;B.k=0,m=5;C.k=1,m=3;D.k=1,m=5;答案是B,解析说是i=1时内层循环执行原操作,使j=3,k=0,这是怎么回事?k怎么能等于0呢

第1个回答  2013-12-07
#include<stdio.h>
main
{
int k=0,m=0;
int 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);
}

请这样写代码更清晰,内层循环for(j=0;j<3;j++)循环之后j=3,K经过三次(0-2)K++操作也等于3.
k-=j;等效于k=k-j ,所以K值位0 j为3本回答被提问者采纳