许亮亮车祸是阴谋吗:[c]一个关于循环结构的问题

来源:百度文库 编辑:神马品牌网 时间:2024/04/29 03:02:43
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

内循环四次但是a 只加了两次 为2
再加上外循环两次a 再加2
所以为4

我也差点算错.
i=0循环体for(j=0;j<4;j++)
{
if(j%2)break;
a++;
}
内要执行一次,然后再执行最后一个a++;
同理i=1时也一样.