某班 $3$ 个小组、每组 $4$ 名同学的分数存入下面的二维数组 score,则 score[1][2] 的值是( )。
int score[3][4] = {
{80, 81, 82, 83},
{90, 91, 92, 93},
{70, 71, 72, 73}
};答案C。考点: 数组/字符串的基本操作。
关键提醒:C++中的^是异或运算符,不是乘方!2^5=7而非32。这是最高频的错误。
数组下标从0开始,a[n]访问的是第n+1个元素。越界不报编译错但结果不可预测。
【考点】二维数组定义|二维数组元素访问|数组下标含义
二维数组定义与元素访问是 GESP 四级数组模块的必考基础。命题人专选二维数组考下标,卡死大量考生混淆行号与列号——这题本质考"用两个下标定位元素"的核心能力。
看到二维数组先数行列数:score[3][4] 是 3 行 4 列,下标从 0 开始。score[1][2] 中第一个下标 1 选第 2 行(90,91,92,93),第二个下标 2 选第 3 列,对应元素 92。通法:二维数组下标第一个数永远指行、第二个数永远指列,行优先存储顺序固定。
A 项 81 是 score[0][1],混淆了行号与列号;B 项 90 是 score[1][0],把列当下标顺序;D 项 72 是 score[2][2],误把第一个下标当列号。最阴险细节:行号 1 对应第二行,列号 2 对应第三列,若考生只背"下标从 0 开始"却不懂"第一个下标指行",就会选错行。只背结论不理解行优先存储,必掉 B 或 A 陷阱。
若把行号改成 2,答案变 72;若改成 score[2][1] 则变 71。命题人常换下标组合考行优先顺序,换一维数组下标考边界条件。遇到二维数组题先问:第一个下标指行还是列?第二个下标指列还是行?记住行优先存储顺序是核心。