本讲定位:从”看得懂代码”到”想得清逻辑”的关键一步。官方大纲要求”了解流程图的概念及基本表示符号,掌握绘制流程图的方法,能正确使用流程图描述程序设计的三种基本结构”——注意用词是”掌握”而不是”了解”,说明要考到具体符号和画法。真题里流程图题有两种形态:给流程图问输出/功能(读图),给代码选流程图(画图)。这一讲还有一个长远价值:流程图是三级”算法描述”知识块的三种方法之一(三级第 08 讲),学完就能一路用到底。
对应官方大纲:二级知识块 3「流程图」——流程图的概念、绘制流程图、描述流程图。
前置知识:一级第 02 讲(顺序结构)、第 07 讲(分支)、第 08 讲(循环)。本讲不引入任何新的编程知识,只是把已学的三种结构换一种方式表达。
代码说明:本讲所有代码均已用 g++ 11.5(
-std=c++11)编译运行验证,输出结果即为文中标注结果。
下图所示流程图的功能是( )
┌─────────┐ │ 开始 │ └────┬────┘ ↓ ╱──────────╲ ╱ 输入 n ╲ ╲ ╱ ╲──────────╱ ↓ ┌─────────┐ │ s ← 0 │ │ i ← 1 │ └────┬────┘ ↓ ╱──────╲ ┌──→╱ i ≤ n? ╲──否──┐ │ ╲ ╱ │ │ ╲──────╱ │ │ ↓是 │ │ ┌─────────┐ │ │ │ s ← s+i │ │ │ │ i ← i+1 │ │ │ └────┬────┘ │ └───────┘ ↓ ╱──────────╲ ╱ 输出 s ╲ ╲ ╱ ╲──────────╱ ↓ ┌─────────┐ │ 结束 │ └─────────┘A. 求 $n$ 的阶乘 B. 求 $1+2+\cdots+n$ C. 求 $n$ 个数的最大值 D. 输出 1 到 $n$
答案:B。
看懂这张图需要两件事:认得每种框代表什么,顺着箭头把变量的变化跑一遍。这一讲就把这两件事讲透。
官方大纲说”了解基本表示符号”——就是下面这六个。
| 符号形状 | 名称 | 用途 | 出入口 |
|---|---|---|---|
| 圆角矩形 / 椭圆 | 起止框 | 标记”开始”和”结束” | 开始只有出口,结束只有入口 |
| 平行四边形 | 输入 / 输出框 | 读入数据、输出结果 | 1 进 1 出 |
| 矩形 | 处理框 | 赋值、计算 | 1 进 1 出 |
| 菱形 | 判断框 | 判断条件 | 1 进 2 出(是 / 否) |
| 箭头线 | 流程线 | 指明执行方向 | — |
| 小圆圈 | 连接点 | 图画不下时接续用 | — |
画出来长这样:
┌─────────┐ ╱──────────╲
│ 开始 │ ╱ 输入 x ╲
└─────────┘ ╲ ╱
起止框 ╲──────────╱
(圆角矩形/椭圆) 输入输出框
(平行四边形)
┌─────────┐ ╱──────╲
│ s ← s+i │ ╱ x > 0? ╲
└─────────┘ ╲ ╱
处理框 ╲──────╱
(矩形) 判断框
(菱形)
⚠️⚠️ 本讲最高频的三个考点,全在符号形状上:
- 判断框是菱形,而且必须有两个出口(标注”是/否”或”Y/N”或”真/假”)。只有一个出口的菱形是错的。
- 输入输出用平行四边形,不是矩形。矩形是处理框(做计算)。
- 起止框是圆角矩形或椭圆,不是矩形。一张完整的流程图有且仅有一个”开始”,但可以有多个”结束”。
💡 一句话记忆:“方框做事,菱形问路,平行四边形进出货,圆角管起止”。
📌 关于赋值的写法:流程图里习惯用
←(如s ← s + i)表示赋值,读作”把右边的值送给左边”,避免和数学的等号混淆。写成s = s + i也算对,考题两种写法都可能出现。
官方大纲明确要求”正确使用流程图描述程序设计的三种基本结构”——这一节是本讲的核心。