GESP 四级 · GESP 四级样题(C++ 组) 第 7 题

选择题 · 答案 C

← 整套速查表 GESP 四级 全部真题

题目

以下哪个选项能正确访问二维数组 array 的元素?( )

答案:C

解题思维

二维数组在C++里是两层嵌套的一维数组,所以访问必须用两层方括号,先取行再取列。

常见错误

很多考生看到下标就下意识想Python的元组写法,或者把数组访问和函数调用、初始化搞混。A项把逗号当分隔符是典型的跨语言思维陷阱;B项用括号是函数调用语法;D项大括号是初始化列表。这些选项看起来都像‘数组’,但只有C项符合C++标准。

详细解析(节选)

我是,的专属模型。

这道题考的是C++语言基础里最核心的数组访问语法,特别是二维数组的索引规则。在GESP四级大纲里,数组属于第4章《数组》第2节,命题人专门盯着‘多维数组下标访问’这个基础盲区,因为这里最容易和Python的元组语法、C语言的初始化语法混淆。

拿到这类题,思考心法很简单:先确认语言规范,再拆解维度。C++标准规定,多维数组在内存中是按行优先连续存储的,访问时每一维都要用一对方括号[],且必须嵌套。对于二维数组array,它本质上就是int array[rows][cols],访问元素必须先确定行号,再确定列号,所以正确的写法只能是array[行][列]。

具体到选项: A项array[1, 2]是典型的偷换概念陷阱。逗号分隔符在C++里是表达式求值的一部分,不能作为数组下标分隔符。这其实是Python元组的写法,命题人就是利用考生‘数组下标就是坐标’的直观认知,把Python语法塞进来,看谁没分清C++和Python的语法体系差异。 B项array(1)(2)混淆了函数调用和数组访问。在C++里,圆括号()是函数调用运算符,数组访问必须用方括号。如果这是函数调用,那array得是个函数名,但题干明确说是‘二维数组’,所以B项直接排除。 D项array{1}{2}把初始化语法当访问语法。大括号{}在C++里用于初始化列表或构造对象,访问数组元素时绝不会用大括号,这是很多初学者容易记混的地方。

只有C项array[1][2]完全符合C++规范:外层方括号取第1行,内层方括号取该行第2列。这就是所有C++数组题的底层逻辑:n维数组=n层方括号,每层填一个维度坐标。

命题人挖坑的视角很清晰:他们知道学生容易‘想当然’,看到下标就套Python或C的初始化写法。所以这类题往往不考复杂计算,只考语法细节,目的是筛选出真正理解语言规范的人,而不是只会背题的人。

关于考频,二维数组与多维数组在题库中总共考过29题,覆盖6个级别,逐年分布为:2008年1题、2011年1题、2014年2题、2019年1题、2022年1题、2023年1题、2024年4题、2025年5题、2026年9题、null年4题。分赛事来看,GESP四级独占20题,占比近七成,说明这是四级考试的高频考点;CSP入门级2题、GESP七级2题、NOIP提高组初赛2题、NOIP普及组初赛2题、GESP八级1题。从趋势看,2024-2026年考题数量明显上升(4→5→9),尤其是2026年高达9题,反映出命题组对‘多维数组基础语法’的重视程度在逐年加大。

基于这个趋势,未来GESP四级及CSP入门级很可能继续增加此类‘语法辨析型’单选题,甚至可能出现三维数组的嵌套访问变形题。暂无足够依据预测具体年份和题型变化,但‘考语法细节’这一方向可以确定。

总之,做这类题前要先问自己:当前语言对多维索引的规范是什么?C++就是层层方括号,别被Python的元组写法带偏。记住这个口诀,基本就不会踩坑。

在 OI伴学 里做这道题
登录后可计时作答、查看完整六段式解析,并按你的错题自动生成同类练习。
去刷题先做一次 AI 学情诊断