一个嵌套循环有关问题!至今没有想明白
一个嵌套循环问题!至今没有想明白
int i,j;
for(i=0;i <11;i++)
for(j=0;j <25;j++)
if(j*i==25)
break;
printf( "i=%d\nj=%d\n ",i,j);
请问i,j的值是多少?
为什么?
那位高手能详细解释下
------解决方案--------------------
break只出了一层循环。
最终循环到底。
------解决方案--------------------
等价:
int i,j;
for(i=0;i <11;i++)
{
for(j=0;j <25;j++)
{
if(j*i==25)
break;//这个break跳出的是j的循环,对i没有影响
}
}
printf( "i=%d\nj=%d\n ",i,j);
到i=10时没有j使得i*j=25
所以说i=10时j循环到底就是25
然后i=11时跳出i循环
所以i=11,j=25
------解决方案--------------------
只有在i=5; j=5时, 才执行break, 但break只跳出内层循环,
所以i> 5以后, 再没有机会执行break, 最后:
i==11; j==25
------解决方案--------------------
break只能跳出一层循环。
故:
i=11
j=25
int i,j;
for(i=0;i <11;i++)
for(j=0;j <25;j++)
if(j*i==25)
break;
printf( "i=%d\nj=%d\n ",i,j);
请问i,j的值是多少?
为什么?
那位高手能详细解释下
------解决方案--------------------
break只出了一层循环。
最终循环到底。
------解决方案--------------------
等价:
int i,j;
for(i=0;i <11;i++)
{
for(j=0;j <25;j++)
{
if(j*i==25)
break;//这个break跳出的是j的循环,对i没有影响
}
}
printf( "i=%d\nj=%d\n ",i,j);
到i=10时没有j使得i*j=25
所以说i=10时j循环到底就是25
然后i=11时跳出i循环
所以i=11,j=25
------解决方案--------------------
只有在i=5; j=5时, 才执行break, 但break只跳出内层循环,
所以i> 5以后, 再没有机会执行break, 最后:
i==11; j==25
------解决方案--------------------
break只能跳出一层循环。
故:
i=11
j=25