你好, 欢迎｡ 在这节课中, 我想谈谈嵌套循环和循环控制｡
嵌套循环､ 循环中的循环､ 循环控制与break和continue语句有关｡
所以嵌套循环｡
有时候, 您需要将一个循环放置在另一个循环的内部｡
这完全说得通｡
例如, 您可能希望计算街道上每栋房子的居住者人数｡
所以你要做的是你要有一个外部循环, 你从一个房子走到另一个房子｡
然后你在每一个房子里, 你会数居住者的人数｡
所以我希望你能想象或理解这是一个嵌套循环｡
再一次, 外环路要穿过所有的房子｡
然后对于每个外循环的迭代, 你遇到的每一栋房子, 你会进入房子里面,
然后有一个循环来计算所有的人｡
所以这是一个小的用例, 当你想在c中使用嵌套循环的时候｡
这里有一个例子｡ 它看起来就像你想象中的一个循环,
一个循环中的一个循环, 真的不太复杂｡
在本例中, 我们使用for循环for｡
循环是很好的,
因为我们可以初始化循环控制变量, 有我们的条件检查和我们的修改循环控制变量都在一行｡
所以这个外循环, 把它称为外内环｡
外部循环正是它所暗示的｡ 这是外面的环｡
你可以有很多很多不同的嵌套层｡ 您可以有许多内部循环｡
在这个例子中,
我们要经历一个计数器控制的循环, 我们从1开始, 一直计数｡
我们不知道这里是什么伯爵, 没关系｡
在for循环体中, 我们说sum等于0. 我们正在初始化内部循环的总和｡
然后在内部循环中, 我们看到另一个for循环for和j等于1, j小于等于I和plus plus
j｡ 然后我们说和加等于j｡
我们在计算从1到I的整数的和｡
实际上你输入的是数字5｡
对于循环的第一次迭代,
你要对1234和5求和｡
对于下一次循环, 你要对2345求和.
对于循环的第三次迭代, 你要对345求和, 以此类推｡
所以内部循环是必要的, 特别是基于用例, 只是一个循环内的循环完美｡
你会经常看到的｡
不要回避它｡ 根据你需要做什么和你试图解决什么问题, 它经常被使用相当多｡
在这一点上, 它并不总是在for循环里面, 你可以在for循环里面有一个while循环｡
你可以在for循环中有一个do while循环, 这没关系｡
在这个例子中, 除了在for循环体中, 我们有一个嵌套的循环,
一个用while关键字调用的内部循环｡
所以我们还在计算从1到I的整数｡
我们在while循环外进行了一些初始化｡
我们在while检查中有一个条件, 我们在while循环体中有我们要修改的和,
也就是我们要修改的循环控制变量.
所以sum plus等于, 然后我们用plus plus j来修改循环控制变量｡
所以如果我们不修改plus plus j, while循环就会是无限循环｡
但它的输出是一样的, 只是用while循环代替for循环作为嵌套循环.
所以嵌套和嵌套任何东西的时候没有什么不同｡
您嵌套了if语句､ if语句内的if语句､ 嵌套了loop语句､
loop内的loop｡
为了摆脱嵌套循环的概念, 让我们来讨论continue语句｡
直到现在,
当我们谈到循环的时候, 我们总是根据退出条件, 也就是求值为false的布尔表达式, 来多次执行循环｡
但是, 有时您希望提前结束循环,
或者希望继续循环的下一次迭代而不执行任何操作｡
在后一种情况下,
不做任何事情而继续, 实质上是跳过, 可以使用continue语句来完成此操作｡
因此, 循环体中的continue语句执行以下操作｡
首先, 如果你想启动这个过程, 你所要做的就是把continue关键字放在循环体中,
后面跟一个分号｡
但它要做的是基本上跳过那个迭代｡
所以如果continue位于循环体内部, 那么continue下面的任何内容都不会被执行.
所以继续很多次, 我们会根据某个条件, 在循环的顶部,
它通常被包装在if语句中｡
如果发生这种特殊情况,
我不想执行循环体中的任何代码, 就跳过这一次迭代, 检查下一次｡
同样, 这有点混乱, 因为你跳过了一个迭代, 你在跳来跳去,
但它是有效的, 而且它是一种做多次检查的方法｡
因此, 即使在布尔表达式中有循环退出条件, 也可以进行另一次检查｡
这个检查不会跳出循环, 但是会跳过一次迭代｡
所以当你想跳过迭代的时候, 它会再次被使用｡
它的优点是你可以使用continue, 它会消除很多嵌套｡
它还将消除循环块中的大量附加if语句｡
因此,
当语句很长或嵌套很深时, 它可以增强可读性｡
所以如果你发现你做了很多嵌套｡
你可能想说, 也许我可以用一个继续符来代替｡
或者,
如果你发现有很多if语句在循环体中做某些事情, 也许你想做一个continue｡
如果continue使代码变得复杂而不是简化代码, 就不要使用它｡
如果你不知道自己在做什么, 就不要使用continue｡
这里有一个continue的例子｡
在这个例子中, 我们创建了一个day类型的新枚举, 并且我们说有效值是Monday
Tuesday ThreeThursday Friday Saturday Sunday｡
然后我们有一个for循环, 我们把枚举初始化为Monday,
只要day小于等于Sunday, 这就是一个退出的条件, 然后我们说plus plus
day.
您可能会问自己这样的问题：我们如何递增枚举？
好吧, 请记住, 在引擎盖下的枚举是一个整数｡
所以你可以在一个枚举上写plus plus day这样就可以把它加到下一个.
记住, 星期一等于0, 星期二等于1,
星期三等于2, 这都是列表的顺序｡
所以完全可以递增枚举｡
在for循环中, 如果今天是星期三, 我们就跳过.
我们什么都不想做｡ 我们不想打印｡
所以我们说继续｡ 如果该日等于星期三, 则继续｡
它将跳过打印行｡
它会回到循环的顶部, 然后执行下一次迭代.
所以今天是星期四｡
它不会等于星期三, 所以它不会跳过｡
它会马上打印出来, 今天不是星期三｡
这是一个常见的用例, 使用continue的常见例子, 非常容易使用语法,
只需要一个简单的关键字后跟分号｡
另一种情况下, 你可能想在循环中做一些奇怪的事情,
那就是你想提前退出｡
所以通常在循环体进入后, 程序会执行循环体中的所有语句, 每次迭代,
然后检查并跳出.
我们知道continue是如何工作的, 它做了一点不同的跳跃｡
还有一个语句可以改变循环中所有语句的执行, 它叫做break.
这应该有点熟悉, 因为我们在讨论switch语句时使用了break关键字｡
记住, 当我们有自己的案子时, 我们会用这种方式破案｡
当然, 你也可以在循环中使用break关键字｡
它会跳出这个循环｡
所以break语句会导致程序立即退出循环, 它正在执行｡
跳过循环中的语句, 并终止循环的执行｡
所以你只是跳出了这个圈子｡
你提前行刑了｡ 如果break语句在嵌套循环中, 它只会影响包含它的最内层循环｡
你只会跳出你所处的循环｡
要做到这一点, 您可以使用关键字break后跟一个分号｡
当有两个单独的原因需要离开时, Break通常用于离开循环｡
前面我提到过, 你可能有其他原因,
你想跳过一个迭代, 但是如果有两个原因, 两个条件, 你想跳出一个循环, 你可以使用break｡
如果你只有一个条件, 那么它就是条件, 在循环本身里面,
在while的圆括号里面, 或者在for循环的第二个分号前面｡
正如我提到的, Break也用在switch语句中｡
所以我想提醒你｡ 别把他们搞混了｡
但它们本质上做的是相同的事情｡ 它们跳出代码｡
中断switch语句将完全跳出该switch语句, 中断循环将跳出该循环｡
这里有个例子｡ 我们有一个while循环｡
我们正在打印一些整数｡
我们阅读一些整数｡ 我们有一个嵌套的while循环｡
在嵌套的while循环中, 我们检查输入了什么｡
如果它大于100, 我们就跳出内循环｡ 所以我们做｡
然后在外部循环中, 我们必须再做一次检查｡ 如果大于100, 我们就跳出外循环｡
如果你没有第二次突破, 你就永远不会跳出第二个外循环｡
所以在这种情况下, 这让我想起了一个地方, 你可以去｡
想象一下, 如果你有5个嵌套, 5层嵌套,
while循环在while循环中在while循环中在while循环中在while循环中｡
如果你只是使用break来跳出循环, 那么在每个循环中都有所有这些if语句可以跳出｡
您可以使用go来代替所有这些if语句｡
go to将在一个命令中跳出所有的循环状态循环｡
这就是go to的用例｡
但在这个例子中, 我们只是演示了中断,
并确保你明白你只是在中断你所在的循环｡
在这个例子中, 我们要跳出两个循环｡
这是两个例子, 两个关键字, 你可以基本上不重复代码,
你期望它｡
因此, 如果您在循环中看到break或continue, 请确保您了解发生了什么,
因为您可能没有执行您认为将要执行的某些代码｡
同样, 它通常被包装在if条件中｡
所以你可以这样看, 但你也想在使用break或continues时提供好的注释｡
希望这对你有帮助｡ 在下一节课中,
我们会做一个挑战, 我们将如何利用这些循环,
它将演示并帮助你们学习while for循环和break and continue.
-谢谢—谢谢