小学生也能懂的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

📝 小结与练习

今天我们学习了:

  1. 二维数组就像一个表格,有行和列
  2. 定义方法:数据类型 数组名[行数][列数]
  3. 访问元素:数组名[行下标][列下标](下标从0开始)
  4. 初始化二维数组的几种方法
  5. 用双重循环遍历二维数组
  6. 二维数组的输入输出
  7. 三个有趣的实战小游戏:矩阵加法、矩阵交换行、计算矩阵边缘元素之和

练习题

  1. 创建一个4x4的二维数组,初始化后输出所有元素。
  2. 让用户输入一个3x3的矩阵,然后计算对角线元素之和(从左上角到右下角)。
  3. 编写程序,将一个2x3的矩阵转置成3x2的矩阵(行变列,列变行)。

小朋友们,二维数组是不是很有趣呀?它在游戏开发、图像处理等很多地方都有大用处呢!多练习几次,你就能熟练掌握啦!

1 条评论

  • @ 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