🗄️ 数据结构
C++ 三级的数据结构,重点是「一排带编号的储物柜」——一维数组。柜子从 0 号开始编号,每个柜子存一个数;有了它,全班成绩、一周天气都能整整齐齐存起来。
考纲知识点:C++一维数组(不包括变长数组)
📖
考纲 · 知识点详述
摘自《CCF编程能力等级认证 C++&Python 认证标准》C++ 三级
- (5)C++一维数组基本应用(不包括变长数组)。
📚
先学一学
花 5 分钟读完下面 5 课,再去闯关就不慌啦
1
🗄️ 数组:一排带编号的储物柜
数组(array)就是一排整齐的储物柜,每个柜子里存一个数,并且都有编号。C++ 里声明数组要先说明「柜子放什么、一共几个」:
📦 声明一个能存 5 个整数的数组
看得懂就好,不用背:
int a[5];
a[0] = 100; // 第 1 个柜子放 100
a[4] = 99; // 第 5 个柜子放 99
a[0] = 100; // 第 1 个柜子放 100
a[4] = 99; // 第 5 个柜子放 99
a[0] 是第 1 个柜子,a[4] 是第 5 个柜子——编号总是从 0 开始!
💡 口诀:数组是一排柜子;第 1 个是 [0],别从 1 数。
⚠️ 柜子只能放同一种东西
int a[5] 五个柜子全放整数;double t[7] 七个柜子全放小数。不能一半放整数一半放字符。
💡 口诀:一列柜子一种货,数组里类型要统一。
2
🔖 下标:柜子的编号从 0 开始
方括号里的数字叫下标。存 5 个数的数组,编号是 0、1、2、3、4,一共 5 个。最容易错的坑来了:
🧪 下标和「第几个」的翻译表
a[0] = 第 1 个
a[1] = 第 2 个
a[2] = 第 3 个
……
a[n-1] = 第 n 个(最后一个)
a[1] = 第 2 个
a[2] = 第 3 个
……
a[n-1] = 第 n 个(最后一个)
💡 口诀:下标 = 第几个减 1;最后一个下标 = 长度减 1。
🆚 易混对比:柜子个数 vs 最大下标
int a[5] 能装 5 个数,但合法下标是 0~4。a[5] 是第 6 个柜子——根本没建,用了就叫「下标越界」,很危险!
💡 口诀:有 5 个柜子,下标最多到 4;越界 = 去开不存在的柜子。
3
🚶 遍历:把柜子一个一个看过去
数组最好用的地方是配合循环:用一个数 i 从 0 走到 4,就能把所有柜子看一遍,这叫遍历。给每个柜子放「双倍编号」:
🧪 读代码:给每个柜子放 i×2
看得懂就好,不用背:
int a[5];
for (int i = 0; i < 5; i++)
a[i] = i * 2;
cout << a[3];
for (int i = 0; i < 5; i++)
a[i] = i * 2;
cout << a[3];
i 依次是 0、1、2、3、4,所以 a[3] = 3×2 = 6,输出 6。
💡 口诀:for 从 0 到 n-1,一个柜子都不漏。
4
🧮 数组实战:求和、找最大
➕ 求和:把每个柜子里的数加起来
看得懂就好,不用背:
int a[5] = {3, 1, 4, 1, 5};
int sum = 0;
for (int i = 0; i < 5; i++)
sum = sum + a[i];
cout << sum;
int sum = 0;
for (int i = 0; i < 5; i++)
sum = sum + a[i];
cout << sum;
{3,1,4,1,5} 是初始化写法,把 5 个数直接放进柜子。3+1+4+1+5 = 14。
💡 口诀:sum 从 0 开始,每逛到一个柜子就加进去。
🏆 找最大:先假设第一个最大
套路是:先让「当前最大」等于 a[0],再从 a[1] 开始一个个比,遇到更大的就换掉它。比赛里「谁最大」都能这样找。
💡 口诀:先假设第一最大,遇到更大的就换人。
5
⚠️ 数组的「规矩」和行业实际
- 📏长度要提前定好:C++ 三级不考变长数组,声明时就要把柜子数量写清楚,比如 int a[100]。
- 🚫别越界:访问 a[100](下标等于长度)是去开不存在的柜子,程序不会提醒你,结果会悄悄出错。
- 🔢初始化:int a[5] = {3,1,4,1,5}; 直接把 5 个数放进柜子,数不够时后面自动补 0。
🌟 行业实际:数组到处都是
全班 40 人的成绩、一周 7 天的温度、游戏里 100 个金币的位置、照片上一行像素的颜色……只要是一串同类型的数,工程师都会用数组来装。数组加循环,是编程里最常用的黄金搭档。
💡 口诀:一串同类型数据 → 数组;数组 + 循环 = 黄金搭档。
🎯
闯关小锦囊 · 考点提醒
- 数组像一排编号从 0 开始的储物柜:a[0] 是第 1 个、a[n-1] 是最后一个。
- int a[5]:能存 5 个数,合法下标 0~4;访问 a[5] 是越界。
- 遍历用 for(i 从 0 到 n-1);a[i] = i*2 会让 a[3] = 6。
- 求和:sum 从 0 开始累加;{3,1,4,1,5} 的和是 14。
- 不考变长数组;长度要提前定好,别越界,类型要统一。
🎮
学完了?来闯关!
下面 15 个小挑战,点一点就能玩
Demo 原型 · 每个知识点独立页面 · 暂不含真实编译与进度存储。