
C语言遵循结构化程序设计思想,所有程序逻辑都可以拆分为三种最基本、不可再分的控制结构:
顺序结构、选择结构、循环结构。
特点:单入口、单出口,结构清晰、无歧义、易调试,是所有复杂程序的基石。
一、顺序结构
- 核心定义
程序按照代码书写的先后顺序,自上而下依次执行,无跳转、无分支、无重复,执行完一条语句立刻执行下一条。
- 执行逻辑
入口 → 语句1 → 语句2 → 语句3 → ... → 出口
- 语法形式
就是普通的变量定义、赋值、输入输出、函数调用,默认都是顺序执行。
c
#include <stdio.h>
int main()
{
int a = 10; // 顺序第1步
int b = 20; // 顺序第2步
int c = a + b; // 顺序第3步
printf("%d",c); // 顺序第4步
return 0;
}
-
特点
-
最简单、最基础的结构;
-
无逻辑判断,无跳转;
-
任何程序默认主干都是顺序结构;
-
每句只执行一次。
-
应用场景
变量初始化、数据输入、简单计算、结果输出等线性流程。
二、选择结构(分支结构)
- 核心定义
根据条件表达式的真假,选择性执行某一段代码,跳过其他代码,实现逻辑分支判断。
- 分类(C语言全部选择形式)
(1)if 单分支
条件为真执行代码块,为假直接跳过。
c
if(条件表达式)
{
// 条件成立执行
}
(2)if...else 双分支
二选一,条件真走A,条件假走B,必走其一。
c
if(条件)
{
// 真分支
}
else
{
// 假分支
}
(3)if...else if...else 多分支
多条件依次匹配,从上到下找到第一个成立的条件就执行,其余全部跳过。
c
if(条件1){}
else if(条件2){}
else if(条件3){}
else{} // 都不满足时执行
(4)switch 多分支
适合固定整型/字符常量匹配的多分支,比多if更清晰、效率更高。
c
switch(表达式)
{
case 常量1: 语句; break;
case 常量2: 语句; break;
default: 默认语句;
}
关键点:break 防止穿透,表达式只能是整型、字符型、枚举。
- 执行逻辑
判断条件 → 匹配分支 → 执行对应代码块 → 跳出分支结构,继续往下顺序执行。
-
特点
-
有逻辑判断,程序不再死板顺序执行;
-
单入口、单出口;
-
可以嵌套(if里套if、switch里套if);
-
分支互斥,只会执行其中一条分支。
-
应用场景
成绩评级、权限判断、菜单选择、奇偶判断、大小比较等。
三、循环结构
- 核心定义
满足条件时重复执行某一段代码,直到条件不成立,退出循环,解决重复操作问题。
- C语言三种循环语法
(1)while 循环(先判断,后执行)
先判条件,条件为真才执行循环体;可能一次都不执行。
c
while(条件表达式)
{
// 循环体
}
(2)do...while 循环(先执行,后判断)
先执行一次循环体,再判断条件;至少执行一次。
c
do
{
// 循环体
}while(条件); // 末尾有分号
(3)for 循环(结构化最强,常用)
把初始化、条件判断、自增/自减写在一行,结构紧凑,适合已知循环次数。
c
for(初始化表达式; 条件表达式; 更新表达式)
{
// 循环体
}
- 辅助控制语句
-
break :直接跳出当前循环/switch,终止循环;
-
continue :跳过本次循环剩余语句,直接进入下一次条件判断;
-
禁止滥用 goto (破坏结构化三种基本结构)。
-
执行逻辑
-
循环条件判断;
-
条件为真 → 执行循环体;
-
回到条件再次判断,重复执行;
-
条件为假 → 退出循环,往下顺序执行。
-
特点
-
实现代码复用、重复运算;
-
支持循环嵌套(for套for、while套if等);
-
三种循环可互相替换,场景略有区别;
-
必须设置循环终止条件,否则造成死循环。
-
应用场景
累加累乘、遍历数组、批量输入输出、延时等待、游戏逻辑循环等。
四、三种结构核心共性与整体关系
-
通用性:任何复杂C语言程序(函数、数组、指针、项目)都仅由这三种结构组合、嵌套而成,不需要其他结构;
-
结构化规范:都遵循单入口、单出口,逻辑规整,可读性强、便于维护;
-
组合关系- 顺序里包含选择、循环;
-
选择里可嵌套顺序、循环、选择;
-
循环里可嵌套顺序、选择、循环;
- 执行层级:顺序是主干,选择做分支分流,循环做重复执行。
五、- 顺序:从上到下,逐条执行;
-
选择:按条件选路,分支执行;
-
循环:满足条件重复执行,直到不满足退出。