GESP 三级 · GESP 202306 C++ 三级 第 7 题

选择题 · 答案 B

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

题目

以下数组定义,符合 C++ 语言语法的是( )。

答案:B

解题思维

这题考数组声明的语法限制。拿到题先别急着看选项,脑子里过一遍数组定义的骨架:类型 + 变量名 + [常量表达式]。重点盯住方括号里填的是什么——是变量、浮点数还是字符常量?只要记住'长度必须是编译期确定的整型常量',A缺长度、C用浮点、D顺序颠倒都能一眼排掉。

常见错误

学生最容易掉进两个坑:一是觉得'3'带引号就是字符串或者非法字符,其实字符常量'3'在C++里本质就是整型常量51,完全合法;二是看到3.0觉得'反正能转成3'就选了C,忽略了浮点类型本身不能作为数组长度,编译期直接报错。另外很多人会混淆变量和常量,以为只要写了数字就行,忘了必须是常量表达式,所以看到选项里有变量(虽然这题没给)就要警惕。

详细解析(节选)

【考点】常量表达式、数组声明语法、字符常量本质。

GESP三级C++编程基础里,数组声明是必考项,命题人放这道题,就是专门卡住那些只背'数组必须有长度'却不懂'长度必须是常量表达式'的考生。看到数组定义先想'长度必须是常量表达式'。A缺长度直接报错;C用3.0浮点,编译时转成3但语法非法;D把类型放前面了,正确写法是int d[3]。只有B用字符常量'3',它本质是整型常量51,完全符合要求。

陷阱全在'看起来像数字就不是数字'——字符常量'3'被误认为'带引号的数字',其实它是整型常量;3.0看似合法但浮点不能作数组长度;D错在把类型和变量名顺序搞反,这是典型的语法偷换。只背结论不看本质,这类题必错。

命题人若把'3'换成变量x,或把3.0换成整数3,都能变成新题——考的是'常量表达式'vs'变量'与'浮点转整型'的边界。刷到类似题先问自己:这个长度到底是常量还是变量?

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