[c]一个关于循环结构的问题
main(){int i,j,a=0;for(i=0;i<2;i++){for(j=0;j<4;j++){if(j%2)break;a++;}a++;}printf("%d\n",a);}请问怎么算出的答案是4?我算了半天都是得到3
参考答案:break;
是跳出 本层 循环,而不是 本次,要与continue 区别开
答案 是 4
先说
第一个for 的 第一次循环,即 i=0 时候
第二个for循环 当 j=0 时候
j%2=0 ,不跳出
a++(这个时候a=1了)
第二个for循环 当 j=1 时候
j%2=1 break了
直接跳出,不运行 a++
而直接返回到了 第一层 循环的 运行 a++(a=2了)
接着 第一层循环继续 即 i=1 的时候了
第二个for循环 当 j=0 时候
j%2=0 ,不跳出
a++(这个时候a=3了)
第二个for循环 当 j=1 时候
j%2=1 break了
直接跳出,不运行 a++
而直接返回到了 第一层 循环的 运行 a++(a=4了)
输出 a=4