C语问题,答案是B,麻烦解释一下。。。 if (j%2) continue;这里是有余数还是没有余数返回继续循环?

25、以下程序的输出结果是 ( )
main()
{int i,j,x=0;
for (i=0;i<2;i++)
{x++;
for(j=0;j<3;j++)
{ if (j%2) continue;
x++;}
x++; }
printf(“x=%d\n”,x); }
A)x=4 B)x=8 C)x=6 D)x=12

if (j%2) continue;这里是有余数返回继续循环.if判断是值不为0就为真吧。比如说这里j=0,2都为真。只有j=1是才为假。追问

可以把整道题解释一下么?

追答

主要是循环吧。
先说说continue,该语句的作用:跳过循环体内尚未执行的语句,结束本次循环后接着进行是否再次执行循环的判断。
它和break的区别是:continue只结束本次循环,不终止整个循环;而break结束整个循环过程,不再判断执行循环的条件是否成立。
首先连个for循环。第一个是0~1两次循环。第二关for循环是0~2。
进入i的for循环:
i=0时:
x=0+1=1,然后进入j的for循环
j=0 ,j%2=0,不执行continue, x=1+1=2
j=1 ,j%2=1,执行continue
j=2 ,j%2=0,不执行continue x=2+1=3
j=3,退出j的for循环。
x=3+1=4
i=1时:x=4+1=5,然后进入j的for循环
j=0 ,j%2=0,不执行continue, x=5+1=6
j=1 ,j%2=1,执行continue
j=2 ,j%2=0,不执行continue x=6+1=7
j=3,退出j的for循环。
x=7+1=8
i=2,退出i的for循环。
打印 printf(“x=%d\n”,x)

温馨提示:答案为网友推荐,仅供参考