我是靠谱客的博主 灵巧蜜粉,最近开发中收集的这篇文章主要介绍四种方法跳出多层循环(return goto flag try)四种方法跳出多层循环(return goto flag try),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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

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

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

#include <iostream>
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;
}

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

#include <iostream>
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 <iostream>
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 <iostream>
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 <iostream>
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;
}

原文:https://blog.csdn.net/u010335911/article/details/24270667

最后

以上就是灵巧蜜粉为你收集整理的四种方法跳出多层循环(return goto flag try)四种方法跳出多层循环(return goto flag try)的全部内容,希望文章能够帮你解决四种方法跳出多层循环(return goto flag try)四种方法跳出多层循环(return goto flag try)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(45)

评论列表共有 0 条评论

立即
投稿
返回
顶部