C语言重来28:如何离开多重循环
还是用一个程序的题目来展开这一节:
凑硬币:
如何用1角、2角、5角的硬币凑出10元以下的金额呢?
我们来看一下,三个for循环的代码:
#include<stdio.h>
int main()
{int x;int one, two, five;//这块设定3个变量,分别来计算1角、2角、5角的每个的个数是多少。scanf_s("%d", &x);for (one = 1; one < x * 10; one++){//这块的判定结束的是把要换的钱,全部换成1角、2角、5角。for (two = 1; two < x * 10 / 2; two++){for (five = 1; five < x * 10 / 5; five++){if (one + two * 2 + five * 5 == x * 10){//判断是否可以满足。printf("可以用%d个1角加%d个2角加%d个5角得到%d元\n", one, two, five, x);}}}}return 0;
}
题目改变一下:我们只要求输出一次3种硬币的组合就可以了,这个时候可以终止循环了。
注意,break和continue的使用条件是只能跳出它所在的那一个循环,如果外面还有更多的循环,那样的话,就再跳不出去了。
我们这边还是使用跟前面几乎一样的方法来进行处理,就是,设定一个变量,当钱数可以表示的时候,这个变量被赋值,然后在后面的每一个循环的结束之前,加上一个if的条件语句,如果满足这个条件的话,那就执行这一重循环的break的语句。
我们再来看一下这个代码 :
#include<stdio.h>
int main()
{int x;int exit = 0;int one, two, five;//这块设定3个变量,分别来计算1角、2角、5角的每个的个数是多少。scanf_s("%d", &x);for (one = 1; one < x * 10; one++){//这块的判定结束的是把要换的钱,全部换成1角、2角、5角。for (two = 1; two < x *10 /2; two++){for (five = 1; five < x * 10 / 5; five++){if (one + two * 2 + five * 5 == x * 10){//判断是否可以满足。printf("可以用%d个1角加%d个2角加%d个5角得到%d元\n", one, two, five, x);exit = 1;break;}}if (exit)//这个就相当于if(exit==1),这个很重要,要记住,后面会用上。{break;}}if (exit)//这边添加一个笔记,当if()括号里面的数不为0的时候,就进入这个条件里面的语句中。{//当然上面所说的也不是仅仅是if,其他的if、else if、else都可以。break;}}return 0;
}
上面这个称之为:接力break.
当然我们还有其他的方法:
用goto函数,这个函数的具体的用法在下面的代码的注释里面有:
#include<stdio.h>
int main()
{int x;int one, two, five;//这块设定3个变量,分别来计算1角、2角、5角的每个的个数是多少。scanf_s("%d", &x);for (one = 1; one < x * 10; one++){//这块的判定结束的是把要换的钱,全部换成1角、2角、5角。for (two = 1; two < x *10 /2; two++){for (five = 1; five < x * 10 / 5; five++){if (one + two * 2 + five * 5 == x * 10){//判断是否可以满足。printf("可以用%d个1角加%d个2角加%d个5角得到%d元\n", one, two, five, x);goto out;//注意,这个goto语句由两个部分组成,前面的是goto out,前面是函数,后面是要到的地方的标号。}}}}out://这里表达的第二个语句就是,上面这个函数跳转的地方。注意这个的后面有一个分号。return 0;
}
当前只在有多重循环的地方使用goto,这样才能使整个程序更有逻辑感,不必像一个传送门一样来回的飘动。
C语言重来28:如何离开多重循环相关推荐
- go语言打印日期_go语言基础:流程控制(4)-多重循环跳转控制
1.6 多重循环控制 1.6.1 概念解析 1)多重循环就是指将一个循环嵌套在另一个循环体内,就形成了嵌套循环.在外边的for循环称之为外层for循环,在里面的for循环称之为内层for循环.2)实质 ...
- r语言dataellipse_R语言绘图:28个实用程序包
原标题:R语言绘图:28个实用程序包 全文注释 # 示例参考帮助文档 # 我用Rstudio重现了所有示例 # 初识R语言,请戳我的原创推文""与"" # 使用 ...
- C语言 第六章 多重循环
目录 一.概要 二.二重循环 2.1.一重循环平行嵌套多重循环 三.三重循环 四.菱形 五.菱形与函数 六.空心菱形 一.概要 在c语言中,if,switch,for,while,do-while可以 ...
- break怎么跳出多层循环C语言,C/C++ 跳出多重循环方法
C/C++ 跳出多重循环方法 c语言的break语句只能跳出离它最近的一层循环,但是我们有时候需要跳出多层循环,以下有几种跳出多重循环的方法: 1. 使用goto for (int i = 0; i ...
- java while语句打印三角形_java基础之五小节带你走进java流程控制—多重循环
四.多重循环 在一个循环语句内部再嵌套一个或多个循环,称为多重循环/嵌套循环.while.do-while与for循环可以任意嵌套,可以嵌套任意多层.一般工作中多见的就是两层. 4.1 多重循环 打印 ...
- Python中断多重循环的几种思路
转自: https://www.cnblogs.com/cuijianxin/p/6611751.html I. 跳出单循环 不管是什么编程语言,都有可能会有跳出循环的需求,比如枚举时,找到一个满足条 ...
- phpbreak跳出几层循环_php中break如何跳出多重循环的示例代码
break是被用在上面所提的各种循环和switch语句中的.他的作用是跳出当前的语法结构,执行下面的语句.break语句可以带一个参数n,表示跳出循环的层数,如果要跳出多重循环的话,可以用n来表示跳出 ...
- Python中断多重循环的两种思路
1. 跳出单循环 不管是什么编程语言,都有可能会有跳出循环的需求,比如枚举时,找到一个满足条件的数就终止.跳出单循环是很简单的,比如 for i in range(10):if i > 5:pr ...
- 有关对耗时很大循环进行并行化优化的探讨之二:多重循环任务的并发处理
[引] 在上一篇有关并行化的<有关对耗时很大循环进行并行化优化的探讨 之一:并发搜索的处理>博文中,我们看到,不使用并行语言,而使用基本的编程语言配合多线程可以进行并行化处理,本文进一步将 ...
最新文章
- VMware Mac版本漏洞可任意执行恶意代码
- Eclipse实现hibernate反向工程:从数据库逆向生成实体类和hbm文件
- JDK反编译的两种方式
- ubuntu上使用sqlite3
- 【Python科学计算系列】概率论与数理统计
- 数据生态mysql_数据生态:MySQL复制技术与生产实践
- python iloc iat_Python Pandas Dataframe.iat[ ]用法及代码示例
- 有道词典在谷歌Chrome浏览器中无法取词的解决方法
- python模拟抛硬币_python模拟抛硬币
- 未来教育计算机书,未来教育计算机二级
- Spring_背诵英文单词
- numpy 5 study task
- linux下调试域格CLM920 NC5 pppd拨号
- 【java】把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素。
- Tomcat执行startup.bat出现闪退的可能原因
- uni-app个人中心
- count()--不是单组分组函数
- 浅谈智能计算机的未来发展,浅谈计算机人工智能科学技术应用及发展
- Windows必备:五款靠谱好用的软件,简洁纯净无广告
- typescript77-在CRA创建支持ts的项目
热门文章
- 本地 服务器 共享文件,本地和云服务器文件共享
- Eclipse Tomcat在debug状态下修改代码就导致项目重启解决方案
- linux软RAId配置与管理总结,Linux下使用mdadm创建和管理软raid(转)
- BERT(预训练Transformer模型)
- 资金表实现过程方案二:资金表与冻结表分离(一)
- Spring Profiles详解
- TOM企邮后台管理员轻松管理
- Pico四通道汽车诊断示波器高级套装(型号:PQ180)
- Gopher China 2019 讲师专访 -晁岳攀
- Spring 注解 @Qualifier和@Primary 详细解析