c语言两层循环如何跳到最外层,c语言如何跳出多层循环

  • Post author:
  • Post category:其他


我们知道c语言的break语句只能跳出离它最近的一层循环,可是有时候我们需要跳出多层循环 那可怎么办呢?

比如一个二重循环  在最内层如果某条件成立 我们就可以完成需要的动作  然后退出全部循环,该怎么做呢?

下面雅乐网提供了几种跳出多重循环的方法 并不局限于上面的二重循环 例子只是为了提供思路

1. 使用goto

虽然大多数教材和人都建议少使用goto语句,但是goto还是有它存在的道理,比如可以快速跳出多重循环。雅乐网认为在这种情况下goto是最佳的选择。

for (i = 0; i < MAX1; i++)

{

for (j = 0; j < MAX2; j++)

{

if (condition1)

{

symbol = 1;

goto here;

}

}

}

here:

1

2

3

4

5

6

7

8

9

10

11

12for(i=0;i

{

for(j=0;j

{

if(condition1)

{

symbol=1;

gotohere;

}

}

}

here:

评分:★★★★★

2. 写成函数 return

void nestedfor(void)

{

for (condition1)

{

for (condition2)

{

for (condition3)

{

if (condition)

{

symbol = 1;

return;

}

}

}

}

}

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17voidnestedfor(void)

{

for(condition1)

{

for(condition2)

{

for(condition3)

{

if(condition)

{

symbol=1;

return;

}

}

}

}

}

评分:★★★★

缺点:循环嵌套很多的时候很麻烦,函数参数传递也很麻烦

3. 直接修改外层循环条件

for (i = 0; i < MAX1; i++)

{

for (j = 0; j < MAX2; j++)

{

if (condition1)

{

symbol = 1;

i = MAX;

break;

}

}

}

1

2

3

4

5

6

7

8

9

10

11

12for(i=0;i

{

for(j=0;j

{

if(condition1)

{

symbol=1;

i=MAX;

break;

}

}

}

评分:★★★★

缺点:修改了循环控制变量

4. 在外层循环设置判断条件

内层循环判断满足条件修改标志后 外层循环进行判断

for (symbol != 1 && condition1)

{

for (symbol != 1 && condition2)

{

for (symbol != 1 && condition3)

{

if (condition)

{

symbol = 1;

}

}

}

}

1

2

3

4

5

6

7

8

9

10

11

12

13for(symbol!=1&&condition1)

{

for(symbol!=1&&condition2)

{

for(symbol!=1&&condition3)

{

if(condition)

{

symbol=1;

}

}

}

}

评分:★★★

缺点:书写较为麻烦  未满足条件的时候有多余的判断

5. 在大循环后面判断标志加入break

for (condition1)

{

for (condition2)

{

for (condition3)

{

if (condition)

{

symbol = 1;

}

}

if (symbol == 1)

break;

}

if (symbol == 1)

break;

}

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17for(condition1)

{

for(condition2)

{

for(condition3)

{

if(condition)

{

symbol=1;

}

}

if(symbol==1)

break;

}

if(symbol==1)

break;

}

评分:★★★

缺点:同2