GESP 三级 · GESP 202409 C++ 三级 第 15 题

选择题 · 答案 B

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

题目

下列程序输出的是( )

string str = "Hello,CHAD";
cout << str.find("A") << '\n';
答案:B

解题思维

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

常见错误

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

详细解析(节选)

【考点】字符串操作

解题思维:字符串 str = "Hello,CHAD" 中字符索引从 0 开始,逐个字符为 H(0)、e(1)、l(2)、l(3)、o(4)、,(5)、C(6)、H(7)、A(8)、D(9)。str.find("A") 返回的是子串 "A" 首次出现的索引位置,因此结果就是 8。

陷阱拆解:选项 A(9) 是命题人利用"索引从 1 开始数"的常见误区设计的;选项 C(7) 和 D(6) 则偷换概念,把 "A" 的位置误当成 "H" 或 "C" 的索引。最阴险的细节在于 find 返回值是整数索引而非字符本身,且搜索是区分大小写的——若搜索 "a" 则返回 -1。只背结论不看源码,必然栽在索引起点和大小写陷阱上。

反命题思维:若把字符串改为 "Hello,Chad"(小写 c),find("A") 将返回 -1;若改为搜索 "AD",结果变成 7。刷到类似题时先问:"命题人想考我字符串索引的 0 基还是 1 基?大小写敏感吗?"

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