执行下面 C++ 代码后将输出 $2$。( )
int main()
{
string str = "gEsP is Interesting";
int x = str.find("s");
cout << x << endl;
cout << endl;
return 0;
}这题考字符串 find 函数,核心是记住索引从 0 开始且区分大小写。拿到题先别急着数,先把字符串在脑子里(或纸上)按 0、1、2…标上位置,一眼就能锁定小写 s 在第 2 位,答案自然就是 A。
学生最容易栽在两个坑:一是把索引当成从 1 开始数,数出来是 3 就选错;二是粗心看漏了大小写,把 find("s") 当成找大写 S,结果会去数第 3 个字符。还有少数人会纠结字符串里后面那个 s 的位置,其实 find 只返回第一次出现的位置,只要盯住第一个小写 s 就行。
【考点】字符串 find 函数|大小写敏感|0 基索引
1. 考纲定位 这是 GESP 三级 C++ 字符串操作模块的入门题,专卡两个基础细节:find 函数只返回第一次匹配的位置,且匹配是严格区分大小写的。命题人喜欢在这种看似简单的代码里埋下‘数数’和‘大小写’的陷阱,用来区分学生是否真正理解 C++ 字符串的底层规则。
2. 解题思维 看到 str.find("s") 要立刻反应:这是搜索小写 s,不是大写 S。字符串"gEsP is Interesting"里,第 0 位是 g,第 1 位是 E,第 2 位正好是小写 s。所以 x 被赋值为 2,cout 自然输出 2。
3. 陷阱拆解 陷阱在于大小写陷阱和计数陷阱。很多学生看到" s" 就以为是大写 S,或者数成第 3 位(1 起数)。字符串里只有两个 s,第一个在索引 2,第二个在索引 6。如果学生把" s" 当成" S",就会选错。此外,find 只返回第一次出现的位置,如果学生误以为要找所有 s 或最后一个 s,也会算错。
4. 反命题思维 反命题视角:如果改 str="gESP is Interesting",find("s") 就没结果了;如果改成 find("S"),输出就是 3。刷到类似题先问自己:字符串里到底是哪个字符?索引是从 0 还是 1 开始?
5. 考频与趋势 基础语法在题库中占比最高,共考过 1295 题,覆盖 11 个考试级别(2008-2026)。逐年分布显示该考点热度持续攀升:2008 年 1 题、2011 年 1 题、2019 年 3 题、2023 年 287 题、2024 年 413 题、2025 年 401 题、2026 年 109 题、null 年 80 题。分赛事来看,GESP 一级 332 题、二级 283 题、三级 215 题、四级 186 题、七级 91 题、八级 79 题、六级 78 题、五级 23 题、CSP 提高级 3 题、入门级 3 题、NOIP 提高组初赛 2 题。控制结构共 429 题,循环结构共 609 题,均呈现逐年上升趋势,2024-2025 年达到峰值。
6. 预测 基于现有数据,字符串基础操作(包括 find、substr、大小写敏感匹配)在 GESP 三级及四级考试中仍将是高频考点,预计未来几年会继续保持高热度,命题形式可能从单纯查找转向结合循环或条件判断的综合应用。暂无足够依据预测具体年份的考题变化。