GESP 五级 · GESP 五级样题(C++ 组) 第 5 题

选择题 · 答案 B

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

题目

下面 C++ 代码意在实现字符串反序的功能。关于这段代码,以下说法正确的是( )? ![](https://cdn.luogu.com.cn/upload/image_hosting/u6eppbo9.png)

答案:B

解题思维

这题别盯着循环逻辑看,先别管代码执行过程,直接看变量声明!看到 'const char s[]' 就明白数组只读,根本改不了内容,输出自然还是原样。

常见错误

学生最容易掉进'代码逻辑看似正确'的陷阱,以为循环交换了字符,却没注意到 const 修饰符让数组处于只读状态,实际上任何 s[i]=... 都是非法或未生效的。还有人选错输出结果,比如以为反序后是 HHHHH 或 ooooo,那是没看懂题目只要求输出字符串本身,没去改字符串里的字符。

详细解析(节选)

【考点】字符串反序|数组/字符串索引操作|常量修饰符影响

这题 GESP 五级 C++ 组明确考察字符串反序与数组索引操作,但命题人卡住绝大多数考生的弱点在于:只关注循环逻辑是否正确,却完全忽略 const 修饰符对数组元素的保护——这是五级考生最容易忽视的声明细节。

看到“字符串反序”,第一反应应是遍历并交换首尾字符。关键观察:代码中 s 被声明为 const char s[] = "Hello"(或等价形式),意味着 s 指向只读存储区,后续任何 s[i] = ... 都是非法操作。因此无论循环如何执行,原字符串内容未被修改,输出必然是 Hello。

选项 A 错在以为代码逻辑无误,忽略了 const 导致无法修改。选项 C 利用学生“循环次数不对”的模糊印象,用绝对化表述 HHHHH 制造干扰。选项 D 偷换概念,将“反序”误解为“填充”,完全偏离题意。

如果把 const 去掉,代码能正确反序输出 olleH。刷到类似题时,先问自己:这段代码是否声明了 const?是否使用了引用、指针或数组的只读版本?

考频趋势上,字符串相关题目在题库共考过 99 题,覆盖 10 个考试级别,其中 GESP 五级考了 19 题,是高频考点。字符数组与字符串处理共 107 题,GESP 五级同样考了 19 题,说明这类“声明陷阱”在五级考试中反复出现。2025 年字符串类题目高达 32 题,2026 年也有 19 题,可见命题人持续偏爱在字符串处理中埋设细节坑。

暂无足够依据预测未来具体考法,但基于近年趋势,未来仍可能在字符串操作中继续考察 const、引用等声明细节,提醒考生答题前先审视变量定义。

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