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

本讲接续第三讲,将完成分支循环的全部内容。

1. while循环

1.1 if和while的对比

if和while都是要满足表达式成立才可以进入语句的执行。

语法形式基本相同,但是作用不同。if 不能实现循环,而while可以实现循环。以代码为例:

 牛刀小试:输入一个正整数·,逆序打印它的每一位。(前置知识:% 和 / 的用法之一)

2. for循环

2.1 for循环的语法形式

表达式1是初始化部分;表达式2是循环部分;表达式3是调整部分。

while的三个部分在代码量很大的时候,这三个部分就会比较分散,就会不利于代码的维护。

2.2 do-while循环

理论学习后,当然要应用于实践之中啦。实操一下:输入一个正整数,判断它是几位数。这里用用到前面提到的前置知识。

 使用一个变量表示位数,用/操作符去掉一个最低位,count+1,这样一个循环,就可以计算出count的大小即位数。

2.3 break语句和Continue语句

2.3.1 break用于打破循环

2.3.2 continue用于跳过循环里面的部分代码

由以上代码可知,continue直接跳过了后面的代码,使得i一直都是5,一直都是满足 while后面的判断条件的,用词,第一个代码正在死循环(最直接判断死循环的方法就是输出框中是否有一段路径“按任意键关闭此窗口”)。第一个图片中没有“按任意键关闭此窗口”这句话,因此它陷入了死循环。

2.4 while循环中的break 和 continue

这个代码是上面提到的代码,它是一个由于continue而引起的死循环。下面这个代码是break情况的。

break的作用依然是跳出循环,但是它不能用于跳出函数!没有这种说法的。

2.5 for循环中的break和continue

仔细对比这两个代码发现第二个代码中没有出现3,说明3没有被打印,a = 3时,后面的代码被跳过了,但是:continue并没有像break一样直接跳出循环。

2.6 do...while...循环中的break和continue

因为continue,代码又陷入死循环中,在输出窗口中可以观察到光标一直在不停的闪烁。

3. goto语句

3.1 goto的概念及其运用

goto语句是一个跳转符号,可以调到指定位置。也可以用来跳出循环,尤其是层层的循环。但是goto对于初学者来说能不用尽量不要用。跳来跳去的最终不仅代码的逻辑乱了,就连自己的逻辑也乱了。

4. 随机数的生成

4.1 rand函数

rand函数的使用需要引用头文件<stdlib.h>,而且会返回一个伪随机数,把它作为一种随机数。但是第二次运行的时候发现生成的随机数并没有发生变化。这是因为rand随机数是基于一种种子值生成的,种子值默认为1。当种子值不变时,在同一种算法下生成的随机数就是一样的。因此,若要生成真正的随机数,可以考虑改变种子的基准值。

但是,如何改变种子的基准值呢?下面就引出了srand函数。

4.2 srand

srand可以用来初始化种子的基准值

用什么来作为种子呢?这里引出了一直都在变化的时间:time

4.3 time

time_t 返回一个时间戳,即从现在时间到1970年1月1日的时间差。time函数使用时要引用头文件<time.h>。如果只让time返回一个时间戳,指针写成NULL,表示传入一个空指针。但是种子是unsigned int 类型,time返回的是time_t的类型。需要强制类型转换。

这样两次运行的代码就更加随机了。

这样我们就可以利用所学的知识设计一个逻辑游戏--猜数字游戏,对于该游戏,我打算新写一篇博客进行分享!

都看到这儿了,要不点个赞支持一下?

  • 27
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值