数组(array)
数组(array)
C++ 数组入门:给初学者的指南
你好!欢迎学习C++编程。今天我们要认识一个非常有用的小伙伴——数组 (Array)。
1. 理解数组:为什么需要它?
想象一下,你们班有5个同学,老师想记录下每个同学的数学期末考试成绩。
-
不用数组的笨方法:你可能需要创建5个不同的变量,比如:
int score1; int score2; int score3; int score4; int score5;
如果班上有50个同学呢?那得写50行!太麻烦了,对吧?
-
数组来帮忙:数组就像一个带编号的储物柜或者一排连在一起的盒子。你可以用一个名字来管理一整排盒子,每个盒子里存放相同类型的东西(比如都是整数成绩,或者都是同学的名字)。
下面是一个用文本字符画出的数组示意图,展示了一个名为
scores
的数组,它能存储5个整数:数组名: scores │ ▼ +----+----+----+----+----+ │ 85 │ 92 │ 78 │ 90 │ 88 │ <-- 存储在数组中的值 (元素) +----+----+----+----+----+ 0 1 2 3 4 <-- 每个元素的索引 (编号)
(这个文本图展示了:数组有一个名字
scores
,它包含多个盒子(元素),每个盒子有自己的值,并且可以通过从0开始的索引/编号来找到特定的盒子。)
数组的关键点:
- 集合:它能一次性存储多个数据。
- 同类型:所有存入数组的数据,它们的类型必须完全相同(比如,一个
int
数组只能放整数,不能一会儿放整数一会儿放字母)。 - 固定大小:在创建数组时,通常需要指定它能装多少个东西(盒子数量),这个数量一般是固定的。
- 编号(索引):每个“盒子”都有一个唯一的编号,叫做索引 (Index)。这个编号非常重要,它能帮你准确地找到或放入数据。 特别注意:在C++(以及很多编程语言)里,编号是从 0 开始的!也就是说,第一个盒子的编号是 0,第二个是 1,第三个是 2,以此类推。如果数组有5个元素(就像上图那样),它们的索引就是 0, 1, 2, 3, 4。
简单来说,数组就是一个名字,代表了一串连续的、相同类型的存储空间,你可以通过从0开始的索引来访问里面的每一个元素。
2. 样例代码:动手试试看!
让我们用代码来看看数组怎么用。记住,我们要使用 using namespace std;
风格。
#include <iostream> // 这是C++的标准输入输出库,让我们能用 cin 和 cout
// 使用 std 命名空间,这样就不用在 cin, cout 前面写 std:: 了
using namespace std;
int main() { // main 函数是程序的入口点
// --- 声明和初始化数组 ---
// 声明一个可以存放 5 个整数的数组,名叫 scores
// 想象一下,我们预定了 5 个连续的整数储物柜,并给这排柜子起了个名字叫 scores
int scores[5];
// --- 给数组赋值 ---
// 通过索引(从0开始)给每个“盒子”赋值
scores[0] = 85; // 第一个元素(索引为0)赋值为 85
scores[1] = 92; // 第二个元素(索引为1)赋值为 92
scores[2] = 78;
scores[3] = 90;
scores[4] = 88; // 第五个元素(索引为4)赋值为 88
// 注意:数组大小是 5,所以有效的索引是 0, 1, 2, 3, 4。
// 千万不要尝试访问 scores[5],这会超出范围,导致错误!
// --- 访问和打印数组元素 ---
cout << "第一个同学的分数是: " << scores[0] << endl; // endl 表示换行
cout << "第三个同学的分数是: " << scores[2] << endl;
// --- 使用循环遍历数组 ---
// 如果想打印所有分数,一个个写太麻烦,可以用循环!
cout << "\n所有同学的分数是: " << endl; // \n 也是换行的意思
for (int i = 0; i < 5; ++i) { // i 从 0 开始,每次加 1,直到 i 不小于 5 时停止
// 循环体内,i 的值会依次是 0, 1, 2, 3, 4
cout << "同学 " << i + 1 << " (索引 " << i << ") 的分数: " << scores[i] << endl;
}
// --- 声明时直接初始化数组 ---
// 你也可以在创建数组的时候就直接填好值
cout << "\n另一组数字:" << endl;
int numbers[] = {10, 20, 30, 40}; // C++可以自动计算大小为4
int size_of_numbers = 4; // 我们知道它的大小是4
for (int i = 0; i < size_of_numbers; ++i) {
cout << numbers[i] << " "; // 在一行内打印,用空格隔开
}
cout << endl; // 最后换个行
return 0; // main 函数返回 0 表示程序成功结束
}
代码解释:
#include <iostream>
: 引入输入输出功能。using namespace std;
: 简化代码,不用写std::cout
等。int main()
: 程序从这里开始执行。int scores[5];
: 声明一个能装5个int
(整数)的数组,名字叫scores
。scores[0] = 85;
: 把值85
存入scores
数组的第一个位置(索引为0)。cout << scores[1];
: 取出scores
数组的第二个位置(索引为1)的值并打印出来。for (int i = 0; i < 5; ++i)
: 这是一个for
循环。int i = 0
: 创建一个整数变量i
,初始值为0(作为我们的索引)。i < 5
: 循环继续的条件,只要i
小于 5 就一直循环。++i
: 每次循环结束后,把i
的值增加 1。- 循环体
cout << ... << scores[i] << endl;
会被执行5次,i
的值分别是 0, 1, 2, 3, 4,正好对应数组的所有索引。
int numbers[] = {10, 20, 30, 40};
: 声明数组时直接初始化,大括号{}
里写上初始值,用逗号隔开。编译器会自动根据你提供的值的数量确定数组大小(这里是4)。
3. 小问题:学以致用
现在,轮到你来挑战一下啦!
问题描述: 请编写一个程序,做以下事情:
- 创建一个能存放 4 个
double
类型数字(可以带小数)的数组,用来存储一周中连续 4 天的每日最高气温。 - 提示用户依次输入这 4 天的最高气温,并将输入的值存入数组。
- 计算这 4 天的平均最高气温。
- 打印出这 4 天的平均最高气温。
提示:
- 你需要用
cin
来读取用户输入。 - 平均气温 = (第1天气温 + 第2天气温 + 第3天气温 + 第4天气温) / 4。
- 记得使用
double
类型来存储气温和平均值,因为气温和平均值可能不是整数。
4. 参考答案代码
在你尝试自己解决问题后,可以看看下面的参考答案。
#include <iostream>
using namespace std;
int main() {
// 1. 创建一个能存放 4 个 double 类型数字的数组
double temperatures[4]; // 用 double 类型存储气温,可以有小数
double sum = 0.0; // 用来累加气温总和,初始化为 0.0
// 2. 提示用户输入 4 天的气温并存入数组
cout << "请输入连续 4 天的每日最高气温 (℃):" << endl;
for (int i = 0; i < 4; ++i) {
cout << "第 " << i + 1 << " 天的气温: ";
cin >> temperatures[i]; // 读取用户输入,存入数组的第 i 个位置
// 顺便在循环里就把总和算出来
sum = sum + temperatures[i]; // 或者写成 sum += temperatures[i];
}
// 3. 计算平均最高气温
// 注意:因为 sum 和 4 都是数值,直接相除可能得到整数结果(如果 sum 恰好是 4 的倍数)
// 为了确保得到精确的浮点数结果,最好进行浮点数除法
// 这里因为 sum 本身就是 double,所以 sum / 4 结果自然是 double
double average_temp = sum / 4.0; // 或者 sum / 4,因为sum是double
// 4. 打印平均气温
cout << "\n这 4 天的平均最高气温是: " << average_temp << " ℃" << endl;
// (可选) 打印用户输入的所有气温,确认一下
cout << "您输入的气温分别是: ";
for (int i = 0; i < 4; ++i) {
cout << temperatures[i] << "℃ ";
}
cout << endl;
return 0;
}
运行这个程序时,它会:
- 提示你输入第1天的气温,你输入后按回车。
- 提示你输入第2天的气温,你输入后按回车。
- …依此类推,直到输入第4天的气温。
- 然后它会计算并打印出这4天气的平均最高温度。
很棒!你已经了解了C++数组的基本概念和用法。数组是编程中非常有力的工具,可以帮你处理大量相关的数据。多练习,你就会越来越熟练!继续加油!