《小菜狗 C 语言入门 + 进阶笔记》目录:《小菜狗 C 语言入门 + 进阶笔记》(0)简介
1、引入
在 C 语言中,共有三大常用的程序结构:
- 顺序结构:代码从前往后执行,没有任何“拐弯抹角”;
- 选择结构:也叫分支结构,重点掌握 if else、switch 以及运算符;
- 循环结构:重复执行同一段代码。
前面讲解了顺序结构和选择结构,本节开始讲解循环结构。
C 语⾔提供了 3 种循环语句(while、do while、for)
,while 就是其中⼀种,接下来就介绍⼀下 while 语句。
2、while 循环
while 语句的语法结构和 if 语句非常相似。
2.1、if 和 while 的对⽐
if (表达式)
语句;
while (表达式)
语句;
可见格式上与 if 语句相当的相似,并且只要给定 while 的表达式为真
,while 循环语句会重复执行所包含的语句
。
2.2、while 语法的标准写法
while (表达式) {
语句块
}
流程图:
详细执行流程图:
白话解释:
表达式可以是一个单独的语句,也可以是几个语句组成的代码块,循环语句允许我们多次执行一个语句或语句组。
先计算“表达式”的值,当值为真(非 0)时, 执行“语句块”;执行完“语句块”,再次计算表达式的值,如果为真,继续执行“语句块”……。
这个过程会一直重复,
直到表达式的值为假(0),就退出循环
,程序流将继续执行紧接着循环的下一条语句。
因此,我们通常将表达式
称为循环条件
,把语句块
称为循环体
,整个循环的过程
就是不停判断循环条件、并执行循环体代码的过程。
2.3、举例对比时刻
代码(1):
#include <stdio.h>
int main()
{
if (1)
printf("hehe\n");
return 0;
}
解释说明:
if 语句
的判断条件 1 成立(为真)
,打印⼀次 hehe
后,然后执行到 return 语句正常退出程序。
代码(2):
#include <stdio.h>
int main()
{
while (1)
printf("hehe\n");
return 0;
}
解释说明:
while 循环语句
的循环条件 1 一直成立(为真)
,while 循环会不停地打印输出 hehe
,一直执行下去,永不结束成为死循环
!或者直到用户强制关闭。
这就是他们的区别,if 语句只是判断效果,while 语句是实现循环效果的。
2.4、while 举例
用 while 循环计算 1 加到 100 的值:
#include <stdio.h>
int main(){
int i=1, sum=0;
while (i<=100) {
sum+=i;
i++;
}
printf("%d\n",sum);
return 0;
}
运行结果:
5050
代码详细分析:
- 程序运行到 while 时,因为 i=1,i<=100 成立,所以会执行循环体;执行结束后 i 的值变为 2,sum 的值变为 1。
- 接下来会继续判断 i<=100 是否成立,因为此时 i=2,i<=100 成立,所以继续执行循环体;执行结束后 i 的值变为 3,sum 的值变为 3。
- 重复执行步骤 2)。
- 当循环进行到第 100 次,i 的值变为 101,sum 的值变为 5050;因为此时 i<=100 不再成立,所以就退出循环,不再执行循环体,转而执行 while 循环后面的代码。
3、do…while 循环
do…while 语句的语法结构和 while 语句非常相似。
3.1、do…while 和 while 的对⽐
while 和 do while 都是 C 语言中的循环语句,它们的主要区别在于循环体执行的顺序。
- 不像 while 循环,while 循环是
先判断
,条件如果满足就进⼊循环,执行循环语句。如果不满足就跳出循环; - 而 do…while 循环是
在循环的尾部检查它的条件
。
do…while 循环是先直接进⼊循环体,执行循环语句,然后再执行 while 后的判断表达式
。表达式为真,就会进行下⼀次,表达式为假,则不再继续循环。
while: 你欠我钱,我走路上,前面一人,我先看清楚这个人是不是你,不是就不打。
do while: 你欠我钱,我走路上,前面一人,我不管这个人是不是你,先打再说。
而且:
do…while 循环与 while 循环类似,
但是 do...while 循环会确保至少执行一次循环
。
对比流程图:
详细执行流程图:
3.2、do…while 语法的标准写法
do
{
语句块
} while ( 表达式 );
如果条件为真,控制流会跳转回上面的 do,然后重新执行循环中的 表达式。这个过程会不断复,直到给定条件变为假为止。
3.3、举例
相比前面 2.3 小节
,这里我们用 do-while 循环来计算 1 加到 100 的值:
代码:
#include <stdio.h>
int main(){
int i=1, sum=0;
do {
sum+=i;
i++;
} while (i<=100);
printf("%d\n", sum);
return 0;
}
运行结果:
5050
注意
while(i<=100);
最后的分号;
,这个必须要有。
while 循环和 do-while 各有特点,大家可以适当选择,实际编程中使用 while 循环较多。
4、do while 至少执行一次循环体
4.1、while 循环的实例程序
#include <stdio.h>
int main() {
int i = 5;
while (i < 5) {
printf("i = %d\n", i);
}
return 0;
}
- 可以看到,没有输出结果,直接退出。
4.2、do while 循环的实例程序
#include <stdio.h>
int main() {
int i = 5;
do {
printf("i = %d\n", i);
} while (i < 5);
return 0;
}
输出结果为:
i = 5
- 可以看到,do while 循环先执行了循环体,然后再检查循环条件。
- 即使条件一开始就为假,循环体也会至少执行一次。
总的来说,while 循环适用于在循环之前检查条件,而 do while 循环适用于至少执行一次循环体,不管条件是否成立。
5、循环整体思路
设置一个带有变量的循环条件,也即一个带有变量的表达式;在循环体中额外添加一条语句,让它能够改变循环条件中变量的值。
这样,随着循环的不断执行,循环条件中变量的值也会不断变化,终有一个时刻,循环条件不再成立,整个循环就结束了。
《小菜狗 C 语言入门 + 进阶笔记》目录:《小菜狗 C 语言入门 + 进阶笔记》(0)简介
每日一更!
公众号、CSDN等博客:小菜狗编程笔记
谢谢点赞关注哈!目前在飞书持续优化更新~
日更较慢有需要完整笔记请私我,C/C++/数据结构-算法/单片机51-STM32-GD32-ESP32/嵌入式/Linux操作系统/uboot/Linux内核-驱动-应用/硬件入门-PCB-layout/Python/后期小程序和机器学习!