Course playlist
C++ 一维数组教程
面向初学者的简明指南 - 学习数组的基本概念、语法和应用
什么是数组?
数组是一种数据结构,用于存储相同类型的多个元素。你可以把数组想象成一排邮箱,每个邮箱有唯一的编号(索引),并且只能存放特定类型的邮件(数据)。
为什么需要数组?
假设你需要存储100个学生的成绩,如果没有数组,你需要创建100个不同的变量:score1, score2, ..., score100。使用数组,你只需要一个变量就可以存储所有成绩。
声明和初始化一维数组
在C++中,声明数组需要指定元素的类型、数组名称和大小。
// 声明一个可以存储5个整数的数组
int scores[5];
// 声明并初始化数组
int numbers[5] = {10, 20, 30, 40, 50};
// 让编译器自动计算数组大小
int ages[] = {18, 21, 25, 30, 22}; // 数组大小为5
// 部分初始化
int values[5] = {1, 2, 3}; // 前三个元素为1,2,3,其余自动设为0
int scores[5];
// 声明并初始化数组
int numbers[5] = {10, 20, 30, 40, 50};
// 让编译器自动计算数组大小
int ages[] = {18, 21, 25, 30, 22}; // 数组大小为5
// 部分初始化
int values[5] = {1, 2, 3}; // 前三个元素为1,2,3,其余自动设为0
重要提示: C++数组索引从0开始,而不是1!这意味着第一个元素的索引是0,第二个是1,依此类推。
数组示例:存储和访问学生成绩
下面的例子展示了如何创建数组、存储数据并访问数组元素。
// 示例:学生成绩数组
#include <iostream>
using namespace std;
int main() {
// 创建存储5个学生成绩的数组
int grades[5] = {85, 92, 78, 90, 88};
// 访问数组元素
cout << "第一个学生的成绩: " << grades[0] << endl;
cout << "第三个学生的成绩: " << grades[2] << endl;
// 修改数组元素
grades[1] = 95;
cout << "更新后第二个学生的成绩: " << grades[1] << endl;
// 使用循环遍历数组
cout << "所有学生成绩: ";
for(int i = 0; i < 5; i++) {
cout << grades[i] << " ";
}
cout << endl;
return 0;
}
#include <iostream>
using namespace std;
int main() {
// 创建存储5个学生成绩的数组
int grades[5] = {85, 92, 78, 90, 88};
// 访问数组元素
cout << "第一个学生的成绩: " << grades[0] << endl;
cout << "第三个学生的成绩: " << grades[2] << endl;
// 修改数组元素
grades[1] = 95;
cout << "更新后第二个学生的成绩: " << grades[1] << endl;
// 使用循环遍历数组
cout << "所有学生成绩: ";
for(int i = 0; i < 5; i++) {
cout << grades[i] << " ";
}
cout << endl;
return 0;
}
代码解释
- 创建了一个名为
grades的整型数组,包含5个元素 - 使用索引访问数组元素(grades[0]访问第一个元素)
- 演示了如何修改数组元素的值
- 使用for循环遍历数组中的所有元素
数组示例:计算平均值
这个例子展示如何使用数组计算一组数字的平均值。
// 计算温度平均值的示例
#include <iostream>
using namespace std;
int main() {
// 一周七天的温度数据
double temperatures[7] = {22.5, 24.0, 23.5, 25.0, 26.5, 27.0, 24.5};
// 计算总温度
double total = 0;
for(int i = 0; i < 7; i++) {
total += temperatures[i];
}
// 计算平均值
double average = total / 7;
cout << "一周平均温度: " << average << "°C" << endl;
cout << "最高温度: " << temperatures[4] << "°C (星期五)" << endl;
return 0;
}
#include <iostream>
using namespace std;
int main() {
// 一周七天的温度数据
double temperatures[7] = {22.5, 24.0, 23.5, 25.0, 26.5, 27.0, 24.5};
// 计算总温度
double total = 0;
for(int i = 0; i < 7; i++) {
total += temperatures[i];
}
// 计算平均值
double average = total / 7;
cout << "一周平均温度: " << average << "°C" << endl;
cout << "最高温度: " << temperatures[4] << "°C (星期五)" << endl;
return 0;
}
测试你的理解
完成以下测试题来检查你对C++一维数组的理解程度。
问题 1: C++数组的索引从哪里开始?
A. 0
B. 1
C. 可以是0或1,由程序员决定
D. -1
问题 2: 下面哪个语句正确声明了一个包含3个整数的数组?
A. int array(3);
B. int array[3];
C. int array{3};
D. array int[3];
问题 3: 对于数组 int nums[5] = {10, 20, 30};,nums[4] 的值是多少?
A. 30
B. 40
C. 0
D. 编译错误
问题 4: 如何访问数组 arr 的第三个元素?
A. arr(3)
B. arr[3]
C. arr[2]
D. arr.3
关键点总结
- 数组用于存储相同类型的多个元素
- 数组大小在声明时必须确定(或由初始化值推断)
- 数组索引从0开始,到(数组大小-1)结束
- 可以使用循环轻松遍历数组所有元素
- 数组元素可以通过索引直接访问和修改
- 部分初始化的数组,未指定的元素会自动设为0(对于数值类型)
常见错误和注意事项
- 数组越界: 访问数组范围之外的元素是常见错误,可能导致程序崩溃或不可预测的行为
- 固定大小: C++标准数组的大小在编译时确定,不能动态改变
- 数组名是常量指针: 数组名表示数组首元素的地址,不能修改
- 内存管理: 数组在栈上分配内存,大型数组可能导致栈溢出
| 题目 | 对/错/率 | 难度 | 记录 | 通过 |
|---|
| 姓名 | 分数 | 提交时间 | 操作 |
|---|