学习笔记—— C语言——循环结构

目录

一、循环结构

二、break和continue 语句

三、goto 语句

四、Q & A

//该篇文章使用的部分素材和内容来自比特就业课


一、循环结构

1.while循环

3dd5c50da6ae4f3baa1626b9a1c8e374.png

其基本使用方法如上图所示,程序会首先判断表达式,当值为0(假)时,循环直接结束。当值不为0(真)时,则执行循环程序,程序每执行一遍,都会重新对表达式进行判断。

afdda8a053154838ae0fb978db48ca0b.png

while循环的使用事例:

题:在屏幕上打印1 ~100

111d4126a26b4dbb920fe504108846c0.png 

4ce942d6403b40b7b0f8ec7ab445a0c7.png

 

2.for循环 

7db76d2f5a914b9080416df1148f3c6a.png

其基本使用方法如上图所示。

表达式1:用于循环变量的初始化,多个变量用逗号隔开

表达式2: 用于循环结束的条件判断

表达式3:用于循环变量的调整

❗️注意:各表达式用分号隔开!

07425457762143d3b849a4b77c3e5bdb.png

在for循环中,程序首先会执行表达式1 来对循环变量进行初始化,然后程序会对表达式2进行判断,当其值为0()时,循环结束;反之,当其值不为0()时,循环语句会被执行,当语句执行结束后,表达式3会被执行,从而调整循环变量。然后程序会再执行表达式2,来决定是否继续进行循环。

❗️注意:在循环过程中,表达式1只会执行一次,表达式2表达式3会随着循环重复执行,通常情况下(无break,continue语句等),表达式2的执行次数会比表达式3多一次,这是因为当表达式3调整循环变量使其达到令表达式2为0()的值时,表达式2还要再多运行一次,来判断循环变量的值是否已经到达临界,因为表达式2的执行顺序在表达式3前,所以表达式3在变量值到达临界后不再执行

举个例子:

f0529f9f2e7a4fd4b16756b36d05f739.png

上图程序中,表达式2分别在:

a为10、11、12、13、14、15、16、17、18、19、20,21时执行,共12

表达式3则在:

a为10,11,12,13,14,15,16,17,18,19,20时执行,共11

 

3.do while 循环

7721849a41434990aae53ba3425997f9.png

其基本使用方法如上图所示。与while循环和for循环不同的是,do while循环会先执行一次语句,再判断是否继续重复执行,当表达式的判断结果为0()时,循环结束;当结果为非0值()时,则继续循环。

e44f11f295a544aaa7d4be3dd6c98d1c.png

❗️注意:do while循环中的语句至少执行一次!

 

do while循环的使用事例:

题:在屏幕上打印1 ~100:
4ea34b5cb00046bd998eebd0bf306ec7.png

 cdfa81fcbeec413aae71f6bbfaebd0e0.png

 二、break 和 continue语句

在执行循环的过程中,当发生一些特殊情况时,我们可能需要提前终止循环或跳过循环的一些过程,这时我们就需要使用breakcontinue 两个关键字

 

 

break语句:用于永久地终止循环,当break被执行,程序就会跳出循环,继续向下运行。

continue 语句:用于跳过continue后面的语句,在while语句for语句中的使用有区别。


While中的break:

4088b04b0a0b46719336befddaf0fffd.png

8c5aafa4a662492484d9ec311eebcf2b.png 

通过上图可知,当a的值小于5时,if语句的表达式条件不满足,break语句未被执行,因此a正常进行循环,并被打印,而当a的值增加到5时,if语句开始执行,break语句使得while循环永久终止,a不再增加,也不再被打印。

 

While中的continue:

当我们将上图的break换为continue时:

c26e86c9ba5b49d284efff9cf6566155.png

baf3662e46e042429af410afd5f2ecae.png 

与break不同的是,continue语句只会跳过某次循环中continue语句后的内容,但通过上图我们却发现,使用continue的结果与break相同,这是因为使a每次循环加1的a++ ;语句在continue的后方,这就导致a的值在达到5之后就不会发生变化,使得if语句的条件总满足,continue语句反复运行,令整个程序陷入了死循环。

若想避免这种情况,使该程序只跳过数字5的打印,则需将a++;语句移至continue前,并将a的初始值设为0(因为a++;语句被移至printf语句的前方,使得结果由先打印,后加1变为先加1,后打印)即可。

f868ccc5849142bbb360317bef1e54fc.png

4be8f0d95e8249ca81f9d0b4071832d7.png 

 

for中的break:

与在while语句中的用法类似:

d910551213eb491996756c95ec959399.png

9465a7e1bceb47a69b47095d84520bf1.png 

 
for中的continue:

当我们将上图的break换成continue时:

2e4a239b7c96429790039fd634302d3e.png

b89bc5f14bc64e9cb18e445d9f38eb45.png 

 可以看到,在for循环中,continue虽然在a为5时,跳过了printf语句,但它并不会影响for语句中的表达式3对循环变量的调整,并且由于表达式3的执行顺序在printf语句之后,因此打印结果非常精确地跳过了数字5并终止于数字10。

do while中的break和continue:

do while循环中breakcontinue的用法与while循环中的用法基本相同。

0fd6ea7901024851953c4807cecd0c41.png

13d645be4dfc46b7bf44770e3b1a56ca.png 

 7e797c2a49cd48518fdcdc75cc731e81.png

76ee4587924c4bb0b3210a0a4ba1c30e.png 


三、goto语句

goto语句是C语言中的一种特别语法,可以实现在同一个函数内跳转到设置好的标号处。

例如:

c97294df86f946feb0d7713f2473f7b2.png

47866a3ececd4f5fbbfc34f8f7ff574c.png 

在本图中,next为跳转标号(跳转标号可以自己设定,不一定为next,也写成again等)。在上图中,程序在打印完“hehe ”后,由goto语句跳转到了跳转标号next处,并继续执行,打印了“跳过了haha的打印”。

❗️注意:goto语句如果使用的不当,可能会扰乱程序的执行顺序,使程序陷入混乱。

goto语句也有其优点,可以利用它来快速跳出多层循环。

9d8c5947c1da48cda6e2a1682f7fa8b7.png

在上图中有多个循环结构,若想利用break语句来跳出,则需要多个,而若使用goto语句则可快速跳出。

四、Q & A

1. while的执行流程?

答:先判断表达式的真假,假,则结束循环;真,则执行语句,直至表达式条件不满足,终止。

 

2. for循环后括号内三个表达式的作用及其执行顺序?(注意之间用分号隔开)

答:表达式1用于初始化循环变量;表达式2用于设定循环的执行(判断)条件;表达式3用于调整循环变量。

表达式1率先执行且只执行一次。表达式2随后执行,表达式3最后执行。

 

3. do-while和while的区别?

答:do while语句至少要执行循环内语句一次,而while则不需要。

 

4. 循环体内想执行多个语句的时候怎么办?

答:使用大括号。

 

5. break和continue的区别?

答:break用于永久地终止循环。

continue则用于在某次循环中跳过其后面的语句(for循环中的表达式3不会被跳过)。

 

6. if可以直接用break和continue吗?在switch里可以应用吗?

答:不可以,break和continue主要应用于循环结构中,不能用于分支结构。

 

7. while、for、do-while使用break和continue有区别吗?

答:有区别(详情见上文)。
 

8. 为何不推荐使用goto语句?

答:因为其使用不当易导致程序逻辑混乱。

 

 

 

 

 

 

 

 

 

  • 9
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值