侧边栏壁纸
博主头像
编程之家 博主等级

行动起来,活在当下

  • 累计撰写 37 篇文章
  • 累计创建 3 个标签
  • 累计收到 1 条评论

目 录CONTENT

文章目录

C语言程序设计:15.二维数组

李航
2025-12-02 / 0 评论 / 0 点赞 / 6 阅读 / 0 字

C语言程序设计:二维数组

1. 引入

二维数组是C语言中一个非常常用的数据结构,通常用来表示矩阵、表格等数据结构。二维数组本质上是由多个一维数组组成的数组,可以用于存储具有行和列的矩阵数据。学习如何定义、操作、访问二维数组是掌握C语言数组操作的重要一环。

本文将介绍如何在C语言中定义、初始化和操作二维数组,包括向二维数组中添加、修改、查询数据以及如何遍历二维数组。


2. 二维数组的定义与初始化

2.1 二维数组的定义

二维数组的定义形式如下:

type array_name[row_size][col_size];
  • type:数组元素的类型,如 intfloat 等。
  • array_name:数组名称。
  • row_size:数组的行数。
  • col_size:数组的列数。

示例:定义一个二维整数数组

int matrix[3][4];  // 定义一个3行4列的二维数组

在这个例子中,matrix 是一个 3 行 4 列的二维数组。

2.2 二维数组的初始化

二维数组可以通过两种方式进行初始化:

1. 显式初始化(手动指定每个元素的值)

int matrix[2][3] = {
    {1, 2, 3},
    {4, 5, 6}
};

在这个例子中,matrix 是一个 2 行 3 列的二维数组,元素按照指定的顺序初始化。

2. 隐式初始化(省略行数或列数)

如果在初始化时省略了行数或列数,编译器会根据数组初始化时的元素数量自动推断:

int matrix[][3] = {
    {1, 2, 3},
    {4, 5, 6}
};

在这种情况下,编译器会推断出数组有 2 行 3 列。


3. 二维数组的操作

3.1 向二维数组添加数据

二维数组的大小在定义时已经固定,不能动态扩展。但是,可以通过更新特定位置的元素来模拟“添加”数据的操作。

示例:向二维数组添加数据

#include <stdio.h>

int main() {
    int matrix[2][3] = {
        {1, 2, 3},
        {4, 5, 6}
    };

    // 向第二行第三列添加数据
    matrix[1][2] = 10;

    // 输出修改后的二维数组
    for (int i = 0; i < 2; i++) {
        for (int j = 0; j < 3; j++) {
            printf("%d ", matrix[i][j]);
        }
        printf("\n");
    }

    return 0;
}

输出:

1 2 3 
4 5 10

3.2 修改二维数组中的数据

通过访问二维数组的元素位置(使用行和列的索引),可以修改其中的值。

示例:修改二维数组中的数据

#include <stdio.h>

int main() {
    int matrix[2][3] = {
        {1, 2, 3},
        {4, 5, 6}
    };

    // 修改第一行第二列的元素
    matrix[0][1] = 20;

    // 输出修改后的二维数组
    for (int i = 0; i < 2; i++) {
        for (int j = 0; j < 3; j++) {
            printf("%d ", matrix[i][j]);
        }
        printf("\n");
    }

    return 0;
}

输出:

1 20 3 
4 5 6

3.3 查询二维数组中的数据

查询二维数组中的数据可以通过索引访问来实现。可以用循环遍历数组中的所有元素,或者直接访问特定的元素。

示例:查询二维数组中的数据

#include <stdio.h>

int main() {
    int matrix[2][3] = {
        {1, 2, 3},
        {4, 5, 6}
    };
    int value = 5;  // 要查询的值
    int found = 0;  // 查询结果标志

    // 遍历二维数组查找目标值
    for (int i = 0; i < 2; i++) {
        for (int j = 0; j < 3; j++) {
            if (matrix[i][j] == value) {
                printf("值 %d 在数组的位置是:(%d, %d)\n", value, i, j);
                found = 1;
                break;
            }
        }
        if (found) break;
    }

    if (!found) {
        printf("未找到值 %d\n", value);
    }

    return 0;
}

输出:

值 5 在数组的位置是:(1, 1)

3.4 遍历二维数组

遍历二维数组时,通常使用两层嵌套的 for 循环:第一层遍历行,第二层遍历列。

示例:遍历二维数组并打印所有元素

#include <stdio.h>

int main() {
    int matrix[2][3] = {
        {1, 2, 3},
        {4, 5, 6}
    };

    // 遍历二维数组并打印元素
    printf("二维数组的所有元素是:\n");
    for (int i = 0; i < 2; i++) {
        for (int j = 0; j < 3; j++) {
            printf("%d ", matrix[i][j]);
        }
        printf("\n");
    }

    return 0;
}

输出:

二维数组的所有元素是:
1 2 3 
4 5 6

4. 总结

  • 定义二维数组:通过 type array_name[row_size][col_size] 的方式定义二维数组。
  • 初始化二维数组:可以使用显式或隐式初始化的方法,明确指定数组的每个元素。
  • 添加数据:通过索引访问特定位置,修改其值来实现“添加”元素的效果。
  • 修改数据:可以直接访问指定索引的元素进行修改。
  • 查询数据:通过遍历数组或直接访问某个元素来查询数据。
  • 遍历数组:通常使用嵌套循环来遍历二维数组中的所有元素。

5. 练习题

1. 题目:编写一个程序,计算二维数组中所有元素的和。

答案:

#include <stdio.h>

int main() {
    int matrix[2][3] = {
        {1, 2, 3},
        {4, 5, 6}
    };
    int sum = 0;

    // 计算二维数组元素的和
    for (int i = 0; i < 2; i++) {
        for (int j = 0; j < 3; j++) {
            sum += matrix[i][j];
        }
    }

    printf("二维数组元素的和是:%d\n", sum);

    return 0;
}

2. 题目:编写一个程序,查找二维数组中最大的元素并输出其位置。

答案:

#include <stdio.h>

int main() {
    int matrix[3][3] = {
        {1, 2, 3},
        {4, 5, 6},
        {7, 8, 9}
    };
    int max = matrix[0][0];
    int row_pos = 0, col_pos = 0;

    // 查找最大元素的位置
    for (int i = 0; i < 3; i++) {
        for (int j = 0; j < 3; j++) {
            if (matrix[i][j] > max) {
                max = matrix[i][j];
                row_pos = i;
                col_pos = j;
            }
        }
    }

    printf("最大元素是:%d,位置是:(%d, %d)\n", max, row_pos, col_pos);

    return 0;
}

3. 题目:编写一个程序,按行输出二维数组的每一行。

答案:

#include <stdio.h>

int main() {
    int matrix[2][3] = {
        {10, 20, 30},
        {40, 50, 60}
    };

    // 按行输出二维数组
    for (int i = 0; i < 2; i++) {
        for (int j = 0; j < 3; j++) {
            printf("%d ", matrix[i][j]);
        }
        printf("\n");
0

评论区