当前课程知识点:C语言程序设计(上) >  循环结构的程序设计(二) >  4.6 break与continue >  4.6 循环中断与继续循环——break再讨论

返回《C语言程序设计(上)》慕课在线视频课程列表

4.6 循环中断与继续循环——break再讨论在线视频

4.6 循环中断与继续循环——break再讨论

下一节:最大素数.c

返回《C语言程序设计(上)》慕课在线视频列表

4.6 循环中断与继续循环——break再讨论课程教案、知识点、字幕

大家好 

我们再来讨论

break与contiune

那么break我们在前面见过

在switch里边 似乎它在很多情况下

是少不了的一个句子

用来说程序的走向到哪里

那switch里边如果有了break

大家知道 它是无条件的

跳到了当前这个switch的外边

那我们现在在循环体里边如果有它呢

它的作用是什么呢

跳出当前它所在的这个循环

什么叫当前所在的循环呢

我们看一下这几个

它在c里边给的几个循环语句

while这是当型循环

当判断进入循环体

break在这循环体里边的任何

一个地方出现的话

碰到它无条件的的goto到了谁

这个当前这个循环的下边

执行后续的语句 跳出当前这个循环

如果这个循环现在在第6层

那它就是跳出第6层

当然它不能跳出第5层

它只跳出它所在的循环

那对for来说是一样的

当型循环

当条件满足的时候执行循环

break出现在这个循环体的这块

如果碰到它

无条件的跳出这个循环执行后续的

那对do while的不同呢

是说它先做

那在循环体里边出现了break

那break也是无条件的到了后边

这就是我们要强调的

break如果在循环体里边的话

一定是终断的是它当前所在的这几个循环

我们看一个例子 什么时候会用到

这样的一个 就说要

让它终断当前的这个循环呢

我们看一个例子

素数这件事情 在咱们这个课程里边呢

已经说得比较多了

可是这块有一点不同是什么呢

最大的素数

这就是我们的潜在的我们要终断这个循环

找到了最大的就不找了 剩下的就不找了

那这里边也就说

我们需要你从键盘上输入一个n

我让你找从1到这个n之间

最大的那个素数是谁

那我这里边我们先确定一下数据域

数据域是

从1到我输入的那个n

如果我那n是9 那这数据域就是1~9

那这时候我们的思路是怎么做呢

你不是要找最大的

我肯定不会从1开始找

我一定从反着找

9是最大的那个素数吗

9是我找到的第一个素数吗

不是 8是吗 不是 7 ok 是了

找到了

我前面的1~6还用做吗

不用做了

所以 在7的这块找到了

一定在这个循环这就已经break走掉了

这就是我们说循环不一定要进行到底

把你的功能实现了 就可以了

当然在下边

我们是说的找素数这件事情

顺便说 我们看

我们刚才说的是数据域

那你的查找域呢

能反着找吗

我们看 比如说

我现在找的这个数 是8

那 素数的规则是

除过1和8它自己之外 剩下的

看这些数里边能不能被整除

如果所有不能被整除

这个数 就是我们要的那个素数

每一个我要编立

除过1和8之外 我从2~7

我都要除过来 这里边不能终断

终断了谁就不准了

所以呢

我这就不是反着来了 我就是从2开始

要看你能整除吗

这每个要做一遍

所以呢 如果我们把外边这个

找出来最大的素数这件事是外循环的话

那我们从2循环到n-1

你当前的数

当前那个数 比如说外循环我是用

n控制的

那n-1就是我要做的内循环的终值

而2就是我内循环的初值

n-1就是我内循环的终值

这是一定的查找域

是这样的一个方向

我们看一下这个

刚才 我们大家说如果找在那

这个就不做了 括起来的

如果我现在是

从8去找的话 2~7这块都是要做的

大家看在这个例子里边

有两处需要终断

1处是什么呢

是外循环

当我倒着找

找到了我要找的这个最大的一个

因为这边是找一个 找到最大的一个

我剩下的循环就不做了 我需要终断

那内循环呢

是不是我必须把2~n-1都做完了呢

那是取决于说你这个数是不是素数

如果是素数 你一定是做完的

如果说这个数不是素数 比如说它是6

那我走到2的时候

他已经有被整除的了

那它就不是素数了

那做到2的时候 我后边的就已经不做了

比如说是8

那我做到2的时候它已经被整除了

这个数就肯定不是素数了

那我后边的3~7还用做吗

不用做了

所以就说 当内循环里边

你这个数已经不是素数了 被废除了

那你后边的循环就不用做了

也需要一个终断

而外边的是找到了的时候

后边的也不用做了 也需要一个终断

那我们看一下这个程序怎么写

我们看一下刚才咱们分析过的这道题目

我们刚才说数据域是

从1开始到我们给的那个数

那个数是谁呢

在程序里安排的是n 读进来的是n

那显然 我们这个大循环里边

就说我要找

从倒着找 从最后一个找

找到为止

最后一个倒着找

n一定帮我们读进来的这个数是n--的

就说这个增量一定是n--的

那循环控制变量是什么呢

那你每一次找一个

那n只要大于谁呢

>0还是>1 1肯定不用找了

那我们可以是说 只要n>1

我们就一直找

除非是你都找到1了

你还没找到这么一个素数

那就说你给的数据域里边不存在这一个数

那n的初值是什么

n是我们读进来的

所以初值在这块

表达式1是没有的

n是在之前scanf进来的

所以 这个for的构成是这样

第一个表达式省掉

n只要大于1

你就找 除非你中途找到了

那么每做一次 我们就n--一次

这是在数据域的控制是这样

那在里边 我这个查找域呢

是怎么找呢

查找域比如说我们用i来控制它

i咱从哪里开始呢

我们说 素数是

被1和它自身整除 那咱就从2开始

2 然后

i一定要小于什么呢

小于你读进来的那个n

直到n-1就可以了

那每一次 我们是i++

这个过程就说从2

到它 比它自身小1

除非是你在这个过程里边出现了什么呢

你找到一个被 被整除的数了

那这个过程就要怎么了

就是如果n和你这个循环控制变量

里边去求余

如果是等于0 那就是被整除了

那这时候我们需要做什么工作呢

break

一定是做break 跳出去

那就这个事

后边这些循环体里边的东西都不做了

否则的话 我们一直往后找

找到什么呢

我一直都找到了i=n-1了

i都走到了它最后 比如说我们是

目前这个n 当前的这个n是8

那我们都走到7了

n-1是7了

还没有被整除 还没有发现被整除

那就是找到这个数了

找到了这个数

下一个n还要找吗

不要找了 那我们就break

这是两个break用在哪里呢

就是你找到了这个数

找到了我也不再找了

这个是说 你的这个数被废掉了

在中途就发现它不是素数了

下边的事也不用做了

这两个break都是终断的

两个break都是终断了这个内循环

for这个内循环

那现在 是

我们在这 这一块呢

下面要做什么 下面要了做一个判断

a里边还是0吗 a在哪里给放在0呢

没有啊 a在一开始给它做的是1

那a如果是0的话就怎么样呢

就break 那是什么意思

是说 我们给了一个标记

如果你这个数已经找到了

找到了

你还要在继续找吗 不想继续找了

所以如果我们找到了

我们就给它赋值为0

那下边来

每做

把这 这个循环里边的两个if做完

下来会问

你这里边的标志还是1还是0啊

如果是0那就说明你刚才找到了

就break

那这个break在哪里

在内循环的外边

在这个for的外边

在外循环的里边

那也就说 这个break

这是让流程跳在哪了呢

跳到这个花括弧里

而前面这两个break

都让流程跳到了哪呢

跳到了这个花括弧的外面

跳到了内循环的外边

而这个break跳到了

红颜色的for循环的外边

这件事情就不做了 做完了

我们把这个程序运行一下看看

我们看一下这个程序的运行

刚才我们关注这边是三个break

这两个break在内循环里边

而这个break在内循环的外边

然后 我们运行一下

咱在运行一下

给一个25

那我们刚才看见了这个程序的运行

如果你给一个在大的数

那这个程序里边

其实就是我们刚才分析的时候关注的

你对外循环

外循环的控制

是控制你有没有找到这个最大的素数

那一旦找到了

你一定是要break走掉的

是让它直接跳到外循环

所以 这个break是安排在内循环的外边

外循环的里边

它才能跳出外循环

而这两个break

分别起的作用是说

这个是说 你已经不是素数了

我要终断这个内循环

这个是说我找到了这个最大的素数了

我要跳出这个内循环

是这样的一个作用

那么这里 这个程序里边呢

它比较有特点的是说

外循环里边套了内循环

内循环里边又并列了两个if

而在内循环的外边又有一个if

大家其实可以这个是锻炼的方式

然后看一下这个

我们把它展开

就是用设断点的方式

大家可以跟踪一下这个程序的流程

是对我们编程序是有帮助的

那下来 这就我们刚才

看到的这个程序

那下来我们接着

看continue的那个作用

那continue这个语句

它跟break不一样

break是可以在switch里边用

也可以在循环里边用

也就说可以在选择结构里用

也可以在循环里边用

而continue只能在循环里边用

那它的作用是什么呢

它的作用是

仅仅终断当前这一次的循环

而不是这一层的循环

是这一次的循环

当前这一次循环不做了

接着做下一轮

是这样 然后

这一块就是尤其要注意的

它跟break最大的区别

它并不是跳出它当前所在的循环

比如说这个循环是在这一块

是一个 很大的一个过程

在这个中间 遇到了continue

那continue是说下边这些句子就不做了

这一次就不做了

我到循环的出口处

然后 从出口处增量

再回到循环的入口处

那如果把它搁在这里边

看一下continue跟break的一个比较的话

continue是从这走掉了

走到哪 走到循环的入口处

而循环 这是当型循环

到循环入口处在判断

下面还要继续做这一次的循环吗

如果这块是break break就走到哪呢

从这直接出来了 到了外边了

所以 continue是继续

而不是终断

他仅仅是终断的我当前这一轮

下边的句子不做了

这是从这直接出来

到了循环的入口处

这就是 如果在这个for语句里边

它也是一样的 它是到哪去了呢

到表达式3这

做增量 增量完了以后要回去了

不是说跳出来了

continue在这个do while句子里边 

也是一样的

我是到哪里呢 到循环的出口处

再去判断做下一轮

并不是跳出循环 而是继续

所以 用continue

那我们用一个例子来看一下

在这个例子里边 大家看

是说 输入了10个整数

统计这10个数里边的正数有几个

数数 数有几个

大于等于0的数

以及把这些>=0的数求一下平均值

那你就是说 我们输入一个

scanf一个数 你下来要计数

计数 并且

计数之前我们要做判断

你是>=0吗

是>=0我在计数

在相加

所以 我们看

在这个循环是从1~10的

你应定要给10个数了 给10个数

这十个数你读进来 每一次读进来问

是<=0吗

那<=0

我就不做了

就不做什么 不做计数相加

这地下这个 这计数累加

那你要是<=0就不是我要的正整数了

我就跳出去continue

但是我这一次你输进来的数不做了

我不等于下一个数不输了

所以 实际上这个continue是让它到这

到这个循环的 这个出口处

出口处增量返回来

那么i增量了一次了

i已经++了一次了 在出口处++了一次

回来问

新的i还<=10吗

如果是的

那我们还进来继续在读一个数

再去判断

所以我们看到这个continue

在这的作用是说

增量在进行新的循环

终断了当前这一轮的循环

结束了这个循环出来就输出

我们看一下这个程序

在这 scanf我们读进去

咱改一下 咱们就读进来4个数吧

我们就要4个数 那这一块

运行一下

输入4个数

那我们这个数是 应该是

大于0的数是105

直接

没有问题

大家刚才看见了说

你输入的中间我们有一个是0

有一个是-1

那就是下边这两件事

就是计数和求和都没有做了

C语言程序设计(上)课程列表:

从问题到C语言程序设计

-1.1 计算机的问题求解方法

--1.1.1--程序设计面向的问题

--1.1.2--关于计算

--1.1.3-1关于算法-算法的特征

--1.1.3-2关于算法——算法的表示

--1.1.3-3关于算法——算法的优化

--1.1.4-1-程序设计方法

--1.1.4-2-程序设计方法

--讨论题:数学模型

-1.1 计算机的问题求解方法--作业

-1.2 C语言与C程序

--1.2.1-1-C概述

--1.2.1-2-C概述

--1.2.2-C初步

--讨论题:运算符

-1.3 C语言处理系统与程序调试运行

--1.3.1C程序如何调试运行

--1.3.2常用C语言处理系统

--1.3.3DEVC++的使用-v1

--1.3.4C语言概貌小程序

--例程

-1.4 程序中的人机交互

--1.4 printf用法

--1.4.2 scanf的用法

--例程

--作业讨论区

数据计算实现与顺序结构程序设计(一)

-2.1 算术运算的C程序实现

--2.1.1 第二章

--2.1.2 C语言算术表达式概念

--2.1.3 算术运算的实现

--2.1.4 整数相除

--2.1.5 输入格式造成的计算错误

--2.1.6 求余运算

--2.1.7 自增自减运算

--2.1.8 复合运算

--fangcheng.c

--fangcheng-1.c

--fangcheng-2.c

--fangcheng-3.c

--fangcheng-4.c

--算术混合运算.c

--讨论题:自增自减符

--讨论题:程序输出结果

--讨论题:程序运行结果

-2.1 算术运算的C程序实现--作业

-2.2 关系运算的C程序实现

--2.2.1 关系比较问题

--2.2.2 C语言关系表达式

--2.2.3关系运算优先级

--2.2.4 用关系运算做判断条件

--2.2.5 程序实例

--2.2.6 字符比较

--bukao.c

--pingshifen-1.c

--panduanzhengshu.c

--pingshifen-2.c

--字符比较.c

--讨论题:比较大小

--讨论题:程序的运行

-2.2 关系运算的C程序实现--作业

-第二周作业--作业

数据计算实现与顺序结构程序设计(二)

-2.3 逻辑运算的C程序实现

--2.3.1 逻辑运算问题~1

--2.3.2 逻辑运算表达式

--2.3.3 如何判断闰年

--2.3.4 逻辑运算优先级

--2.3.5 条件运算符

--计算结合性

--2.3.7 一个简单实例

--闰年.c

--自动购票问题.c

--讨论题:逻辑表达式

-2.3 逻辑运算的C程序实现--作业

-2.4 位运算的C程序实现

--2.4.1 什么是位运算

--2.4.2 位运算有哪些

--2.4.3 位运算怎么用

--讨论题:位运算

-2.5 几种很个别的运算

--2.5 几个很个别的运算

--讨论题

--讨论题

-2.5 几种很个别的运算--作业

-2.6 混合运算及数据类型转换

--2.6 混合运算及数据类型转换

--讨论题:数据类型

-2.7 顺序结构程序实例

--2.7.1 第一个程序:三角形

--Video

--三角形面积.c

--讨论题:工业产值

--讨论题:程序无效结果

-2.7 顺序结构程序实例--作业

选择结构的程序设计

-3.1 程序中的路径选择实现

--3.1.1_1 第三章

--3.1.1_2 神奇的if_else

--打印学生成绩.c

--一元二次方程.c

-3.1 程序中的路径选择实现--作业

-3.2 路径中的再选择——嵌套判断

--3.2.1_1 if语句的嵌套

--3.2.1_2三个数排序1029

--例程

--3.2.2 用户登录检查

--三个数排序_未优化.c

--三个数排序_优化.c

--讨论题:程序改错

-3.2 路径中的再选择——嵌套判断--作业

-3.3 复杂判断问题的C程序设计

--3.3 多级选择

--银行存款.c

--讨论题:多级选择

-3.4 多分支问题的C程序设计

--3.4.1 switch语句表达式

--3.4.2 加减乘除计算

--3.4.3 几类说明

--加减乘除运算.c

--讨论题:关于switch

-3.4 多分支问题的C程序设计--作业

-3.5 GOTO的适当使用

--3.5 GOTO的适当使用

-3.6 选择结构的程序实例

--3.6 程序展示

--计算第几天.c

--存款利息__switch实现.c

--讨论题:输出奇数

--讨论题:计算税金

-3.6 选择结构的程序实例--作业

-第四周作业--作业

循环结构的程序设计(一)

-4.1 需要重复执行的程序

--4.1.1----第四章~1

--4.1.2---while实现先判断后循环~1

--4.1.3----while循环的应用-录入速度~1

--求和.c

--打印学生成绩.c

--统计录入速度.c

--求平均数.c

-4.1 需要重复执行的程序--作业

-4.2 至少要执行一次的循环

--4.2.1至少要执行一次的循环

--4.2.2-do-while循环应用

--成绩录入_do while实现.c

--n的阶乘.c

--字符分类统计.c

--讨论题:关于while

-4.2 至少要执行一次的循环--作业

-4.3 已知循环次数用for语句

--4.3.1--用for语句控制循环次数

--4.3.2--循环的应用-求和

--求和问题.c

--斐波那契数列问题.c

--数列求和.c

--讨论题:循环语句的不同

--讨论题:循环语句

-4.3 已知循环次数用for语句--作业

-4.4 循环控制——简单循环应用

--4.4.1-循环的应用-找数-水仙花数

--4.4.2--循环的应用-求素数

--水仙花数.c

--讨论题:死循环

--讨论题:continue和break

--讨论题:猜数字

-循环结构的程序设计(一)--4.4 循环控制——简单循环应用

循环结构的程序设计(二)

-4.5 循环的嵌套

--4.5.1 循环的嵌套——九九乘法表

--4.5.2 循环的嵌套——打印三角形

--打印九九乘法表.c

--打印实心三角图案.c

--打印空心三角图案.c

--讨论题:程序运行

-4.5 循环的嵌套--作业

-4.6 break与continue

--4.6 循环中断与继续循环——break再讨论

--最大素数.c

--求正数个数及平均数.c

-4.6 break与continue--作业

-4.7 循环的综合应用

--4.7.1 数的排列组合问题

--4.7.2 循环综合应用——穷举算法

--4.7.3 循环综合应用——满足条件的数

--4.7.4 循环综合应用——求最后三位数

--4.7.5 循环综合应用——打印空心图案

--数的排列组合.c

--数的排列组合优化.c

--鸡兔同笼.c

--找满足条件的数.c

--输出14的13次方的最后三位数.c

--打印空心字符.c

--讨论题:打印图形

--讨论题:打印空心图形

--讨论题:计算闰年

-第六周作业

--虚拟实验:循环程序设计实验

-第六周作业--作业

数组(一)

-5.1 同类有序数据处理问题

--5.1.0 数组开篇

--5.1.1 同类有序数据存储问题

--讨论题:下标变量与下标

-5.2 一维数组的定义和引用

--5.2.1_1 数组的定义~1

--5.2.1_2 数组的初始化

--5.2.2 一维数组的输入输出

--5.2.3 一维数组的应用1--成绩排序(选择法)~2

--5.2.4 一维数组的应用2--Fibonacci数列

--数组定义.c

--数组初始化.c

--输出大于平均值的数.c

--反向输出.c

--选择法_成绩排序.c

--求斐波那契数列前n项.c

--讨论题:对称数

--讨论题:关于'\0'

-5.2 一维数组的定义和引用--作业

-5.3 一维字符串数组

--5.3 一维字符串数组11.24~1

--用函数测试字符串长度.c

--讨论题:编程

-5.4 字符串处理函数

--5.4 字符数组的输入与输出

--字符串反向.c

--字符串函数

--讨论题:程序如何运行

--讨论题:黑色星期五

数组(二)

-5.5 二维数组的定义与使用

--5.5 二维数组定义

--二维数组的定义与初始化.c

-5.6 二维数组的输入输出

--5.6 二维数组的输入与输出

--二位数组输出_矩阵输出.c

--讨论题:随机数据存储

-5.6 二维数组的输入输出--作业

-5.7 二维数组的应用‍

--5.7.1二维数组的应用-转置矩阵

--5.7.2 用一维数组方式引用二维数组元素

--转置矩阵.c

--找二维数组最大数.c

--讨论题:修改程序

--讨论题:关于随机数函数 rand()

-5.8 二维字符数组

--5.8 单词排序

--单词排序.c

--讨论题:回文字符串

-5.8 二维字符数组--作业

-5.9 数组综合应用

--5.9.1 应用1——学生成绩统计

--统计成绩.c

--5.9.2 应用2——删除重复字符

--删除串中的重复字符串

--5.9.3 应用3——统计字符

--5.9_4数组的应用4--矩阵相乘

--统计字符次数.c

--讨论题:洗牌

-本期课程结束语

--end

-第八周编程作业

--虚拟实验:冒泡排序算法程序设计实验

期末复习

-《C语言程序设计(上)》期末复习参考

--html

期末复习答案

-《C语言程序设计(上)》期末复习参考答案

--html

4.6 循环中断与继续循环——break再讨论笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。