循环语句详解


前言

在上一章中,我们介绍了选择语句(分支语句),这一章,我们来介绍下循环语句,并结合实例进行练习

while循环

实现形式:
while(表达式)
{
循环语句;
}
例1:给数组赋值
在这里插入图片描述
例2:打印多组字符
在这里插入图片描述
其中:
EOF为文件结束标志(end of file)值为-1
getchar为获取单个字符
putchar为打印单个字符
ctrl+Z即可退出循环

我们接下来来看看while语句中坑点较多的continue和break
break:
break用于终止循环进行,下面为代码实现:
在这里插入图片描述
continue:
continue用于跳过continue后面的代码直接进入下一次循环判断:
在这里插入图片描述
从上面代码我们发现:程序陷入了死循环。这是因为当i等于5时执行continue,当continue跳过后面的语句后,i并不会自增1,此时i仍为5,进入下一次循环后仍然continue,此后依次循环,while将不会停止,也不会再进行打印;
在这里插入图片描述
我们再来看看下面这段代码,是否也是死循环:
在这里插入图片描述
可以看到,如果i++放在while语句最前头,是不会死循环的,但i是从1开始打印到10,并且数组中并没有5。原因在于,当i等于5时执行continue,continue执行到下次循环后,i++,i变为6,if判断为假,继续执行continue后的语句;
在这里插入图片描述
break与continue的区别
break用于永久终止循环
continue跳过本次循环后面的代码,直接去判断部分,进行下一次循环判断

do while循环

实现形式:
do
{
语句;
}while(表达式)

do while语句执行条件较为严苛,第一次无需判断条件直接进入循环,之后在进行循环条件判断
在这里插入图片描述

在这里插入图片描述

for循环

for相较于while更易于进行调整,修改判断条件,实现形式:
for(expr1;expr2;expr3)
{
循环语句;
}
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
我们来讲讲for循环中break与continue的作用:
for中break与while中的break作用及实现大致相同
在这里插入图片描述
for中的continue
在这里插入图片描述
上述代码打印出来的是否会同while一样是:1234死循环呢?
在这里插入图片描述
答案是不会!为什么呢?接下来我借图来解析:
在这里插入图片描述
while中的continue与for中的continue
while中的continue会跳过调整部分,而for循环中的continue将不会跳过调整部分

for循环的判断部分省略意味着判断恒成立
其初始化部分也可省略,但在下述情况下出现错误

不省略初始化时的打印
在这里插入图片描述
省略初始化时的打印
在这里插入图片描述
分析如下:
在这里插入图片描述
由于在第一次循环结束后进入第二次循环,k没被初始化,所以k为2直接退出内层循环,第三次也是如此,所以只打印第一次外层循环的3次

for循环的变形
在这里插入图片描述
大家想想上述代码执行多少次打印呢?
在这里插入图片描述
原因在于判断条件中,将j赋值为0,0即为假,条件恒为假,不进入循环中

练习

求n的阶乘
思路分析:
n的阶乘为 123*…*n
创建循环变量i,从1开始,用变量 ret 依次乘上 i,直到n,最后返回ret(ret初始化为1)

代码实现:
在这里插入图片描述

求1!+2!+3!..n!
思路分析:
根据第一题的思路,从1开始便将每个ret相加到sum处,返回sum便是答案
在这里插入图片描述

在这里插入图片描述
在有序数组中查找要查找的数字
思路分析:
二分查找(折半查找)
在这里插入图片描述

在这里插入图片描述

总结
今天的内容就讲到这里,请给一个点赞+关注吧!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值