GESP 三级 · GESP 202503 C++ 三级 第 13 题

选择题 · 答案 B · 考点:基础语法

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

题目

下面程序最后能够得到 HelloC++ 的是( )

int main() {
    string str = "HelloWorld";
    _______________________
    cout << str;
    return 0;
}
答案:B

考点

基础语法

解题思维

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

常见错误

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

详细解析(节选)

【考点】字符串replace操作|基础语法细节

🎯 考纲定位 GESP三级字符串模块核心考点。命题人把replace放在三级卷,卡住的是"参数含义混淆"这个顽疾——5%的考生会误把pos当成长度、把len当成结束位,而C++里replace(pos, len, str)的len是"覆盖长度"而非"结束索引",这是字符串操作最易失分的细节。

🧠 解题思维 看到"HelloWorld"变"HelloC++"——先锁定被替换子串"World",它在str里起始位置5、长度5,直接调用replace(5, 5, "C++")。这类题通法:先写原串和目标串,圈出变化段,算出它的起始下标+长度,再对账replace参数,下标从0算、长度是覆盖段长,错在这两点必栽。

🪤 陷阱拆解 逐个拆错项:A把前5个"Hello"全换掉→"C++World";C从下标1开始换5个"elloW"→"HC++orld";D从4开始换5个"oWorl"→"HellC++d"。最阴险的是replace第二个参数是"覆盖长度"而非"结束索引",命题人用绝对值pos=0/1/4诱导你按"起始到结束"去算,结果把"长度"当"终点"全错,背结论不读参表必踩。

🔄 反命题思维 反命题:若把"World"换作"C++"变"HelloC++",那replace就是(5,5,"C++");若换作"Hi"变"HelloHi",那就要替换前5个字符。刷到同类题先问自己:我真正要改的是哪一段?它的起始下标和长度是多少?替换后总长怎么变?——这比背结论更能防坑。

同考点真题

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