🌑

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