一、循环结构概述
1. 为什么需要循环结构
- 用于处理规律性的重复计算或操作。
- 避免代码冗余,提高代码简洁性和功能性。
- 例如:输入1000名学生的身高并计算平均身高。
2. 循环结构的四要素
- 循环体:重复执行的核心操作。
- 循环初始条件:循环控制变量的初始化。
- 循环控制条件:决定是否继续循环的表达式。
- 循环控制变量的修改:使循环能正常退出,避免死循环。
二、三种循环语句
1. while 循环
-
语法形式:
while (表达式) { 循环体; } -
执行流程:
- 判断表达式是否为真(非0)。
- 若为真,执行循环体,返回步骤1;否则退出循环。
-
特点:
- 先判断后执行。
- 循环体执行次数:0到多次。
- 循环体可以是空语句、表达式语句、函数调用、控制语句或复合语句。
-
注意事项:
- 必须有修改循环控制变量的语句。
- 避免死循环。
2. do-while 循环
-
语法形式:
do { 循环体; } while (表达式); -
执行流程:
- 先执行一次循环体。
- 判断表达式是否为真。
- 若为真,继续执行;否则退出。
-
特点:
- 先执行后判断。
- 循环体至少执行1次。
-
适用场景:适用于初始条件不易确定,且至少需执行一次的情况。
3. for 循环
-
语法形式:
for (表达式1; 表达式2; 表达式3) { 循环体; } -
执行流程:
- 执行表达式1(初始化)。
- 判断表达式2(控制条件)。
- 若为真,执行循环体,再执行表达式3(更新),返回步骤2;否则退出。
-
特点:
- 结构紧凑,适合已知循环次数的情况。
- 循环体执行次数:0到多次。
-
灵活用法:
- 可以省略表达式1、表达式2或表达式3(但分号不能省略)。
- 表达式1和表达式3可以是逗号表达式。
- 循环体可为空语句,操作可移至表达式3中。
三、循环嵌套
1. 概念
- 一个循环体内包含另一个循环,称为循环嵌套。
- 外层循环每执行一次,内层循环从头执行一遍。
- 常见有二重循环、三重循环等。
2. 嵌套类型
- 控制变量无交叉:内层循环次数固定。
- 控制变量有交叉:内层循环次数依赖于外层循环变量。
3. 示例:打印图形
-
打印5×5星号矩阵:
for (i = 0; i < 5; i++) { for (j = 0; j < 5; j++) { printf("* "); } printf("\n"); } -
打印右三角形星号:
for (i = 1; i <= 5; i++) { for (j = 1; j <= i; j++) { printf("*"); } printf("\n"); }
四、循环应用实例
1. 累加求和(1到1/100)
-
使用
while、do-while或for实现。 -
核心代码:
sum = 0; for (n = 1; n <= 100; n++) { sum += 1.0 / n; }
2. 求最大值与最小值
-
思路:将第一个输入的数作为初始最大值和最小值,后续输入逐一比较更新。
-
代码示例:
max = min = d; // d为第一个输入的数 for (i = 2; i <= 10; i++) { scanf("%d", &d); if (d > max) max = d; if (d < min) min = d; }
3. 计算平均分
- 循环输入多个成绩并累加,最后计算平均值。
五、重点与难点
重点
- 循环结构的构建方法。
while、do-while、for语句的使用。- 循环嵌套的程序设计。
难点
- 循环条件的正确设置与更新,避免死循环。
- 嵌套循环的逻辑理解与编写。
- 循环与选择结构的结合使用。
六、思考题
- 选择结构与循环结构的区别是什么?
while与do-while如何等价转换?