| 题号 | 题型 | 答案 | 考点 | 解题思路 |
|---|---|---|---|---|
| 第 1 题 | 选择题 | D | — | 看到“高级语言生成可执行代码”,立刻锁定“翻译”这个动作。编辑和保存只是文件操作,调试是运行后的事,只有编译能把人类写的代码变成机器能跑的指令,这就是本题唯一的突破口。 |
| 第 2 题 | 选择题 | C | 算法 | 这道题考排序算法的稳定性,核心是看相等元素排序前后相对位置是否改变。拿到题先别急着背结论,把每个算法的‘交换机制’在脑子里跑一遍:冒泡只换相邻、插入是往后挪、选择是跨距换——谁动了… |
| 第 3 题 | 选择题 | C | — | 答案C。指针变量存储的是内存地址。定义指针时必须指定指向的类型(如int 指向int)。nullptr表示空指针。 |
| 第 4 题 | 选择题 | D | — | 这题核心就是死磕二维数组的内存布局定义。拿到题先想:C++里标准二维数组声明(如 a[3][4])在内存里到底长啥样?一维数组肯定是连续的,二维数组本质是“一维数组的一维数组”,所… |
| 第 5 题 | 选择题 | A | — | 这题考函数基本要素。别被‘必须’吓住,先想函数本质是代码块,得有名字才能被调用;参数、返回值、定义位置都是可选项。 |
| 第 6 题 | 选择题 | D | — | 这题考的是变量作用域和命名规则。别被'类型不同'这种强干扰项带偏,核心就一句话:C++ 允许同名变量共存,唯一合法的途径就是它们的作用域不同。拿到题先想'名字冲突怎么解决',直接锁… |
| 第 7 题 | 选择题 | D | — | 这题考数组内存计算。拿到题先别急着背结论,先想清楚:double到底占几个字节?数组里到底藏了几个元素?把这两个数乘起来就是答案。 |
| 第 8 题 | 选择题 | B | — | 看到 int p = nullptr; 先别急着看 p 指向哪,直接看 p 左边那个 int 是什么——它定义了 p 这个变量的类型。记住:指针变量的类型永远是它所指向的数据类型,… |
| 第 9 题 | 选择题 | C | — | 这题核心就两点:二维数组在内存里是‘按行连续’存的,所以算地址差得用 i×列数 + j 的公式;其次 int 在四级考纲里固定是 4 字节。拿到题先数列数(3),再算两个下标对应的… |
| 第 10 题 | 选择题 | C | 位运算 | 看到&=先转二进制:6是110,3是011,按位与得010即2。 |
| 第 11 题 | 选择题 | A | — | 这题考指针和数组的等价关系。拿到题先别急着看选项,把指针 p 指向的具体元素值算出来,再想清楚赋值操作到底是改谁,最后代入数组下标变化即可。 |
| 第 12 题 | 选择题 | A | — | 二维数组传参时,数组名会退化为指向某一行(一维数组)的指针。编译器需要知道每行有多少列才能正确计算偏移量,所以形参必须固定第二维(列数),第一维可以省略。 |
| 第 13 题 | 选择题 | B | 函数 | 答案B。代码补全要考虑参数传递方式。如果需要修改实参,需用指针( )传递。排序算法要理解每步比较的含义。 |
| 第 14 题 | 选择题 | D | 循环控制 | 这道题表面看是二维数组赋值和对角线求和,但核心考点是C++局部变量未初始化的未定义行为。拿到题先别急着算数字,先盯住int sum;这一行,问自己:它被赋过值了吗?没赋,那后面累加… |
| 第 15 题 | 选择题 | A | — | 这道题考选择排序。别被 min=i 迷惑,它只是个下标。内循环要不断找更小的数,核心就是拿当前最小值 array[min] 去和后面每个元素 array[j] 比,比小就更新 mi… |
| 第 16 题 | 判断题 | B | 计算机基础与编程环境 | 域名结构题,核心就一条:域名从右向左分层,最右边那个点之后的才是顶级域名。拿到 gesp.ccf.org.cn,直接看最右侧,是 cn。 |
| 第 17 题 | 判断题 | A | 递推、循环控制、算法 | 这题考递推算法在循环里的实现。拿到题先抓定义:斐波那契从第三项起每一项等于前两项之和。再看代码流程:初始化前两项,循环从3到n,每次算f(i)=f(i 1)+f(i 2)。只要边界… |
| 第 18 题 | 判断题 | B | 函数 | 这题考的是C++参数传递的默认规则。拿到题先别想‘引用能省内存’这种高级特性,直接回扣基础:C++里形参默认就是值传递,引用必须显式加&,所以题中说法错,选B。 |
| 第 19 题 | 判断题 | B | 二维数组与多维数组 | 这道题考的是「语法合法性」与「物理世界」的混淆。拿到题先别想四维数组有没有用,先想 C++ 编译器认不认这个定义。C++ 里多维数组的维度可以任意指定,编译器只管语法不管物理世界,… |
| 第 20 题 | 判断题 | A | 动态内存分配 | 这道题考的是C++函数参数内存分配机制。拿到题先想:参数什么时候占内存?答:只有函数被调用、栈帧建立时才会占用。既然没调用,自然不占,直接选A。 |
| 第 21 题 | 判断题 | B | — | 别被'可能抛出'带偏了,题干把'函数调用位置'和'throw 语句位置'偷换了概念。真正有约束的是 throw 必须在 try 里,而函数调用可以随便放,哪怕在 catch 里也能… |
| 第 22 题 | 判断题 | B | — | 这道题考二维数组存字符串时,每行长度必须包含结束符''。看到'最长99字节’先想:99个字符+1个结束符=100字节,所以每行要开100,10个字符串只需10行,题目把行列写反了。 |
| 第 23 题 | 判断题 | B | — | 别被'0'和\0长得像骗了,直接看本质:单引号里是字符,系统按ASCII算数值;反斜杠是转义,\0代表空字符数值0。两者差48,选B。 |
| 第 24 题 | 判断题 | a | — | 这题其实就在考你认不认识 C++ 的运算符家族。别被 的符号唬住,看到 = 要立刻反应过来这是「右移赋值」,和 = 一样都是合法运算符,直接选 A 就完了。 |
| 第 25 题 | 判断题 | A | 文件操作、输入输出 | 这题考的是C++流重定向机制:cout默认连屏幕,但一旦用了重定向操作(如 重定向符或环境变量),输出就会去文件/其他设备,所以程序员在运行时无法仅凭代码判断是否还显示在屏幕上。 |
建议按「限时做 → 对答案 → 读常见错误」三步走。先按考试的真实节奏做完,再回来看每一题的解析;尤其是"常见错误"那一段——它对应的是命题人反复设置的陷阱,读完能直接迁移到同类题上。
想做限时模考,可在 OI伴学 平台切换考试模式;错题会自动归集,并按考点推荐同类练习。