外循环 i :
i=0
执行x++,x=1
内循环 j :
j=0
j%2 结果为0,假,执行x++,x=2,执行下一循环
j=1
j%2 结果为1,真,执行continue,执行下一循环
j=2
j%2 结果为0,假,执行x++,x=3,执行下一循环
j=3
j%2 结果为1,真,执行continue,执行下一循环
执行x++,x=4
执行外循环的下一次循环
i=1
x++ 结果 x=5
内循环 j :
j=0
j%2 结果为0,假,执行x++,x=6,执行下一循环
j=1
j%2 结果为1,真,执行continue,执行下一循环
j=2
j%2 结果为0,假,执行x++,x=7,执行下一循环
j=3
j%2 结果为1,真,执行continue,执行下一循环
执行x++,x=8
此时 i=2,外循环结束
最终x的值为8
所以答案是:B
答案:B
一步步来,
void main(){
int i,j,x=0;
for(i=0;i<2;i++){//i=0
x++;//执行完这句x=1
for(j=0;j<=3;j++){//j=0 第二次j=1 第三次j=2 第四次j=3
if(j%2){if判断为1则继续 if判断为0 if判断为1 if判断为0
continue;//j=0时执行本句 本句不执行 j=2执行本句 不执行
}
x++;//j=0时这句不执行 j=2 x=2 j=2不执行本句x=2 x=3
}
x++;//x=4
}
printf("x=%d\n",x);
system("pause");
}
上边只说了一次 i=0时执行结果,那i=1时执行也是一样的 x在一次i循环只能+4所以最后是x=8
不是有答案啊。?!
i=0时
x++,x=1
j=0到3,1和3时,或0和2时,x++都有,x=3(不管哪个真哪个假,事实是1和3continue了)
x++,x=4
i=1时
同上,x=8
主要就是j % 2,j = 0,j = 2是if就不执行,j = 1,3是执行continue
continue的作用是立即返回,直接执行j++,再重新判断
也就是里面的循环x++只执行到两次
外面的执行 =0,1也两次,(1+2+1)*2 = 8