C语言:分支和循环(下)

循环语句

循环语句一共有三种,将依次介绍

1.while语句

样式如下:

和if表达式相似,如果想要表达多层语句同样可以用{}来控制

如图,当执行到while语句时一般判断表达式是否为真,如果为真就执行循环语句,否则结束循环,一般循环内部都会有一个变量来控制循环什么时候结束

举例:打印1-10的数字


2.for循环

for循环是用的最多的一种循环,样式如下:

和while循环一样,for循环也需要一个变量来控制循环的开始与结束

表达式1:对循环变量的初始化

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

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

这里不一定是变量自增,也可以是其他变量的调整。总之,当执行到for循环语句时,先执行表达式1将变量初始化,然后在进行表达式2来判断循环是否执行。当其为真时就执行语句,然后循环结束时执行一次表达式3,通过调整使表达式2逐渐不符合条件时(即返回0)然后循环结束。

在循环中,表达式1只循环一次,剩下表达式2和表达式3在循环

举例:

注:for循环后的括号内是可以没有语句的,我们可以把所有表达式都放在其他语句中,但括号内必须包含两个“;”号例如:


3.while循环和for循环的比较

对比两类代码,我们可以发现,两者的判断条件都在()中,但是for循环中还包含了循环变量的初始化与调整语句,更容易代码的阅读和维护


4.do while循环

do while是运用最少的一种循环,样式如下

与其他两者不同,do while在将变量初始化后不是执行判断语句是否为真再进行循环,而是先执行一次循环语句,然后在去判断是否符合下一次循环的条件,如果为假则循环结束。也就是说,无论判断条件是什么,do while循环至少是要执行一次的

break语句和continue语句 

当我们在执行循环时有时候会碰见执行到一半,后面不想执行了该怎么办呢?这就要用到我们的break语句和continue语句了

  • break语句:顾名思义就是“打破”。它表示永久性的终止,只要执行到了break语句就会立即跳出循环,执行循环后的语句
  • continue语句:可以理解为break的削弱版,当执行到continue语句时不会立即跳出循环,而是跳过本次循环中的代码,值得注意的是for循环和break循环中的continue语句是有所差异的

1.break语句

还是打印1-10的数字,当我们的i等于5时符合if的条件,就执行了break语句,循环立即结束没有后续值了,可以看到break语句在三种循环中的作用是相同的


2.continue语句

2.1 while循环和do while中的continue语句

当我们把上文中的break换成continue时:

我们可以看见结果好像相同,但是好像后面缺少了按任意键结束的部分,光标仍在闪烁,这是为什么呢?

既然没有结束部分,我们就可以知道程序还在运行,这是因为当i等于6,执行了continue语句后跳过了打印语句的同时也跳过了调整语句,所以i没有自增而是一直为6,不断的执行continue语句所以程序陷入死循环。

所以我们注意到在while中使用continue语句时如果调整语句在其后面,就可能造成死循环

2.2 for循环中的continue

同样把我们上面代码的break换成continue来看看结果:

可以看到只有数字“6”没有被输出,这就是因为调整语句的位置不同,在for循环中的continue在执行后循环变量仍能进行调整从而顺利进行


循环的嵌套

实际解决更复杂的问题中我们不止需要一个循环,在循环中嵌套一个循环往往才能更好的解决问题,例如我们需要一个矩阵时:


goto语句

goto语句是一种特殊的语句,他能够实现在同一函数之间的快速跳转,例如:

可以看到goto语句成功的跳过了xixi的打印,但如果随意使用goto语句的话就很容易发生逻辑上的错误,所以建议尽量不去使用。

goto语句还有的一大特点就是在多层,类似与循环嵌套中的使用十分方便,类似与:

能帮助我们在发生错误时快速的跳出多层循环,而不是用break来依次执行


分支和循环    完

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值