四种方法跳出多层循环(return goto flag try)

由于最近有人询问如何跳出多层循环的问题,小殇今天就给大家带来四种方法跳出多层循环。

实践出真知,先来给大家举一个简单的程序。观察下面这个程序,这是随手写的一个两层for循环嵌套,一旦发现a,i,j相加等于9的时候就跳出两层循环输出数字,但是下面的程序肯定是不行的,因为for只能跳出一层循环,这样就会出现两种运行结果。不符合我们的要求。

#include

using namespace std;

int main()

{

int a=0;

for(int i=0;i<= 5;i++)

for (int j=0;j<= 5; j++)

{

a++;

if (a + i + j == 9)

{ cout << a << i << j<

}

system("pause");

return 0;

}

来看看第一种解决方法,直接使用return ,不过这种情况只适合特别特别小的程序或者函数了,如果是一个大的项目,就感觉挺不给力的。

#include

using namespace std;

int main()

{

int a=0;

for(int i=0;i<= 5;i++)

for (int j=0;j<= 5; j++)

{

a++;

if (a + i + j == 9)

{

cout << a << i << j << endl;

system("pause");

return 0;

}

}

}

来看看第二种方法,设置一个判断符进行判断。设置一个flag初始化为1,然后在每层循环的时候判断条件都&&flag一下,在需要跳出的地方置flag=0就可以了。

#include

using namespace std;

int main()

{

int a=0;

bool flag = 1;

for(int i=0;i<= 5&&flag;i++)

for (int j=0;j<= 5&&flag; j++)

{

a++;

if (a + i + j == 9)

{

cout << a << i << j << endl;

flag = 0;

}

}

system("pause");

return 0;

}

第三种方法,当循环达到多层,很多人就懒得&&flag了,那么我们的goto语句就出手了。goto语句应该很多人都熟悉但是都没用使用过,因为在大学的C语言学习中很多老师是不教授goto语句的,因为在结构化程序设计中一般不主张使用goto语句, 以免造成程序流程的混乱,使理解和调试程序都产生困难。但是存在的就是合理的,goto语句在很多时候都能很方便简洁的完成程序的功能,所以希望大家还是能够掌握这么一种技巧,能避免goto语句可以尽量避免,但是再一些多层for嵌套的时候还是该出手时就出手吧。

在判断条件里写一个goto语句,在外面写出标示符。然后就顺利解决了多层跳出的问题。

#include

using namespace std;

int main()

{

int a=0;

for(int i=0;i<= 5;i++)

for (int j=0;j<= 5; j++)

{

a++;

if (a + i + j == 9)

{

cout << a << i << j << endl;

goto zhao;

}

}

zhao:

system("pause");

return 0;

}

第四种方法,有木有惊呆的感觉,使用try、throw和catch来完成这个功能,当执行到需要跳出的时候,throw exception();即抛出一个异常,在下面就可以catch (const exception){},即接收这个异常,这样就跳出了整个循环体,不过这种方法不建议经常使用,因为给很多人带来了代码阅读的压力,还是使用上述二三种方法比较好。

#include

using namespace std;

int main()

{

int a=0;

try

{

for (int i = 0; i <= 5; i++)

for (int j = 0; j <= 5; j++)

{

a++;

if (a + i + j == 9)

{

cout << a << i << j << endl; throw exception();

}

}

}

catch (const exception){}

system("pause");

return 0;

}

本文纯属科普,是小殇的第三篇博客,也是比较浅显简单的一篇博客,希望大家能够喜欢。也希望大家有建议疑问可以留贴提问,也可以发送邮件到zhiqianghuo@126.com。最后,送给大家一句话:

你还有很多未完成的梦,你有什么理由停下脚步。

c语言flag跳出循环,四种方法跳出多层循环(return goto flag try)相关推荐

  1. js map满足条件跳出循环_js for等循环 跳出多层循环

    js for 循环 跳出多层循环 var a = [1,2,3,4,5,6,7,8]; // 8个数 var b = [11,12,13,14,15,3,16,17]; //8个数 testFor() ...

  2. java语言复制数组的四种方法

    来源于牛客网的一道选择题: Java语言的下面几种数组复制方法中,哪个效率最高? A.for循环逐一复制 B.System.arraycopy C.System.copyof D.使用clone方法 ...

  3. php遍历数组的四种方法,PHP遍历数组的常见几种方法

    小白发博文,看到某个知识点,就当复习下. $arr=array ( 'football' =>     'well', 'swimming'=>'very well', 'run'=> ...

  4. 遍历list的四种方法

    文章目录 遍历list的四种方法 普通for循环遍历 增强for循环 使用Iterator迭代器 Lambda箭头函数(java8及以上版本) 遍历list的四种方法 //list初始化 List&l ...

  5. java 中break如何跳出多层循环(包含二层循环)

    问题:break只能跳出一层循环,如下: while(true){ for (int i = 1; i <= s; i++) {t2++;s2 += v2;if (s2 >= l) {Sy ...

  6. 简单介绍C语言使用四种方法初始化结构体

    这篇文章说明了什么是结构体,介绍了结构体的概念和使用优点,在C语言中如何使用和初始化结构体方法,通过详细的代码展开进行说明,希望该篇文章对你有所帮助 什么是结构体 在实际问题中,一组数据往往有很多种不 ...

  7. c语言能返回字符串吗,C语言中函数返回字符串的四种方法

    在讨论着四种方法以前,首先要对函数有一个简单的认识,不管是在形实结合时,仍是在return语句返回时,都有一个拷贝的过程.你传进来的参数是个值,天然函数在工做以前要把这个值拷贝一份供本身使用,你传进来 ...

  8. C语言实现求解斐波那契数列的四种方法及优化处理(递归,迭代,特殊性质公式,矩阵快速幂)

    众所周知,斐波那契数列是非常经典的一个数列,它的数学公式如下 为了便于观察,我们列出它的几项:0  1  1  2  3  5  8  13  21...... 下面我们将介绍四种方法来用C语言计算机 ...

  9. c语言中字符串去掉逗号,JS四种方法去除字符串最后的逗号

    window.οnlοad=function() { var obj = {name: "xxx", age: 30, sex: "female"};//定义一 ...

  10. C语言四种方法求最大公约数

    一.实验要求 运行最大公约数的常用算法,并进行程序的调试与测试,要求程序设计风格良好,并添加异常处理模块. 二.实验方法(四种) 1.辗转相除法(欧几里德法) C语言中用于计算两个正整数a,b的最大公 ...

最新文章

  1. Sql Server 中锁的概念
  2. tensorflow运行环境linux,在ubuntu或者min运行环境下安装gpu版本的tensorflow
  3. 【产品】阿里产品经理内训:能力模型解读
  4. Jenkins Job Buidler
  5. 如何解决JAVA环境变量配好后,重启电脑又失效的问题
  6. Nginx启动报错误unlink() “nginx.pid” failed (2: No such file or directory)
  7. %3cphp和%3c php_phpcmsv9后台登录绕过
  8. Linux防火墙端口设置和mysql端口开放的navicat整合
  9. git注意事项(持续更新中)
  10. SecureCRT连接虚拟机中的Linux系统
  11. python web 文件管理器_利用Python 1分钟搭建测试Web服务器,可实现linux目录文件共享...
  12. CSDN 博客前200名
  13. Python手撕周杰伦158首歌之后,结果很尴尬,TF-IDF有缺陷,以为AI是王者
  14. 读书随笔(6)密码恢复
  15. 《关键对话》如何高效能沟通之何谓关键对话
  16. 怎么做网站?网站用什么服务器好?
  17. 搭建CTPN网络(基于windows与tensorflow)
  18. Google - Colab实验室 - 柯基犬猫咪
  19. 换位思考:当美团app人气榜的数据不是字典而是列表
  20. java命令--jstack 工具

热门文章

  1. 在 Ubuntu Linux 上安装 Maya 2018
  2. 单片机IO详解(上拉 下拉 准双向 输入 输出 推挽 开漏)
  3. 深度学习的可解释性!
  4. vue的nxut框架生命周期触发两遍的问题
  5. excel工作簿合并怎么处理?
  6. 开普勒行星运动三定律
  7. 我那曲折的英语学习经历:学不学语法,天差地远 转载自豆瓣
  8. 什么是pip?Python新手入门指南
  9. 数据中心Tier迷思和误解
  10. matlab命令行窗口显示长度设置_MATLAB的命令窗口、图形窗口