下面 C++ 代码意在实现字符串反序的功能。关于这段代码,以下说法正确的是( )? 
这题别盯着循环逻辑看,先别管代码执行过程,直接看变量声明!看到 '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、引用等声明细节,提醒考生答题前先审视变量定义。