🌑

Hi Folks.

cpp教学大纲-CSP-J初赛

  1. 计算机硬件与组成原理(选择题必考) 1.1 计算机发展史(第一台电子计算机 ENIAC,冯·诺依曼提出存储程序) 1.2 冯·诺依曼体系结构五大部件(运算器、控制器、存储器、输入设备、输出设备) 1.3 CPU 的组成(运算器 ALU、控制器 CU、寄存器组) 1.4 CPU 执行指令的过程(取指、译码、执行、访存、写回) 1.5 存储器金字塔(寄存器 -> 高速缓存 Cache -> 主存 RAM -> 辅存 磁盘/SSD) 1.6 Cache 局部性原理(时间局部性、空间局部性) 1.7 存储单位换算(Bit -> Byte -> KB -> MB -> GB -> TB -> PB,进制 $1024$) 1.8 内存寻址(按字节编址,每个字节有唯一地址)

  2. 数制转换与编码(计算题必考) 2.1 二进制转十进制(按权展开相加) 2.2 十进制转二进制(整数除二取余倒序,小数乘二取整正序) 2.3 二进制转八进制(三位一组,不足补 $0$) 2.4 二进制转十六进制(四位一组,不足补 $0$) 2.5 八进制与十六进制的表示法(C++中 0 开头八进制,0x 开头十六进制) 2.6 原码的定义(最高位符号位,$0$ 正 $1$ 负,数值位为绝对值) 2.7 反码的定义(正数同原码,负数符号位不变,其余位取反) 2.8 补码的定义(正数同原码,负数反码 $+1$,解决 $0$ 的两种编码问题) 2.9 补码的表示范围($n$ 位补码范围 $-2^{n-1} \sim 2^{n-1}-1$) 2.10 8位二进制补码范围($-128 \sim +127$) 2.11 补码转原码的快速方法(符号位不变,取反 $+1$) 2.12 BCD码与ASCII码的区别

  3. 计算机系统与软件(概念题) 3.1 系统软件(操作系统、编译器、解释器、汇编器) 3.2 应用软件(浏览器、办公软件、游戏) 3.3 计算机语言分类(机器语言、汇编语言、高级语言) 3.4 编译与解释的区别(编译生成可执行文件,解释器逐行执行) 3.5 操作系统的进程管理(进程与线程的区别,并发与并行) 3.6 操作系统的内存管理(虚拟内存、分页、分段) 3.7 文件系统与文件路径(绝对路径、相对路径,Windows用 \,Linux用 /) 3.8 Linux 基本命令(ls 列出目录, cd 切换目录, mkdir 创建目录, rm 删除, cp 复制, mv 移动) 3.9 Linux 权限管理(rwx 读/写/执行,chmod 修改权限) 3.10 Linux 中的 g++ 编译命令(g++ -o out main.cpp -std=c++11)

  4. 计算机网络基础(概念与协议) 4.1 计算机网络定义(多台计算机通过通信线路互联) 4.2 局域网 LAN、城域网 MAN、广域网 WAN 4.3 因特网(Internet)与万维网(WWW)的关系 4.4 OSI 七层模型简述(物理、数据链路、网络、传输、会话、表示、应用) 4.5 TCP/IP 四层模型(网络接口、网际、传输、应用) 4.6 IP 地址(IPv4 32位,点分十进制,IPv6 128位) 4.7 域名系统 DNS(域名解析为IP地址) 4.8 端口号的作用(HTTP 80, HTTPS 443, FTP 21, SSH 22) 4.9 URL 的组成(协议://域名/路径)

  5. 数据结构基础(理论与性质) 5.1 数据结构的逻辑分类(线性结构、树形结构、图形结构) 5.2 线性表的存储方式(顺序存储——数组,与链式存储——链表) 5.3 数组的随机访问特性(时间复杂度 $O(1)$) 5.4 链表的插入删除特性(时间复杂度 $O(1)$,但查找需要 $O(n)$) 5.5 栈的 LIFO 性质应用(递归转非递归、括号匹配、函数调用栈) 5.6 队列的 FIFO 性质应用(缓冲区、BFS、打印队列) 5.7 树的基本概念(根节点、叶子节点、度、层次、深度/高度) 5.8 二叉树的性质(第 $i$ 层最多 $2^{i-1}$ 个节点,深度为 $k$ 最多 $2^k - 1$ 个节点) 5.9 二叉树度数与节点数的公式($N_0 = N_2 + 1$,其中 $N_0$ 叶子,$N_2$ 度为2) 5.10 完全二叉树的定义(除最后一层外每层都满,最后一层从左到右连续) 5.11 满二叉树的定义(每一层都是满的,即完美二叉树) 5.12 二叉树的三种遍历(先序:根左右,中序:左根右,后序:左右根) 5.13 已知前序+中序求后序(前序确定根,中序分左右) 5.14 图的定义(顶点集 $V$ 与边集 $E$) 5.15 有向图与无向图的区别 5.16 邻接矩阵存储(空间 $O(V^2)$,适合稠密图) 5.17 邻接表存储(空间 $O(V+E)$,适合稀疏图) 5.18 树是特殊的图(无环连通图)

  6. 数学与组合计数(排列组合) 6.1 加法原理(分类相加) 6.2 乘法原理(分步相乘) 6.3 排列数公式($A(n,m) = \dfrac{n!}{(n-m)!}$,强调顺序) 6.4 组合数公式($C(n,m) = \dfrac{n!}{m!(n-m)!}$,不强调顺序) 6.5 组合数的对称性($C(n,m) = C(n, n-m)$) 6.6 捆绑法(相邻问题,捆绑后内部排列) 6.7 插空法(不相邻问题,先排其他再插空) 6.8 隔板法(分配问题,将 $n$ 个相同物品分给 $m$ 个人) 6.9 错位排列(全错排问题,$D_n = (n-1)(D_{n-1}+D_{n-2})$) 6.10 容斥原理(两集合容斥:$|A \cup B| = |A| + |B| - |A \cap B|$) 6.11 鸽巢原理(抽屉原理,若有 $n+1$ 个物品放入 $n$ 个抽屉,至少一个抽屉有两个)

  7. 数论基础(初赛常见) 7.1 质数的定义(除了 $1$ 和本身没有其他因子) 7.2 合数的定义 7.3 试除法判定质数(只需试除到 $\sqrt{n}$) 7.4 欧几里得算法(辗转相除法求 gcd) 7.5 $\gcd(a,b) \cdot \operatorname{lcm}(a,b) = a \cdot b$ 7.6 模运算性质($(a+b) \bmod m = (a \bmod m + b \bmod m) \bmod m$) 7.7 同余概念($a \equiv b \pmod m$ 表示 $m \mid (a-b)$)

  8. 算法概念与复杂度分析(初赛重点) 8.1 时间复杂度的上界表示法(大 $O$ 记号,忽略低阶项和常数) 8.2 $O(1)$ 常数级(直接访问、简单计算) 8.3 $O(\log n)$ 对数级(二分查找、二叉树高度) 8.4 $O(n)$ 线性级(单重循环、遍历数组) 8.5 $O(n \log n)$ 线性对数级(快速排序、归并排序) 8.6 $O(n^2)$ 平方级(双重循环、冒泡排序) 8.7 $O(2^n)$ 指数级(递归枚举子集,通常不可行) 8.8 递归算法复杂度的递推式求解(主定理 Master Theorem 基本形态) 8.9 空间复杂度的计算(数组内存占用、递归栈深度)

  9. 阅读程序与完善程序(初赛大题) 9.1 阅读程序时,先看输入与输出,再分析核心逻辑 9.2 变量的生命周期与值的变化(列表追踪法) 9.3 循环终止条件的判断(边界测试,如 <= 与 < 的区别) 9.4 数组下标的偏移陷阱(下标从 $0$ 开始 vs 题目描述从 $1$ 开始) 9.5 递归函数的调用堆栈展开(手工模拟递归执行) 9.6 完善程序(填空)的核心依据(上下文逻辑一致性) 9.7 完善程序中的常见填法(循环变量的初值、终值、递推表达式) 9.8 程序输出题中“静态变量”与“全局变量”的特殊性

  10. 编程语言特性与常见错误(针对读程序) 10.1 短路求值对变量自增的影响(例如 if(a>0 && b++ > 0)) 10.2 逗号表达式的返回值(最后一个值) 10.3 浮点数精度丢失带来的判断错误(如 1.0/3*3 不等于 $1$) 10.4 整数溢出问题(int 最大值加 $1$ 变成负数) 10.5 无符号整数下溢问题($0-1$ 变成极大的正数) 10.6 switch 中缺少 break 的穿透现象 10.7 指针与引用的基础概念(变量别名 vs 地址存储)

教学 — 2026年7月15日

Search