GESP 三级 · GESP 202603 C++ 三级 第 10 题

选择题 · 答案 A · 考点:函数

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

题目

执行以下 C++ 代码后,sub 的值是()。

string str = "GESP2026";
string sub = str.substr(4, 2);
答案:A

考点

函数

解题思维

答案A。C++中字符串处理可以用字符数组或string类型。sizeof和strlen的结果不同。

常见错误

仔细审题,注意限定词和否定词。用排除法缩小选项范围。

详细解析(节选)

【考点】字符串操作|substr函数语法|索引边界

GESP 三级 C++ 模块 2“字符串处理”必考题型。命题人故意把"2026"塞进前缀,让你数错起始位置——这题卡住的是"0-based 索引”和“子串长度”两个基础概念,以及字符串中数字字符的视觉干扰。

看到 substr(4, 2),先定位:从下标 4 开始,取 2 个字符。str 是 "GESP2026",下标 0-3 是 GESP,下标 4 是'2',下标 5 是'0',因此截取结果就是"20"。

陷阱全在“看走眼”:选项 B 把'0'当起始,D 把'0'当结尾,都是数错下标;选项 C 以为“从 4 起取到末尾”,忘了第二个参数是长度。最阴险的是"2"在字符串中间,视觉容易误判为开头,一旦把起始点往右挪一格,自然掉进 B 选项。

命题人想考的就是你“敢不敢逐字核对下标”。改题的话,把 substr(4, 2) 换成 substr(3, 2) 就会变成"P2",换字符串为"GESP20260"则原答案变"200"。记住:刷到此类题,先问自己“下标是不是从 0 开始?长度是不是真的只取两个?”

同考点真题

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