题组数量
5
阅读程序 3 组,完善程序 2 组。
题组数量
5
阅读程序 3 组,完善程序 2 组。
知识标签
46
首页支持按知识标签筛选题目目录。
逐题解析
42
每题都包含答案、详细讲解、易错点和拓展补充。
阅读重点
11
题目聚成 11 个核心知识模块,便于横向复习。
Knowledge Map
知识点不是按课本目录生硬展开,而是按这份试卷真正出现的考法来聚类,方便把“会做一道题”变成“会做一类题”。
覆盖整数表示范围、进制换算与格雷码,相当于第一轮最典型的“纸面计算题”。
对应题号: 1、2、4
掌握 byte、KB、MB 与 bit 之间的换算,避免十进制和二进制单位混淆。
对应题号: 5
涉及基本数据类型、循环语句、程序补全中的布尔返回值,以及程序的编译执行链路。
对应题号: 6、7、15、33、34、35、36、37
重点是字符字面量、隐式整型提升和字符编码的位移规律。
对应题号: 8
要求会拆情况、会乘法原理和组合数,尤其要能识别“至少一个”的限制条件。
对应题号: 3、14
二分查找的比较次数经常以 log2(n) 的上取整形式出现,是第一轮高频考法。
对应题号: 9
涵盖无向图握手定理与二叉树前中后序互推,重在结构关系的理解。
对应题号: 11、12
利用“后进先出”的约束验证出栈序列是否合法,是典型模拟题。
对应题号: 13
阅读程序部分的递归题考查递归终止条件、调用深度和递推式的等价表达。
对应题号: 27、28、29、30、31、32
楼梯花费题展示了状态定义、状态转移和边界初始化,是第一轮常见 DP 原型。
对应题号: 21、22、23、24、25、26
汉诺塔属于必须会写的经典递归模型,关键是把“大问题拆成两个小问题”。
对应题号: 38、39、40、41、42
Directory
首页保留一览式目录,详情页再展开完整讲解。你可以先按题型缩小范围,再用知识标签快速锁定需要复习的题。
Section
15 道基础题,覆盖数制、组合计数、数据结构、树与图、编译原理等高频知识点。
Question 1
32 位 int 类型的存储范围是?
核心考点:32 位有符号整数通常使用补码表示,取值范围是 -2^31 到 2^31 - 1。
查看详解Question 2
计算 (14₈ − 1010₂) * D₁₆ − 1101₂ 的结果,并选择答案的十进制值。
核心考点:先把八进制、二进制、十六进制都转换成十进制,再代入普通算式。
查看详解Question 3
某公司有 10 名员工,分为 A、B、C 三个部门,人数分别为 4、3、3。现选 4 人组成工作小组,且每个部门至少 1 人,共有多少种选法?
核心考点:“4 人且每部门至少 1 人”意味着人数分配只能是 (2,1,1),再讨论哪个部门出 2 人。
查看详解Question 4
以下哪个序列对应数字 0 至 7 的 4 位二进制格雷码?
核心考点:格雷码要求相邻两个编码恰好只有 1 位不同。
查看详解Question 5
记 1KB = 1024 byte,1MB = 1024KB,那么 1MB 是多少 bit?
核心考点:1 byte = 8 bit,1MB = 1024 * 1024 byte。
查看详解Question 6
以下哪个不是 C++ 中的基本数据类型?
核心考点:`int`、`float`、`char` 都是基本类型;`struct` 是用户自定义复合类型机制。
查看详解Question 7
以下哪个不是 C++ 中的循环语句?
核心考点:C++ 内置的三种常见循环是 `for`、`while`、`do...while`。
查看详解Question 8
在 C/C++ 中,(char)('a' + 13) 与下面的哪一个值相等?
核心考点:字符字面量参与运算时会先转成整数编码,再转回字符。
查看详解Question 9
假设有序表中有 1000 个元素,则用二分法查找元素 X 最多需要比较多少次?
核心考点:二分查找的最大比较次数大约是 `ceil(log2 n)`。
查看详解Question 10
下面的哪一个不是操作系统名字?
核心考点:Linux、Windows、macOS 都是操作系统;Notepad 是应用程序。
查看详解Question 11
在无向图中,所有顶点的度数之和等于什么?
核心考点:无向图的每条边会分别给两个端点各贡献 1 次度数,这就是握手定理。
查看详解Question 12
已知二叉树前序为 [A, B, D, E, C, F, G],中序为 [D, B, E, A, F, C, G],后序遍历结果是?
核心考点:前序首元素是根,中序中根左边是左子树、右边是右子树,再递归拆分。
查看详解Question 13
给定空栈,依次入栈 1 2 3 4 5 6,下面哪种出栈顺序不可能出现?
核心考点:判断栈序列是否合法的关键是:当前要弹出的元素必须位于栈顶。
查看详解Question 14
5 个男生和 3 个女生站成一排,规定 3 个女生必须相邻,共有多少种不同排列?
核心考点:相邻问题优先考虑“捆绑法”,把必须相邻的对象先看成一个整体。
查看详解Question 15
编译器的主要作用是什么?
核心考点:编译器负责把高级语言程序翻译成目标代码,供计算机执行。
查看详解Section
3 段程序阅读,重点考查素数判断、动态规划、递归函数与程序输出分析。
Question 16
当输入为 10 时,程序的第一个输出为 4,第二个输出为 17。
核心考点:10 以内的素数是 2、3、5、7,所以个数为 4,和为 17。
查看详解Question 17
若将 `isPrime` 函数中的循环条件改为 `i <= n / 2`,输入 20 时,`countPrimes(20)` 的输出将变为 6。
核心考点:把循环上界从平方根改到 n/2 会变慢,但不会改变素数判断结果。
查看详解Question 18
`sumPrimes` 函数计算的是从 2 到 n 之间的所有素数之和。
核心考点:`sumPrimes` 的循环变量 `i` 从 2 枚举到 n,遇到素数就累加。
查看详解Question 19
当输入为 50 时,`sumPrimes(50)` 的输出为多少?
核心考点:只要列出 50 以内素数并求和即可。
查看详解Question 20
如果将 `for (int i = 2; i * i <= n; i++)` 改为 `for (int i = 2; i <= n; i++)`,输入 10 时程序的输出是什么?
核心考点:如果把循环跑到 `i == n`,那么任何 `n > 1` 都会因为 `n % n == 0` 被错误判成非素数。
查看详解Question 21
当输入的 `cost` 数组为 `{10, 15, 20}` 时,程序的输出为 15。
核心考点:`dp[i] = min(dp[i-1], dp[i-2]) + cost[i-1]`,最终返回 `min(dp[n], dp[n-1])`。
查看详解Question 22
如果将 `dp[i-1]` 改为 `dp[i-3]`,程序可能会产生编译错误。
核心考点:数组越界通常是运行时逻辑问题,不是编译错误。
查看详解Question 23
程序总是输出 `cost` 数组中的最小元素。
核心考点:程序输出的是“走到楼顶的最小总代价”,不是数组中的最小单个元素。
查看详解Question 24
当输入的 `cost` 数组为 `{1,100,1,1,1,100,1,1,100,1}` 时,程序输出为多少?
核心考点:这是最小花费爬楼梯的经典样例,最优路径会尽量避开 100 这种高代价台阶。
查看详解Question 25
如果输入的 `cost` 数组为 `{10, 15, 30, 5, 5, 10, 20}`,程序输出为多少?
核心考点:手推 DP 时要按照下标顺序逐个算,别试图跳步。
查看详解Question 26
若把 `min(dp[i-1], dp[i-2]) + cost[i-1]` 改为 `dp[i-1] + cost[i-2]`,输入 `cost = {5, 10, 15}` 时,输出为多少?
核心考点:改动后的转移式已经不再比较两条路径,而是强制从前一阶来。
查看详解Question 27
当输入为 `2 3` 时,`customFunction(2, 3)` 的返回值为 64。
核心考点:`customFunction(a, b)` 返回的是 `a * (b + 1)`,不是平方后的结果。
查看详解Question 28
当 `b` 为负数时,`customFunction(a, b)` 会陷入无限递归。
核心考点:递归只在 `b == 0` 时停止,而负数每次都会继续减 1,永远到不了 0。
查看详解Question 29
当 `b` 的值越大,程序的运行时间越长。
核心考点:每增加 1 个 b,就会多产生 1 层递归调用。
查看详解Question 30
当输入为 `5 4` 时,`customFunction(5, 4)` 的返回值为多少?
核心考点:函数值等于 a 被重复相加 `b + 1` 次。
查看详解Question 31
如果输入 `x = 3` 和 `y = 3`,则程序的最终输出为多少?
核心考点:先算递归返回值 12,再平方得到最终输出。
查看详解Question 32
若将 `customFunction` 改为 `return a + customFunction(a - 1, b - 1);`,并输入 `3 3`,程序的最终输出为多少?
核心考点:修改后每层递归同时让 a 和 b 都减 1,相当于求一个递减等差和。
查看详解Section
2 组程序补全,要求根据算法意图补齐边界条件、递归参数和判定语句。
Question 33
在判断平方数程序中,① 处应填什么?
核心考点:完全平方数要从最小正整数 1 开始尝试。
查看详解Question 34
在判断平方数程序中,② 处应填什么?
核心考点:检查完全平方数时,枚举到 `floor(sqrt(num))` 就足够,而且不能少一位。
查看详解Question 35
在判断平方数程序中,③ 处应填什么?
核心考点:要判断 num 是否是某个 i 的平方,条件必须写成 `num == i * i`。
查看详解Question 36
在判断平方数程序中,④ 处应填什么?
核心考点:一旦找到满足条件的 i,就说明 num 是完全平方数,应该立即返回 `true`。
查看详解Question 37
在判断平方数程序中,⑤ 处应填什么?
核心考点:循环结束仍未找到平方根,说明 num 不是完全平方数,应返回 `false`。
查看详解Question 38
在汉诺塔程序中,① 处应填什么?
核心考点:汉诺塔递归的最小子问题是“只剩 1 个盘子”,这时可以直接移动。
查看详解Question 39
在汉诺塔程序中,② 处应填什么?
核心考点:终止条件下只有一个盘子,要直接从源柱移动到目标柱。
查看详解Question 40
在汉诺塔程序中,③ 处应填什么?
核心考点:第一次递归是把前 `i - 1` 个盘子从源柱移到临时柱,此时原目标柱变成辅助柱。
查看详解Question 41
在汉诺塔程序中,④ 处应填什么?
核心考点:第二次递归是把临时柱上的 `i - 1` 个盘子移到目标柱,原源柱这时变成辅助柱。
查看详解Question 42
在汉诺塔程序中,⑤ 处应填什么?
核心考点:两次递归都处理的是“去掉最大盘子后剩下的 i - 1 个小盘子”。
查看详解Source
站点内容以原卷 PDF 为主源,题面经过手工清洗和校对,答案再用外部参考页交叉核验。你可以从下面的入口回看原卷或继续挖同目录资料。