- 六、循环控制结构
为了解决连续计算的问题需求,而产生了循环控制结构。若重复次数已知,则为技术控制,若次数未知,结构为条件控制则为条件控制结构。循环结构分两种结构,三种语句。
一:当型循环,先判断,再执行。
- while语句,满足条件即执行循环。
- for语句。for语句为一种特殊的当型循环,也是最常用的循环结构。其结构为(初始化语句;循环控制语句;增值语句)在每一次循环体被执行前,都要对循环控制进行一次判断
二:直到型循环,先执行一次循环结构,在对条件判断,然后执行。do-while语句
三种语句都可以相互转化,while语句和do-while语句非常相似,很多时候当循环体和控制结构一致时是等价的,不过若是第一次测试的结果就为假时不等价。
若循环控制语句为空语句,则无限循环;若循环体为空语句,则什么也不做,常用于编写延时程序。对比: ①for();→延时 ②while();→死循环
当我们需要诸如累加累乘的组合,行与列组合的输出时,需要通过嵌套来解决问题,即循环的循环体中包含循环,外层为主循环,内层为主体中每个元素的循环。
有时候写循环结构时需要用到随机数。产生随机数的函数为rand(),头文件加 <stdlib>,不过每次执行程序时,所产生的随机数序列是一样的,若要产生不同的随机数序列,可以使用strand(seed),即为rand()设置一个随机数种子;有时还可把计算机的时钟值设置为随机数种子(time)如strand(time(null)),头文件<time.h>
goto、break、continue和return是用于控制流程转移的跳转:
- goto为无条件转向语句,在不需要任何条件下使程序跳转到该语句,不过通常与if连用。此语句常出现逻辑错误或死代码。
- break语句更加常用,即终止循环,break时直接跳转到循环语句后,我们常在找到第一个满足式时需要立即跳出时使用break。
- Continue 当使用continue语句时,将直接开始下一次循环,continue后的语句不再执行,即只结束本次循环,并不终止整个循环。
注意:1.在使用嵌套循环时,break和continue。只对包含他们的最内层循环起作用,break不能跳出多层循环,只能一层一层的来,不过goto可以直接跳出。
2.bool常量 只能取0或1,可以对逻辑是否成立标记。exit(0)也可以直接结束程序运行。3.在使用循环条件时,数据的结果可能会很大,需要在定义时,就采取取值范围更大的类型定义变量,防止类型溢出。
3.注意循环中分号的使用,对循环控制判断时一定要判断明确。