本讲定位:阅读程序三段约 40 分,是全卷分值最大的板块。它不是新知识点,而是把前面各讲的能力合流成一套考场方法:第 01 讲的三武器(列变量表、找不变量、均摊计数)、第 02 讲的补码与溢出、第 03 讲的位运算、第 08 讲的复杂度、第 11 讲的数论程序、第 12 讲的调用树——本讲把它们组织成”三武器 + 陷阱五件套 + 三段配方”的作战体系,按七年真题(见
cspj-exam-analysis-2019-2025.md)逐类实战。前置知识:第 01、02、03、08、11、12 讲。本讲是这些讲的”合流点”,哪讲不熟就回哪讲补。
课时:建议 2 次课。上半:三武器 + 五件套(第 1~4 节);下半:按三段配方实战(第 5~7 节)+ 考场流程。
适合对象:CSP-J 初赛。标注 ⭐ 的小节为进阶内容,第一遍学习可以跳过。
每年 3 段程序,每段配判断题(1.5 分/题)+ 选择题(3 分/题),合计约 40 分。近年三段的题材是高度固定的配方:
| 段位 | 常驻题材 | 真题依据 |
|---|---|---|
| 数论/数学段 | 质数、约数、gcd、平方根、模运算 | 2021/2023/2024/2025,七年从未缺席 |
| DP/递推段 | 爬楼梯、LCS、编辑距离、扔鸡蛋 | 2022–2025 连续四年 |
| 轮换段 | 位运算(2021/2022)、贪心+STL(2025)、字符串(2019/2020/2023) | 三选一轮换 |
对 2026 的预测(详见真题分析 5.3 节):数论段概率 ~90%,DP 段 ~85%,第三段押位运算回归。本讲第 5、6 节就按前两个配方各实战一段,位运算段第 7 节单独交代。
第 01 讲初次亮相的三招,这里升级成标准操作规程。
适用:问”输入 X,输出什么”的题。格式:一列一个变量,一行一轮循环,循环体每执行完一遍填一行。
#include<iostream>
using namespace std;
int main() {
int n, r = 0;
cin >> n;
while (n > 0) {
r = r * 10 + n % 10;
n /= 10;
}
cout << r << endl;
return 0;
}
输入 1234,列表:
| 轮次 | 本轮取出 n % 10 |
r |
n(本轮结束时) |
|---|---|---|---|
| 初始 | — | 0 | 1234 |
| 1 | 4 | 4 | 123 |
| 2 | 3 | 43 | 12 |
| 3 | 2 | 432 | 1 |
| 4 | 1 | 4321 | 0 |