这篇介绍for循环和do while循环 ,以及goto语句
3.2 for 循环
3.2.1 语法结构:
for循环的执行流程图:
注意:for循环后面如果没有加大括号只能控制一个语句,要控制多条语句要用大括号括起来。
3.2.2 break和continue在for循环中
在while循环中,我们已经知道break是终止循环的;continue是跳过本次循环,转到下次循环中。那么break和continue在for循环是怎样的呢?
我们不难发现,他们的意义和在while循环中是一样的。
3.2.3 for循环的一些变种
(1)
初始化和调整部分的省略就是什么也不写;判断部分省略就意味着条件恒为真,因此就死循环了。通常来说不建议省略,很容易出现问题。
(2)
在上面的例子中,如果给for循环括号里分别补上a=0,b=0,运行结果是16个hhh;但是把这省略,刚开始a初始化为0,进入外循环条件成立再进入内循环,b=0,1,2,3条件成立,因此打印4个hhh,b=4时条件不成立,跳出内循环; 再次到外循环,a=1条件成立,又到内循环,注意:因为内循环初始化省略,所以b的值还是保持上次的4,条件不成立,再跳出内循环,以此类推,只打印4个hhh。
3.3 do...while()循环
3.3.1 语法结构:
do while循环的流程图:
特点:循环至少执行一次,使用的场景有限,所以不是经常使用。
3.3.2 do while循环中的break和continue
与while 和 for 循环一样,do while循环的break也是输出4次a,当a满足条件时跳出循环; 与while 和 for 循环的功能是一样的,但是do while循环的continue每次跳出的时候a始终是5,判断为真一直执行,结果程序不能终止。
4.goto语句
5. 练习
(1)二分查找(找1-10中的一个数字,如果找到,则输出其下标;反之,则输出找不到)
原理图:
- 确定范围内左右下标 left ,right
- 根据 left ,right确定中间元素mid
- 根据mid确定的元素和查找的元素比较,再确定相应的left或right
前提:有序的数组
(2)多个字符从两端向中间汇聚
示例:
welcome to my home!!!!!!!
#########################
w#######################!
we#####################!!
......
welcome to my home!!!!!!!
(3)用户登入情景,只能登录三次,否则退出程序
注意:两个字符串比较相等不能使用==,应该使用strcmp库函数 (比的是对应字符串位置上的ASCII码值)。
- strcmp返回0表示2个字符串相等
- strcmp返回>0的数字,表示第一个字符串大于第二个字符串
- strcmp返回<0的数字,表示第一个字符串小于第二个字符串
(4)猜数字游戏
- 电脑生成一个随机数
- 猜数字 :大了,继续猜;小了,继续猜;猜对了,结束游戏
- 玩完一局继续玩,不用退出游戏
int r = rand() % 100 + 1;//可以生成随机数,范围为:0-32767
srand((unsigned int)time(NULL));//要给srand传递一个变化的值,因为计算机上的时间是时刻变化的,time函数可以返回一个时间戳
记住要有相应的头文件!!!
注意:别把生成随机数放在循环里,不然每猜一次数字,又会生成新的随机数,等于说永远猜不到