GESP 四级 · GESP 202312 C++ 四级 第 2 题

选择题 · 答案 B

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

题目

下面 C++ 代码执行后,输出的是( )。

int arr[10]={1};
string strArr="chen a dai";
cout<<strArr[arr[1]]<<endl;
答案:B

解题思维

这题考数组默认初始化和字符串下标取值。拿到题别急着看串,先算arr[1]是多少(默认全0),再拿这个数去串里取字符,答案就是串首。

常见错误

最容易栽在两个地方:一是以为int数组会自动把下标1赋成1,其实默认全是0;二是看到strArr[arr[1]]就脑补成取整个串,忘了数组下标访问出来的是单个char。这两点叠加,很多人会选A或C,完全跑偏。

详细解析(节选)

【考点】 数组默认初始化规则、字符串下标取值、字符与下标对应关系

1. 命题人怎么挖坑 这道题是典型的“陷阱题”。命题人故意用int arr[10]={1};来诱导学生。看到{1},直觉上会觉得“下标1是1”,从而直接去串里取第1个字符(即'c'),或者更离谱地认为整个串被赋给了arr[1]。但C++数组的初始化规则是:只初始化显式给出的部分,剩余部分自动补0。所以arr[0]=1,arr[1]到arr[9]全都是0。这是绝大多数初学者会忽略的默认行为,也是本题的核心考点。

2. 概念讲明白

3. 思考心法:拿到题先想什么 看到cout<<strArr[arr[1]]<<endl;,别急着看strArr是什么,先处理下标表达式 arr[1]。这是所有“数组当索引”题的通法:先算出下标值,再查表。所以第一步就是算arr[1]等于几。

4. 一步步推演

5. 避坑指南

6. 考频与趋势

7. 预测 基于给定数据与经验,暂无足够依据预测未来可能怎么考。

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