顺序结构
这是最基本、最简单的结构,程序会按照代码的书写顺序,从上到下,一行一行地依次执行。

(图片来源网络,侵删)
特点:
- 线性执行:代码没有分支,也没有重复。
- 起点和终点:程序从第一条语句开始,到最后一条语句结束。
例子: 一个简单的计算器程序,先输入两个数,然后计算它们的和并输出。
#include <stdio.h>
int main() {
int a, b, sum;
// 1. 定义变量 (顺序执行)
// 2. 提示用户输入
printf("请输入第一个整数: ");
// 3. 读取用户输入
scanf("%d", &a);
// 4. 再次提示用户输入
printf("请输入第二个整数: ");
// 5. 再次读取用户输入
scanf("%d", &b);
// 6. 进行计算
sum = a + b;
// 7. 输出结果
printf("两数之和是: %d\n", sum);
// 8. 程序结束
return 0;
}
在这个例子中,程序严格按照 定义 -> 提示 -> 输入 -> 计算 -> 输出 的顺序执行,没有任何跳转或重复。
选择结构
也称为分支结构,程序会根据给定的条件判断,选择执行不同的代码分支。

(图片来源网络,侵删)
特点:
- 条件判断:需要一个布尔表达式(条件)来决定执行哪个分支。
- 非此即彼或多选一:在某个时刻,只有一个分支会被执行。
主要形式:
- if 语句:最基本的选择结构。
- if-else 语句:二选一的结构。
- if-else if-else 语句:多选一的结构。
- switch 语句:多分支选择,常用于多个离散值的判断。
例子: 判断一个整数是奇数还是偶数。
#include <stdio.h>
int main() {
int num;
printf("请输入一个整数: ");
scanf("%d", &num);
// 使用 if-else 选择结构
if (num % 2 == 0) { // 条件:num除以2的余数是否为0
printf("%d 是一个偶数,\n", num);
} else {
printf("%d 是一个奇数,\n", num);
}
return 0;
}
在这个例子中,程序会先判断 num % 2 == 0 这个条件,如果条件为真(true),则执行 if 分支的代码;如果条件为假(false),则执行 else 分支的代码,绝不会同时执行两个分支。

(图片来源网络,侵删)
循环结构
也称为重复结构,程序会在满足特定条件的情况下,重复执行某一段代码。
特点:
- 重复执行:代码块会被执行零次或多次。
- 循环控制:需要一个循环条件,并在循环体内有能改变循环条件的语句,以避免无限循环。
主要形式:
- for 循环:适用于循环次数已知的情况。
- while 循环:适用于循环次数未知,但循环条件明确的情况。
- do-while 循环:至少执行一次循环体,然后再判断条件。
例子:
使用 for 循环打印从1到10的数字。
#include <stdio.h>
int main() {
int i;
// 使用 for 循环结构
// 1. 初始化: i = 1
// 2. 条件判断: i <= 10
// 3. 循环体: printf
// 4. 更新: i++
for (i = 1; i <= 10; i++) {
printf("%d ", i);
}
printf("\n");
return 0;
}
在这个例子中,for 循环会重复执行 printf 语句,每次循环后,i 的值都会加1,直到 i 的值大于10时,循环条件 i <= 10 不再满足,循环结束。
这三种基本结构是构建所有程序的基石:
| 结构名称 | 特点 | 关键字 | 应用场景 |
|---|---|---|---|
| 顺序结构 | 从上到下,依次执行 | (无特定关键字) | 程序的初始化、输入、计算、输出等线性操作。 |
| 选择结构 | 根据条件,选择执行不同分支 | if, else, switch |
需要根据不同情况做出不同判断时,如游戏逻辑、数据验证。 |
| 循环结构 | 在满足条件时,重复执行代码块 | for, while, do-while |
需要重复执行某项任务时,如遍历数组、累加计算、处理文件。 |
一个实际的程序通常是这三种结构的嵌套和组合。
一个程序可能先顺序执行初始化,然后进入一个循环结构(如 while(1)),在循环内部,根据用户的选择,使用选择结构(switch)来调用不同的功能函数,这种组合使得C语言能够解决从简单到极其复杂的各种问题。
