C语言 简单问题 这道题 当if语句成立时 该如何跳出嵌套的3个for循环呢(我知道用break,但不知道该放哪)

# include <stdio.h>
int main ()
{
int x,y,z;
for ( x=1;x<=9;x++)
{
for (y=1;y<=9;y++)
{
for (z=1;z<=9;z++)
if (532==(x+y)*100+(z+y)*10+2*z)
;

}
}

printf("x=%d,y=%d,z=%d\n",x,y,z);
return 0

}

break只能跳出最近的一个循环

这种情况我一般设置标志变量, 在每个循环末判断一下标志变量, 再决定是否跳出循环, 也可以用goto

int x,y,z,flag=0; //flag为标志变量 
    for( x=1;x<=9;x++)
    {
        for(y=1;y<=9;y++)
        {
            for(z=1;z<=9;z++)
            {
if (532==(x+y)*100+(z+y)*10+2*z)
{
flag=1;
break;
}
            }
            ......//第二个for中的其它代码 
if(flag==1)
{
break;//跳出第二个for 
}
        }
        ......//第一个for中的其它代码 
        if(flag==1)
{
break;//跳出第一个for 
}
}
    printf("x=%d,y=%d,z=%d\n",x,y,z);
return 0;

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-11-13
# include <stdio.h>
int main ()
{
  int x,y,z,flag = 0;
        for  ( x=1;!flag && x<=9;x++)
        {
            for (y=1; !flag && y<=9;y++)
            {
                for (z=1;z<=9;z++)
if (532==(x+y)*100+(z+y)*10+2*z){flag = 1; break;}

            }       
        }
             printf("x=%d,y=%d,z=%d\n",x,y,z); 
             return 0
 }

第2个回答  2015-11-13
break只能跳出最近的一个循环,如果想要跳出多层循环可以用 goto语句,或者加个变量什么的在外出循环时判断下,一层一层的break;