- C++
C++二维数组教程
- 2025-7-8 16:46:38 @
小学生也能懂的C++二维数组教程
亲爱的小朋友们,今天我们要学习一个超级有用的知识——二维数组!它就像一个神奇的表格,能帮我们整齐地存放好多好多数据,还能玩出各种有趣的花样哦!
📊 什么是二维数组?
想象一下,你有一个数学练习本,上面画满了格子,有行也有列——这就是二维数组啦!
- 二维数组就像一个长方形的方阵(矩阵),有行和列
- 定义方法:
数据类型 数组名[行数][列数]
- 比如:
int score[3][4];
就像一个3行4列的表格,能放12个整数(考试分数正好合适呢!)
![表格示意图]
行0 → [0][0] [0][1] [0][2] [0][3]
行1 → [1][0] [1][1] [1][2] [1][3]
行2 → [2][0] [2][1] [2][2] [2][3]
🎯 怎么找到数组里的元素?
每个格子都有自己的"座位号",就像电影院的座位一样好找!
- 格式:
数组名[行下标][列下标]
- 注意:下标从0开始哦!就像我们数数有时候从0开始数
- 例子:
score[1][2]
表示第2行第3列的元素(因为0是第一个)
⚠️ 小警告:不要找不存在的座位!比如score[3][4]
对于3行4列的数组来说,就是"幽灵座位"啦,会出错的!
🏗️ 给二维数组"填数据"
刚创建的数组是空的,我们要给它填上数据,这个过程叫"初始化"。有几种好玩的方法:
方法1:一行一行填
int a[3][4] = {1,2,3,4,5,6,7,8,9};
👉 系统会按顺序从第一行开始填,填满一行再填下一行,没填到的自动补0 👉 结果会是这样:
1 2 3 4
5 6 7 8
9 0 0 0
方法2:分行填(更清楚!)
int a[3][4] = {
{1,2}, // 第一行只填前两个
{3,4,5}, // 第二行填前三个
{7,8,9,10} // 第三行全填满
};
👉 结果会是这样:
1 2 0 0
3 4 5 0
7 8 9 10
方法3:全部清零
int a[3][4] = {}; // 两个大括号中间什么都不放
👉 结果会是一个全是0的表格,像干净的作业本:
0 0 0 0
0 0 0 0
0 0 0 0
💡 小技巧:定义二维数组时,行数可以省略,但列数绝对不能省!就像排队时,必须知道每排站几个人~
🔍 如何使用二维数组里的数据?
要想使用数组里的某个数据,就像在教室里找人一样,需要知道他在第几行第几列。
#include <iostream>
using namespace std;
int main() {
// 创建一个3行4列的数组,存放零食数量
int snacks[3][4] = {{2,3,1,5}, {4,0,2,3}, {1,2,2,4}};
// 输出第二行第三列的零食数量(注意:下标从0开始哦)
// 第二行就是行下标1,第三列就是列下标2
cout << "第二行第三列的零食有:" << snacks[1][2] << "个" << endl;
// 给第一行第一列的零食增加2个
snacks[0][0] += 2;
cout << "增加后,第一行第一列的零食有:" << snacks[0][0] << "个" << endl;
return 0;
}
输出结果:
第二行第三列的零食有:2个
增加后,第一行第一列的零食有:4个
🔄 如何遍历二维数组?
遍历就是一个一个地查看数组里的所有元素,我们可以用两个for循环来实现,就像扫地一样,先扫完一行再扫下一行。
#include <iostream>
using namespace std;
int main() {
// 创建一个3行4列的数组
int arr[3][4] = {{1,2}, {3,4,5}, {7,8,9,10}};
// 外部循环控制行(i表示行号)
for(int i = 0; i < 3; i++){
// 内部循环控制列(j表示列号)
for(int j = 0; j < 4; j++){
// 输出当前元素,后面加个空格分开
cout << arr[i][j] << " ";
}
// 一行输出完了,换行
cout << endl;
}
return 0;
}
输出结果:
1 2 0 0
3 4 5 0
7 8 9 10
📥📤 二维数组的输入和输出
我们可以让用户输入数据到二维数组中,然后再显示出来,就像做一个数据收集小游戏。
#include <iostream>
using namespace std;
// 定义一个全局数组(可以放更多数据)
int a[12][12];
int m, n; // m表示行数,n表示列数
int main() {
// 输入行数和列数
cout << "请输入行数和列数(用空格分开):";
cin >> m >> n;
// 输入数组元素
cout << "请输入" << m << "行" << n << "列的数据:" << endl;
for(int i = 0; i < m; i++){
for(int j = 0; j < n; j++){
cin >> a[i][j];
}
}
// 输出数组元素
cout << "你输入的数组是:" << endl;
for(int i = 0; i < m; i++){
for(int j = 0; j < n; j++){
cout << a[i][j] << " ";
}
cout << endl; // 每行结束后换行
}
return 0;
}
运行示例:
请输入行数和列数(用空格分开):2 2
请输入2行2列的数据:
1 2
3 4
你输入的数组是:
1 2
3 4
🎮 实战小游戏:矩阵加法
矩阵加法就像两个表格中对应位置的数字相加,非常简单!
#include <iostream>
using namespace std;
int main() {
int n, m; // n表示行数,m表示列数
int A[100][100], B[100][100], C[100][100]; // 三个矩阵
// 输入行数和列数
cin >> n >> m;
// 输入第一个矩阵A
cout << "请输入第一个" << n << "行" << m << "列的矩阵:" << endl;
for(int i = 0; i < n; i++){
for(int j = 0; j < m; j++){
cin >> A[i][j];
}
}
// 输入第二个矩阵B
cout << "请输入第二个" << n << "行" << m << "列的矩阵:" << endl;
for(int i = 0; i < n; i++){
for(int j = 0; j < m; j++){
cin >> B[i][j];
}
}
// 计算矩阵加法:对应位置的元素相加
for(int i = 0; i < n; i++){
for(int j = 0; j < m; j++){
C[i][j] = A[i][j] + B[i][j];
}
}
// 输出结果矩阵C
cout << "两个矩阵相加的结果是:" << endl;
for(int i = 0; i < n; i++){
for(int j = 0; j < m; j++){
cout << C[i][j] << " ";
}
cout << endl; // 每行结束换行
}
return 0;
}
样例输入:
3 3
1 2 3
1 2 3
1 2 3
4 5 6
7 8 9
0 0 0
样例输出:
两个矩阵相加的结果是:
5 7 9
8 10 12
1 2 3
🎲 实战小游戏:矩阵交换行
这个游戏可以交换矩阵中任意两行的内容,就像交换两排座位一样有趣!
#include <iostream>
using namespace std;
int main() {
// 定义一个5x5的矩阵
int matrix[5][5];
int m, n; // 要交换的两行
// 输入矩阵的5行数据
cout << "请输入5行5列的矩阵:" << endl;
for(int i = 0; i < 5; i++){
for(int j = 0; j < 5; j++){
cin >> matrix[i][j];
}
}
// 输入要交换的两行(注意:题目中是从1开始编号的)
cin >> m >> n;
// 因为数组下标从0开始,所以要减1
m--;
n--;
// 交换两行的元素
for(int j = 0; j < 5; j++){
// 临时变量temp用来帮忙交换
int temp = matrix[m][j];
matrix[m][j] = matrix[n][j];
matrix[n][j] = temp;
}
// 输出交换后的矩阵
cout << "交换后的矩阵是:" << endl;
for(int i = 0; i < 5; i++){
for(int j = 0; j < 5; j++){
cout << matrix[i][j] << " ";
}
cout << endl;
}
return 0;
}
🔢 实战小游戏:计算矩阵边缘元素之和
矩阵的边缘元素就是第一行、最后一行、第一列和最后一列的元素,计算它们的和就像给边框上的数字做加法!
#include <iostream>
using namespace std;
int main() {
int m, n; // m是行数,n是列数
int sum = 0; // 用来存放边缘元素的和
int matrix[100][100]; // 定义一个足够大的矩阵
// 输入行数和列数
cin >> m >> n;
// 输入矩阵元素
for(int i = 0; i < m; i++){
for(int j = 0; j < n; j++){
cin >> matrix[i][j];
}
}
// 计算边缘元素之和
for(int i = 0; i < m; i++){
for(int j = 0; j < n; j++){
// 边缘元素的条件:第一行(i==0)、最后一行(i==m-1)
// 或者第一列(j==0)、最后一列(j==n-1)
if(i == 0 || i == m-1 || j == 0 || j == n-1){
sum += matrix[i][j];
}
}
}
// 输出结果
cout << "矩阵边缘元素之和是:" << sum << endl;
return 0;
}
样例输入:
3 3
3 4 1
3 7 1
2 0 1
样例输出:
矩阵边缘元素之和是:15
📝 小结与练习
今天我们学习了:
- 二维数组就像一个表格,有行和列
- 定义方法:
数据类型 数组名[行数][列数]
- 访问元素:
数组名[行下标][列下标]
(下标从0开始) - 初始化二维数组的几种方法
- 用双重循环遍历二维数组
- 二维数组的输入输出
- 三个有趣的实战小游戏:矩阵加法、矩阵交换行、计算矩阵边缘元素之和
练习题
- 创建一个4x4的二维数组,初始化后输出所有元素。
- 让用户输入一个3x3的矩阵,然后计算对角线元素之和(从左上角到右下角)。
- 编写程序,将一个2x3的矩阵转置成3x2的矩阵(行变列,列变行)。
小朋友们,二维数组是不是很有趣呀?它在游戏开发、图像处理等很多地方都有大用处呢!多练习几次,你就能熟练掌握啦!
1 条评论
-
admin SU @ 2025-7-8 16:49:17
C++二维数组入门教程
在C++中,二维数组是一种非常有用的数据结构,它可以用来表示表格、矩阵等需要行和列的数据。下面我将通过一个简单的教程,帮助你理解和使用C++二维数组。
1. 二维数组的基本概念
二维数组可以看作是"数组的数组",类似于一个表格,有行和列。例如,一个3行4列的二维数组可以表示为:
[ [1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12] ]
2. 二维数组的声明和初始化
下面是几种常见的声明和初始化二维数组的方法:
#include <iostream> using namespace std; int main() { // 方法1:声明时直接初始化 int arr1[2][3] = { {1, 2, 3}, {4, 5, 6} }; // 方法2:部分初始化,未指定的元素自动设为0 int arr2[3][4] = { {1, 2}, // 第一行:1,2,0,0 {3, 4, 5} // 第二行:3,4,5,0 // 第三行:0,0,0,0 }; // 方法3:省略第一维的大小(必须初始化) int arr3[][2] = { {1, 2}, {3, 4}, {5, 6} // 编译器会自动计算第一维大小为3 }; return 0; }
3. 访问和修改二维数组元素
通过行索引和列索引可以访问和修改二维数组中的元素。注意,索引从0开始:
#include <iostream> using namespace std; int main() { int arr[2][3] = { {1, 2, 3}, {4, 5, 6} }; // 访问元素 cout << "第一行第二列的元素是:" << arr[0][1] << endl; // 输出2 // 修改元素 arr[1][2] = 10; cout << "修改后第二行第三列的元素是:" << arr[1][2] << endl; // 输出10 return 0; }
4. 遍历二维数组
通常使用嵌套循环来遍历二维数组的所有元素:
#include <iostream> using namespace std; int main() { int arr[3][2] = { {1, 2}, {3, 4}, {5, 6} }; // 使用嵌套for循环遍历数组 cout << "遍历数组内容:" << endl; for (int i = 0; i < 3; i++) { // 遍历行 for (int j = 0; j < 2; j++) { // 遍历列 cout << "arr[" << i << "][" << j << "] = " << arr[i][j] << endl; } } return 0; }
5. 二维数组作为函数参数
可以将二维数组作为参数传递给函数,但需要注意参数的声明方式:
#include <iostream> using namespace std; // 函数:打印二维数组 void printArray(int arr[][3], int rows) { for (int i = 0; i < rows; i++) { for (int j = 0; j < 3; j++) { cout << arr[i][j] << " "; } cout << endl; } } int main() { int arr[2][3] = { {1, 2, 3}, {4, 5, 6} }; cout << "调用函数打印数组:" << endl; printArray(arr, 2); return 0; }
以上就是C++二维数组的基本使用方法。通过练习这些例子,你可以掌握二维数组的声明、初始化、访问、修改和遍历等操作。
- 1