C语言三种基本程序结构详解

C语言遵循结构化程序设计思想,所有程序逻辑都可以拆分为三种最基本、不可再分的控制结构:

顺序结构、选择结构、循环结构。

特点:单入口、单出口,结构清晰、无歧义、易调试,是所有复杂程序的基石。

一、顺序结构

  1. 核心定义

程序按照代码书写的先后顺序,自上而下依次执行,无跳转、无分支、无重复,执行完一条语句立刻执行下一条。

  1. 执行逻辑

入口 → 语句1 → 语句2 → 语句3 → ... → 出口

  1. 语法形式

就是普通的变量定义、赋值、输入输出、函数调用,默认都是顺序执行。

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;

}

  1. 特点

  2. 最简单、最基础的结构;

  3. 无逻辑判断,无跳转;

  4. 任何程序默认主干都是顺序结构;

  5. 每句只执行一次。

  6. 应用场景

变量初始化、数据输入、简单计算、结果输出等线性流程。

二、选择结构(分支结构)

  1. 核心定义

根据条件表达式的真假,选择性执行某一段代码,跳过其他代码,实现逻辑分支判断。

  1. 分类(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 防止穿透,表达式只能是整型、字符型、枚举。

  1. 执行逻辑

判断条件 → 匹配分支 → 执行对应代码块 → 跳出分支结构,继续往下顺序执行。

  1. 特点

  2. 有逻辑判断,程序不再死板顺序执行;

  3. 单入口、单出口;

  4. 可以嵌套(if里套if、switch里套if);

  5. 分支互斥,只会执行其中一条分支。

  6. 应用场景

成绩评级、权限判断、菜单选择、奇偶判断、大小比较等。

三、循环结构

  1. 核心定义

满足条件时重复执行某一段代码,直到条件不成立,退出循环,解决重复操作问题。

  1. C语言三种循环语法

(1)while 循环(先判断,后执行)

先判条件,条件为真才执行循环体;可能一次都不执行。

c

while(条件表达式)

{

// 循环体

}

(2)do...while 循环(先执行,后判断)

先执行一次循环体,再判断条件;至少执行一次。

c

do

{

// 循环体

}while(条件); // 末尾有分号

(3)for 循环(结构化最强,常用)

把初始化、条件判断、自增/自减写在一行,结构紧凑,适合已知循环次数。

c

for(初始化表达式; 条件表达式; 更新表达式)

{

// 循环体

}

  1. 辅助控制语句
  • break :直接跳出当前循环/switch,终止循环;

  • continue :跳过本次循环剩余语句,直接进入下一次条件判断;

  • 禁止滥用 goto (破坏结构化三种基本结构)。

  1. 执行逻辑

  2. 循环条件判断;

  3. 条件为真 → 执行循环体;

  4. 回到条件再次判断,重复执行;

  5. 条件为假 → 退出循环,往下顺序执行。

  6. 特点

  7. 实现代码复用、重复运算;

  8. 支持循环嵌套(for套for、while套if等);

  9. 三种循环可互相替换,场景略有区别;

  10. 必须设置循环终止条件,否则造成死循环。

  11. 应用场景

累加累乘、遍历数组、批量输入输出、延时等待、游戏逻辑循环等。

四、三种结构核心共性与整体关系

  1. 通用性:任何复杂C语言程序(函数、数组、指针、项目)都仅由这三种结构组合、嵌套而成,不需要其他结构;

  2. 结构化规范:都遵循单入口、单出口,逻辑规整,可读性强、便于维护;

  3. 组合关系- 顺序里包含选择、循环;

  • 选择里可嵌套顺序、循环、选择;

  • 循环里可嵌套顺序、选择、循环;

  1. 执行层级:顺序是主干,选择做分支分流,循环做重复执行。

五、- 顺序:从上到下,逐条执行;

  • 选择:按条件选路,分支执行;

  • 循环:满足条件重复执行,直到不满足退出。

相关推荐
大圣编程20 分钟前
Java 多维数组详解
java·开发语言
殳翰3 小时前
下服务器端开发流程及相关工具介绍(C++)
开发语言·c++
落寞的星星4 小时前
这个对象就包含了已经转换好的DFA和各种词法分析器运转所需要的参数。下一步,我们就可以用ScannerInfo对象创建出Scanner对象,请看下面的代码:
开发语言·c#
nothing&nowhere4 小时前
用 Python 做问卷数据清洗:无效样本检测与处理实战
开发语言·python·数据清洗·数据处理·问卷星·问卷星脚本·刷问卷
2601_961593424 小时前
Rust 开发环境配置繁琐?RustRover 开箱即用搞定编码调试
开发语言·后端·macos·rust
HZZD_HZZD5 小时前
DL/T 645-2026新国标深度解读与智能电表协议适配实战:从帧结构变化到Java采集器升级的全链路改造方案
java·开发语言
多加点辣也没关系7 小时前
JavaScript|第4章:类型转换
开发语言·javascript
聪慧的水蜜桃7 小时前
【YFIOs】用C#开发硬件之设备上云
开发语言·c#
yqcoder7 小时前
httpOnly 是什么,又有什么用?
开发语言·前端·javascript
山登绝顶我为峰 3(^v^)37 小时前
C/C++ 交叉编译方法
java·c语言·c++