在 C++语言中,长度为 $n$ 的数组,合理的下标范围是从 $0$ 到 $n$,包括 $0$ 和 $n$。
这题考的是 C++ 数组下标范围。拿到题先想:长度为 n 说明有 n 个格子,下标从 0 开始数,数到第 n 个时刚好是 n-1,所以最大下标只能是 n-1,题干说包括 n 显然越界了。
学生最容易把数组下标和循环上限搞混,看到 n 就下意识觉得能到 n,或者被题干里‘包括 0 和 n’这种绝对化表述带偏,误以为 C++ 允许 0 到 n。其实 C++ 里数组定义时长度就是元素个数,下标永远比长度少 1,这是铁律,跟循环怎么写没关系。
C++ 数组下标范围(0 到 n-1)。命题人专门卡住「长度」与「最大下标」的映射关系——绝大多数考生看到「长度为 n」条件反射写 0-n,却忘了下标从 0 开始计数,n 个元素的下标刚好只到 n-1。
数组是连续存放的格子,长度为 n 就意味着一共 n 个格子。C++ 规定下标从 0 开始,所以第一个格子叫 0,第二个叫 1……第 n 个格子叫 n-1。只要记住「元素个数 = 下标个数」,就能立刻推出最大下标 = 长度 - 1。
这题不是考你会不会写数组,而是考你是否理解「长度决定下标上限」。题干故意用「包括 0 和 n」这种绝对化表述,诱导你套用「0 到 n」的通用模板(比如 for 循环 i=0;i<=n;i++)。真正阴险的是:如果你只背「数组下标从 0 开始」而不理解「长度决定最大下标」,就会在选项 A 前犹豫,甚至觉得题干自洽。
拿到「长度为 n 的数组,下标范围 0 到 n」→ 先问自己:n 个格子,从 0 数起,数到第几个是 n?答案是第 n+1 个,但数组只有 n 个格子,所以 n 这个下标不存在 → 题干错误 → 选 B。 通法:任何语言数组,元素个数 = 下标个数,若下标从 k 开始,则最大下标 = k + 个数 - 1。本题 k=0,个数=n,所以最大下标 = n-1。
最容易错的是把「循环上限」混为「数组上限」。循环可以写 i<=n,因为循环变量只是计数器,不会真正访问第 n 个数组元素;但数组定义时长度就是元素个数,下标越界是编译错误或运行时错误。题干说「包括 n」意味着要访问第 n 个元素,而长度为 n 的数组根本没有第 n 个元素,所以 A 必错。
复合类型:题库共考过 146 题,覆盖 7 个考试级别(2023-2026);逐年分布:2023 年 21 题、2024 年 42 题、2025 年 47 题、2026 年 27 题、null 年 9 题;分赛事:GESP 五级 52 题、GESP 三级 22 题、GESP 七级 21 题、GESP 六级 21 题、GESP 八级 16 题、GESP 四级 12 题、CSP 入门级 2 题。 一维数组:题库共考过 224 题,覆盖 9 个考试级别(2008-2026);逐年分布:2008 年 3 题、2009 年 5 题、2012 年 1 题、2013 年 2 题、2015 年 1 题、2016 年 2 题、2017 年 1 题、2019 年 2 题、2021 年 1 题、2022 年 1 题、2023 年 27 题、2024 年 48 题、2025 年 55 题、2026 年 59 题、null 年 16 题;分赛事:GESP 五级 59 题、GESP 四级 42 题、GESP 三级 32 题、GESP 六级 26 题、GESP 七级 25 题、GESP 八级 19 题、NOIP 提高组 初赛 10 题、CSP 入门级 6 题、NOIP 普及组 初赛 5 题。 从数据看,数组相关题目在 GESP 三级中占比不小(22 题),且近年复合类型考查频率逐年上升,说明这类基础概念题仍是高频考点。
暂无足够依据预测未来可能怎么考。