| 题号 | 题型 | 答案 | 考点 | 解题思路 |
|---|---|---|---|---|
| 第 1 题 | 选择题 | A | 输入输出 | 这题考输入输出设备分类。拿到题先想:输出是把计算机内部信息送出去,输入是把外界信息送进来。麦克风是收声音的,属于输入,直接锁定。 |
| 第 2 题 | 选择题 | C | 二分查找 | 这道题考二分查找的最坏情况步数。拿到1到100这个范围,先想每次猜中点能砍掉一半区间,再算2的几次方才够盖住100,向上取整就是答案。 |
| 第 3 题 | 选择题 | C | 分治算法、函数与递归 | 别一上来就背结论,先逐项验证。A看定义,B想迭代实现,D想并行,唯独C这种绝对化表述要警惕,分治≠二分,复杂度得看递推式。 |
| 第 4 题 | 选择题 | C | — | 这题考循环与递归的本质区别,别被‘等价’忽悠了。拿到题先看factA的for循环和factB的函数自调,再想栈空间限制,最后识别C选项‘任何’这种绝对化陷阱。 |
| 第 5 题 | 选择题 | B | — | 这题别盯着循环逻辑看,先别管代码执行过程,直接看变量声明!看到 'const char s[]' 就明白数组只读,根本改不了内容,输出自然还是原样。 |
| 第 6 题 | 选择题 | D | 二分查找 | 二分查找的核心是区间折半,别光背复杂度,拿到题就动手模拟:每次循环看 mid 怎么算、left 和 right 怎么变,数一数 while 循环体到底执行了几次,就能把四个选项逐个… |
| 第 7 题 | 选择题 | C | — | 这题考的是C++里string类和char数组的底层区别,特别是赋值时的拷贝与引用。拿到题先盯着类型:str1是string对象,str2是它的副本,str3是定长字符数组,str… |
| 第 8 题 | 选择题 | D | 函数、函数定义与调用 | 这题考函数重载与重复定义的区别。拿到题别急着选A,先比参数表:无参版f1()与带int版f1(int n)参数不同,合法重载;再按调用实参匹配对应定义,依次输出f1()、f1(0)… |
| 第 9 题 | 选择题 | B | — | 这题考异常处理机制。做题时先盯死选项里的绝对词,比如“一定”,异常能被 catch 住时程序照样跑,所以含绝对词的往往就是坑。 |
| 第 10 题 | 选择题 | B | 循环控制 | 看到嵌套循环别慌,直接在草稿纸按行模拟:外层i从5递减到1,内层while根据i值反复跳减,每轮print紧跟其后,把变量状态逐行记下来就行。 |
| 第 11 题 | 选择题 | C | 函数与递归、算法 | 这题一眼就是欧几里得算法,核心就是看递归里参数怎么变:从(a,b)变成(b,a%b),直到b为0返回a,这就是辗转相除求最大公约数的标准写法,直接选C。 |
| 第 12 题 | 选择题 | D | 复杂度分析 | 这题考的是排序算法的时间与空间复杂度辨析。拿到题先看sortA和sortB分别是什么算法,再结合最好、最坏、平均三种情况去匹配选项,尤其要警惕把O(N)和O(log N)搞混。 |
| 第 13 题 | 选择题 | C | 函数与递归、分治算法 | 拿到题先别急着看代码细节,直接盯函数签名和调用逻辑:有没有‘自己调自己’?有没有‘把大问题拆成小问题分别解再合并’?这两点同时出现,答案自然出来了。 |
| 第 14 题 | 选择题 | B | 分治算法 | 这题考分治思想与筛法的本质区别。拿到题先想‘分治三要素:划分、递归、合并’,再看算法流程是否包含‘把大问题拆成小问题解决后合并’。埃氏筛只是反复标记倍数,没有拆分与合并,直接排除。 |
| 第 15 题 | 选择题 | B | 链表 | 这题考链表基础概念辨析,尤其要分清单链表、双链表和循环链表的遍历能力。拿到题先别急着选,把四个选项对应到链表结构特性上:数组能模拟链表吗?头部插入真的O(1)吗?循环链表到底能不能… |
| 第 16 题 | 判断题 | A | — | 这道题考的是计算机五大硬件部件的完整记忆,拿到题先核对题干是不是把运算器、控制器、存储器、输入、输出这五样都列齐了,缺一个就是错。 |
| 第 17 题 | 判断题 | B | 算法 | 这题考的是对'唯一分解定理'概念本质的理解。拿到题别急着背定义,先拆解'唯一'到底修饰谁。定理里'唯一'说的是'分解结果'唯一,不是'分解方法'唯一。把这两个词对号入座,就能一眼看… |
| 第 18 题 | 判断题 | B | 复杂度分析、算法 | 这题考的是埃氏筛法的核心原理与复杂度。拿到题先想:筛法不是对每个数做试除,而是用已找到的质数去标记倍数。题目说"判定一个数要O(N)",这直接违背筛法思想,所以答案选B。 |
| 第 19 题 | 判断题 | B | 贪心算法、动态规划、算法 | 这题考贪心算法的本质,看到‘必然能实现全局最优’这种绝对化表述,立刻警觉——贪心只保证局部最优,全局最优需要满足特定条件或证明,直接举反例(如0 1背包)即可否定。 |
| 第 20 题 | 判断题 | A | 函数 | 这题考函数指针。拿到题先想:C++里函数名在表达式中会退化为地址,所以它本质上就是个整数值,完全可以像普通变量一样传给参数,因此选A。 |
| 第 21 题 | 判断题 | B | — | 这道题考的是 STL 中 std::sort 的模板机制和比较器传参。很多同学死记硬背'sort 需要比较器',却忽略了比较器完全可以自定义,从而误以为只能排基础类型。拿到题先想:… |
| 第 22 题 | 判断题 | B | 数据结构 | 直接拆掉'任何场景'这个绝对词,对比数组和链表在随机访问、内存占用、缓存友好度上的硬伤,就能一眼看出命题人想让你选错。 |
| 第 23 题 | 判断题 | A | — | 这道题考的是C++动态内存管理的核心规则——new/delete配对。拿到题先别急着选,脑子里过一遍:指针来源是new还是malloc还是栈?delete只能救new,别的都得死,… |
| 第 24 题 | 判断题 | A | 算法 | 别死记结论,直接看算法过程:选择排序每轮挑最小值跟当前位置换,快排分区时左右元素乱跳。只要涉及‘交换’,相等元素的先后顺序就保不住,所以两个都不稳定。 |
| 第 25 题 | 判断题 | B | 算法、二分查找 | 这题考二分查找的适用前提,拿到题先想二分法的核心逻辑是什么,再对照题干条件判断是否成立。 |
建议按「限时做 → 对答案 → 读常见错误」三步走。先按考试的真实节奏做完,再回来看每一题的解析;尤其是"常见错误"那一段——它对应的是命题人反复设置的陷阱,读完能直接迁移到同类题上。
想做限时模考,可在 OI伴学 平台切换考试模式;错题会自动归集,并按考点推荐同类练习。