C语言跳出多重循环方法
我们知道c语言的break语句只能跳出离它最近的一层循环,可是有时候我们需要跳出多层循环 那可怎么办呢?
比如有一个二维数组 判断如果有元素值为1 就直接将标识符设置为1 然后退出全部循环
下面雅乐网提供了几种跳出多重循环的方法 并不局限于上面的二重循环 例子只是为了提供思路
1. 使用goto
虽然大多数教材和人都建议少使用goto语句,但是goto还是有它存在的道理,比如可以快速跳出多重循环。雅乐网认为在这种情况下goto是最佳的选择。
123456789101112 | for (i = 0; i < MAX1; i++) { for (j = 0; j < MAX2; j++) { if (condition1) { symbol = 1; goto here; } } } here: |
评分:★★★★★
2. 写成函数 return
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | for (condition1) { for (condition2) { for (condition3) { if (condition) { symbol = 1; return; } } } } |
评分:★★★★
缺点:循环嵌套很多的时候很麻烦
3. 直接修改外层循环条件
123456789101112 | for (i = 0; i < MAX1; i++) { for (j = 0; j < MAX2; j++) { if (condition1) { symbol = 1; i = MAX; break; } } } |
评分:★★★★
缺点:修改了循环控制变量
4. 在外层循环设置判断条件
内层循环判断满足条件修改标志后 外层循环进行判断
1 2 3 4 5 6 7 8 9 10 11 12 13 | for (symbol != 1 && condition1) { for (symbol != 1 && condition2) { for (symbol != 1 && condition3) { if (condition) { symbol = 1; } } } } |
评分:★★★
缺点:书写较为麻烦 未满足条件的时候有多余的判断
5. 在大循环后面判断标志加入break
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | for (condition1) { for (condition2) { for (condition3) { if (condition) { symbol = 1; } } if (symbol == 1) break; } if (symbol == 1) break; } |
评分:★★★
缺点:同2
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。
- 上一篇: C++中break,continue,return用法
- 下一篇: C语言如何跳出多层循环