一,do-while循环
1.语法形式
do
语句;
while(表达式);
do-while循环:先进行循环体执行循环语句再执行while后的判断表达式,若为真则继续进行,为假则终止。
练习:1~10的值。
练习:输入一个正整数,计算这个整数是几位数。
二,break和continue语句
1. break的作用是跳过循环,不管循环后期还有多少次,只要break被执行,就直接停止
continue的作用是跳过本次循环continue后的代码,直接去判断部分,在for循环和while循环中有所差异。
注:当 i++放在contime的后面时会造成代码无法跳过以至于导致死循环。
2.for循环中的break和continue
补充:在for循环中的初始化,判断,循环三个表达式都可以省略。但判断部分省略,要注意:如果省略了表达判断部分恒为真(死循环)
3.do while循环中的break和continue
三,循环嵌套
分析:当 i 为0时 j 的值分为0 1 2 3 4,同理当 i 分别为1 2 3 4时也有相应的五个值
所以应该所打印出的是25个 a 。
结果为
当省略for循环内的初始化时:
注释:当 i 为0时 j 打印五个a,当 i 为1时因为 j 的初始化那没有对应的值所以 j 的值还是5, j 不小于五所以不会再次打印。
练习1:找出100~200之间的素数,并打在屏幕上
四,goto语句
goto语句和跳转标号,goto语句可以实现在同一个函数内跳转到设置好的标号处。
goto a; 转到某某语句
a: 当转入某某语句时使用名称后要用冒号来表示后面要转入的语句
适用范围,在多层循环代码中,如果想要快速跳出,使用goto语句。
五,猜数字游戏:
成果展示:
补充:
1.rand
这个函数可以生成随机数,函数模型:int rand (viod)
注:这里需要两个头文件!!!
#inclued<stdio.h>
#include<stdlib.h>
当然这里生成的数字虽是随机数但就会发现无论多少次所生成的总是那几个数字!
这被称为伪随机数。
rand函数是对“种子”的基准值进行运算生成的随机数,其rand函数生成的随机数的默认种子是1。
所以直接所生成的数是一样的。
2.srand
srand函数是用来初始随机数的生成器,srand原型:void seand (unsigned int seed);
程序中在调用rand函数之前先调用srand函数,通过srand函数的参数seed来设置rand函数生成随机数的时候的种子,只要种子在变化,则每次生成的随机数就开始变化。
3.time
在程序中我们一般是使用程序运行时间作为种子,因为时间时刻在发生变化
time函数,可以获得这个时间,time原型:time_t time (time_t*timer);
time函数会返回当前的日历时间,单位(秒),返回类型是time_t类型,其time_t类型本质上就是32位或者64位的整形类型。
如果 timer 是NULL,就只返回这个时间的差值,time函数返回的这个时间差也被叫做:时间戳。
time函数需要头文件:time.h
改完综合如以下所视:
srand((unsigned int ) time (NULL))//在同一算法下所得的结果相似甚至相同(在短时间内)所以在猜数字游戏设置时只需执行一次即可。
第一次结果:
第二次结果:
第三次结果:
补2.随机数的生成方式:
1.rand函数生成随机数(0~32767)
2.在rand函数使用之前,现所需调用srand设置随机数生成的基准值
可以使用time函数的返回值,做基准值
注:在一次程序运行中,只需要设置一次基准值就行,后面可以多次生成随机值。
1>设置随机数的范围
若生成0~99之间为:
rand( ) % 100;
若生成1~100之间:
rand ( ) % 100+1;
若生成100~200之间的随机数:
100 + rand ( ) % (200 - 100 + 1);
若生成a~b的随机数:
a + rand( ) % (b - a + 1);