c语言flag跳出循环,四种方法跳出多层循环(return goto flag try)
四种方法跳出多层循环(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)相关推荐
- 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() ...
- java语言复制数组的四种方法
来源于牛客网的一道选择题: Java语言的下面几种数组复制方法中,哪个效率最高? A.for循环逐一复制 B.System.arraycopy C.System.copyof D.使用clone方法 ...
- php遍历数组的四种方法,PHP遍历数组的常见几种方法
小白发博文,看到某个知识点,就当复习下. $arr=array ( 'football' => 'well', 'swimming'=>'very well', 'run'=> ...
- 遍历list的四种方法
文章目录 遍历list的四种方法 普通for循环遍历 增强for循环 使用Iterator迭代器 Lambda箭头函数(java8及以上版本) 遍历list的四种方法 //list初始化 List&l ...
- java 中break如何跳出多层循环(包含二层循环)
问题:break只能跳出一层循环,如下: while(true){ for (int i = 1; i <= s; i++) {t2++;s2 += v2;if (s2 >= l) {Sy ...
- 简单介绍C语言使用四种方法初始化结构体
这篇文章说明了什么是结构体,介绍了结构体的概念和使用优点,在C语言中如何使用和初始化结构体方法,通过详细的代码展开进行说明,希望该篇文章对你有所帮助 什么是结构体 在实际问题中,一组数据往往有很多种不 ...
- c语言能返回字符串吗,C语言中函数返回字符串的四种方法
在讨论着四种方法以前,首先要对函数有一个简单的认识,不管是在形实结合时,仍是在return语句返回时,都有一个拷贝的过程.你传进来的参数是个值,天然函数在工做以前要把这个值拷贝一份供本身使用,你传进来 ...
- C语言实现求解斐波那契数列的四种方法及优化处理(递归,迭代,特殊性质公式,矩阵快速幂)
众所周知,斐波那契数列是非常经典的一个数列,它的数学公式如下 为了便于观察,我们列出它的几项:0 1 1 2 3 5 8 13 21...... 下面我们将介绍四种方法来用C语言计算机 ...
- c语言中字符串去掉逗号,JS四种方法去除字符串最后的逗号
window.οnlοad=function() { var obj = {name: "xxx", age: 30, sex: "female"};//定义一 ...
- C语言四种方法求最大公约数
一.实验要求 运行最大公约数的常用算法,并进行程序的调试与测试,要求程序设计风格良好,并添加异常处理模块. 二.实验方法(四种) 1.辗转相除法(欧几里德法) C语言中用于计算两个正整数a,b的最大公 ...
最新文章
- Sql Server 中锁的概念
- tensorflow运行环境linux,在ubuntu或者min运行环境下安装gpu版本的tensorflow
- 【产品】阿里产品经理内训:能力模型解读
- Jenkins Job Buidler
- 如何解决JAVA环境变量配好后,重启电脑又失效的问题
- Nginx启动报错误unlink() “nginx.pid” failed (2: No such file or directory)
- %3cphp和%3c php_phpcmsv9后台登录绕过
- Linux防火墙端口设置和mysql端口开放的navicat整合
- git注意事项(持续更新中)
- SecureCRT连接虚拟机中的Linux系统
- python web 文件管理器_利用Python 1分钟搭建测试Web服务器,可实现linux目录文件共享...
- CSDN 博客前200名
- Python手撕周杰伦158首歌之后,结果很尴尬,TF-IDF有缺陷,以为AI是王者
- 读书随笔(6)密码恢复
- 《关键对话》如何高效能沟通之何谓关键对话
- 怎么做网站?网站用什么服务器好?
- 搭建CTPN网络(基于windows与tensorflow)
- Google - Colab实验室 - 柯基犬猫咪
- 换位思考:当美团app人气榜的数据不是字典而是列表
- java命令--jstack 工具