C语言如何跳出多层循环
2016-04-12 21:35
330 查看
我们知道c语言的break语句只能跳出离它最近的一层循环,可是有时候我们需要跳出多层循环 那可怎么办呢? 比如一个二重循环 在最内层如果某条件成立 我们就可以完成需要的动作 然后退出全部循环,该怎么做呢? 下面雅乐网提供了几种跳出多重循
我们知道c语言的break语句只能跳出离它最近的一层循环,可是有时候我们需要跳出多层循环 那可怎么办呢?
比如一个二重循环 在最内层如果某条件成立 我们就可以完成需要的动作 然后退出全部循环,该怎么做呢?
下面雅乐网提供了几种跳出多重循环的方法 并不局限于上面的二重循环 例子只是为了提供思路
虽然大多数教材和人都建议少使用goto语句,但是goto还是有它存在的道理,比如可以快速跳出多重循环。雅乐网认为在这种情况下goto是最佳的选择。
评分:★★★★★
评分:★★★★
缺点:循环嵌套很多的时候很麻烦,函数参数传递也很麻烦
评分:★★★★缺点:修改了循环控制变量
评分:★★★
缺点:书写较为麻烦 未满足条件的时候有多余的判断
评分:★★★
缺点:同2
链接: http://www.yalewoo.com/how_to_skip_nested_loop.html
我们知道c语言的break语句只能跳出离它最近的一层循环,可是有时候我们需要跳出多层循环 那可怎么办呢?
比如一个二重循环 在最内层如果某条件成立 我们就可以完成需要的动作 然后退出全部循环,该怎么做呢?
下面雅乐网提供了几种跳出多重循环的方法 并不局限于上面的二重循环 例子只是为了提供思路
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 15 16 17 | voidnestedfor(void) { 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
链接: http://www.yalewoo.com/how_to_skip_nested_loop.html
相关文章推荐
- C++插入排序算法
- c++作业3
- C++中虚函数的作用是什么?它应该怎么用呢?
- C++ Primer 练习13.36和13.37
- 初识C++之封装
- [C++]vector 的 push_back实现原理
- C++作业3
- c++作业2
- C++实现开机启动
- c++课程第一次实验
- 山东省第四届ACM大学生程序设计竞赛-Contest Print Server(模拟)
- C++实验3:个人所得税
- C++作业3
- c++作业3
- C++常见字符输入的做法
- C/C++用new、delete分配回收堆中空间
- c++实验2-计算并输出体重状态
- C++第三次上机实验其他作业
- i=i++在Java和C++中的输出
- C++作业3