GESP 三级 · GESP 202512 C++ 三级 第 6 题

选择题 · 答案 D · 考点:输入输出

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

题目

以下代码是一个程序的部分代码,能够正确执行,输出的结果是( )

int arr[5] = {1, 2, 3, 4, 5};
int p = arr[1];
cout << (p + 2) << endl;
答案:D

考点

输入输出

解题思维

答案D。数组和位运算的代码追踪要特别小心:数组下标从0开始,位运算结果可能不直观。建议画图辅助。

常见错误

位运算追踪时建议把数字写成二进制形式再逐位计算。

详细解析(节选)

【考点】数组访问|下标规则|基本输入输出

GESP 三级明确考察数组基础操作。命题人特意用 arr[1] 卡住大量初学者——他们死记"第一个元素是 1"却不懂 0 基下标规则。这种陷阱在后续章节会反复出现,必须现在纠正。C++ 数组从索引 0 开始,arr[1] 是第二个元素。

看到定义先定位下标:arr[0]=1,arr[1]=2。p 被赋值为 2。再执行算术 p+2 得 4,cout 输出 4。这是最直接的数组访问流程。注意这里没有循环或条件判断,纯线性执行。

A 选项源于"下标=序号"的致命误区;B 选项是正确取值却漏了加法;C 选项纯属随机干扰。最阴险的是 arr[1] 被解读为第一个数,暴露对 C++ 数组 0 基的无知。很多人会选 A 或 B,因为它们看起来"合理"。

若改为 arr[6]={1,2,3,4,5,6} 并问 arr[5],答案变 6 而非 5;若改为 arr[0]=100 并求 arr[1]-arr[0],答案变 98。刷到同类题先问:下标真的对应序号吗?加法漏没漏?边界值有没有越界?

同考点真题

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