在详细讲解三种循环之前,首先让我们了解下循环的概念。
循环四要素:
我在这里写的只是通常所有循环会涉及到的四要素,有时候可能不会显式地写出来。
【1】条件初始化
通常在循环之前定义,使用初始化的条件进行条件判断,以控制循环发生的次数。
【2】条件判断
条件判断会在每次循环结束的时候进行,如果判断结果为true,那么会继续进入下一次循环;如果判断结果为false,那么则会结束循环。在C中若引入数值类型作条件判断,那么会以0作为false,非0作为true。
【3】循环体
指的是每次循环的时候所要进行的行为,通常而言发生多少次循环,循环体就会执行多少次(除了do-while这个另类)。
【4】迭代
迭代指的是重复循环体的执行,目的是在一次次循环中逐渐逼近,并最终得到目标结果(循环判断条件为假或者满足break或者return条件),否则则为死循环,是一种无作用的代码。
For循环:
光讲概念会不会过于抽象了呢,接下来就引入实例来介绍吧
for(初始化条件;循环条件判断;迭代){
循环体
}
for循环可以说是最为标准的循环结构了,包含了循环的四要素,也因此清晰而简单,被大众所喜爱。
在每次循环开始前,系统首先会执行初始化条件,然后进行循环条件判断,若结果为假,则退出循环,执行大括号外内容;若结果为真则进入循环,进入 执行循环体---->执行迭代--->条件判断--->...... 的循环,直到条件判断为假则退出循环。
例如:
for(int i=0;i<3;i++){
printf("你真帅!\n");
}
运行结果为:
系统执行顺序为:
int i=0; -->判断i<3为真 -->打印“我真帅!"并换行 -->i++ -->判断i<3为真
-->打印“我真帅!"并换行 -->i++ -->判断i<3为真 -->打印“我真帅!"并换行 -->i++
-->判断i<3为假 -->退出循环。
实际上无论while,do-while还是for循环,计算机内部执行的都是这样的过程,效率一致,而我们所写的三种形式只是为了程序员编写方便而创造出来的而已。
细节:格式上可以不写条件表达式,循环判断条件和迭代,但是两个分号不能省略。
while循环:
理解了for循环,再去理解while循环就可以说是非常简单了。
while(循环条件判断){
循环体
}
相较于for循环而言,while循环在格式书写上少了条件初始化和迭代。这也意味着我们通常需要手动在while循环前方加上条件初始化,在循环体内部加上迭代,才能完成和for循环一样的效果。
int i=0;
while(i<3){
printf("告诉我谁最帅?\n");
i++;
}
do-while循环:
与while和for循环相比,do-while就可谓一枝独秀----奇葩了。
do{
循环体
}(循环条件判断);//<---注意分号
while和for都会先进行一次条件判断再决定是否进入循环,而do-while循环就好比那平头哥,怎么都要先试试再说。
因此,通常用在一些必须先执行一次才能进行循环条件判断的循环中。(例如博主的期末考试是否要补考)
而在执行次数上如果第一次循环判断条件为假,那么会比for和while循环多一次,否则与其余二者一致。
int i = 0;
do{
printf("点赞的观众老爷最帅!\n");
i++;
} while (i < -1);
实际运用中有可能不会使用循环条件判断而是通过break和return结束循环,不过这一部分博主累了,就留待下次讲了(咕咕咕)。
最后,新人博主,如果讲的不好请多多包涵了(提前祝大家新年快乐)。