第3章 控制流

1. 语句与程序块

  • 表达式语句:表达式后跟分号构成语句
  • 复合语句(程序块):用花括号{}包围的一组声明和语句
  • 在语法上,程序块等同于单个语句

2. if-else语句

if (表达式)
    语句1
else
    语句2
  • else部分是可选的
  • 注意"悬挂else"问题:else与最近的if匹配
  • 使用花括号明确if-else的归属关系

3. else-if语句

用于多路判断:

if (表达式1)
    语句1
else if (表达式2)
    语句2
else if (表达式3)
    语句3
else
    语句4

4. switch语句

switch (表达式) {
    case 常量表达式1: 语句1
    case 常量表达式2: 语句2
    default: 语句n
}
  • case标签必须是整型常量表达式
  • break语句用于退出switch
  • default分支是可选的
  • case只是入口点,执行会"贯穿"到下一个break

5. while循环

while (表达式)
    语句
  • 先测试表达式,为真则执行循环体
  • 循环体可以是单个语句或程序块

6. for循环

for (表达式1; 表达式2; 表达式3)
    语句
  • 等价于:
    表达式1;
    while (表达式2) {
        语句
        表达式3;
    }
    
  • 三个表达式都是可选的
  • 表达式1常用于初始化,表达式2是条件测试,表达式3是步进操作

7. do-while循环

do
    语句
while (表达式);
  • 先执行循环体,再测试条件
  • 至少执行一次循环体
  • 结尾需要分号

8. break和continue语句

  • break:退出最内层的循环或switch
  • continue:跳过当前循环的剩余部分,进入下一次循环测试
  • continue只用于循环,break还可用于switch

9. goto与标签

  • goto语句用于无条件跳转:
    goto 标签;
    ...
    标签: 语句
    
  • 标签是标识符后跟冒号
  • 谨慎使用goto,可能导致程序难以理解
  • 常见用途是从多层嵌套循环中直接跳出

10. 控制流编程示例

本章通过多个示例展示了控制流的使用:

  • 二分查找(binary search)
  • 删除字符串末尾的空格和制表符
  • shell排序算法
  • 反转字符串
  • 数字转换为字符串

这些示例展示了如何组合使用各种控制结构来解决实际问题。

关键点总结

  1. C语言提供了丰富的控制流结构来管理程序执行顺序
  2. 理解各种循环的区别(while先测试,do-while后测试,for紧凑循环)
  3. switch语句提供高效的多路分支,但要注意break的使用
  4. 控制流结构可以嵌套使用以构建复杂逻辑
  5. 谨慎使用goto,通常有更好的结构化替代方案
  6. 良好的缩进和代码布局对控制流结构的可读性至关重要
posted @ 2025-05-06 17:27  MachineGaming  阅读(16)  评论(0)    收藏  举报