c语言二维数组的定义,引用,初始化及二维数组的程序举例

在C语言中,二维数组是一种可以存储表格数据的数组结构。二维数组的每个元素本身也是一个数组,可以通过行和列的索引来访问。

定义二维数组

二维数组的定义语法如下:
data_type array_name[rows][columns];

- data_type 是数组中元素的类型,例如 int、float、char 等。
- array_name 是数组的名称。
- rows 和 columns 分别表示数组的行数和列数。

1. 整数类型的二维数组:
int matrix[3][4];

这个定义了一个名为 matrix 的二维数组,它有 3 行 4 列。每个元素都是一个 int 类型的整数。

2. 字符类型的二维数组:
char grid[2][5];

这个定义了一个名为 grid 的二维数组,它有 2 行 5 列。每个元素都是一个字符。

3. 带初始值的二维数组:
int matrix[2][3] = {{1, 2, 3}, {4, 5, 6}};

这个定义了一个 2 行 3 列的数组,并初始化了其元素。

引用二维数组的元素

引用二维数组中的元素需要使用两个下标:一个表示行索引,另一个表示列索引。语法如下:
array_name[row_index][column_index]

示例

假设我们有以下数组定义:

int matrix[3][4] = {
    {1, 2, 3, 4},
    {5, 6, 7, 8},
    {9, 10, 11, 12}
};

1. 访问单个元素:

要访问数组中的某个元素,例如第二行第三列的元素,可以使用:
int value = matrix[1][2]; // value = 7

在C语言中,数组的索引从 0 开始,因此 `matrix[1][2]` 实际上是第二行第三列的元素。

2. 修改元素:

可以通过索引直接修改数组中的元素,例如:
matrix[0][0] = 10; // 将第一行第一列的元素设置为 10

3. 遍历二维数组:

可以使用嵌套的 for 循环遍历整个二维数组:
int i, j;
for (i = 0; i < 3; i++) {
    for (j = 0; j < 4; j++) {
        printf("%d ", matrix[i][j]);
    }
    printf("\n");
}

以上将打印整个 matrix 数组的内容。

总结

- 定义二维数组:指定数据类型、数组名称以及行列数。
- 引用二维数组:使用两个下标,分别代表行和列。
- 遍历和操作二维数组:可以使用循环和索引来访问和修改数组中的元素。

二维数组的初始化可以在声明时直接赋值,或者在运行时逐个赋值。

初始化二维数组

1. 在声明时初始化

在声明二维数组时可以直接赋值给数组中的元素。这种方法最常见于数组元素已知的情况。
// 定义并初始化一个 3x4 的整数二维数组
int matrix[3][4] = {
    {1, 2, 3, 4},  // 第一行
    {5, 6, 7, 8},  // 第二行
    {9, 10, 11, 12} // 第三行
};

在这种初始化方法中,数组的每一行可以用一个大括号 `{}` 包括起来,元素之间用逗号隔开。如果省略内层的花括号,编译器会按顺序填充数组。

2. 部分初始化

如果只想初始化部分元素,剩下的元素会自动初始化为 0(对数值类型的数组)。
int matrix[3][4] = {1, 2, 3}; // 只有第一个元素被显式初始化为1,其他默认为0

3. 运行时初始化

二维数组也可以在运行时逐个元素进行赋值。这通常通过循环实现。
int matrix[3][4];
for(int i = 0; i < 3; i++) {
    for(int j = 0; j < 4; j++) {
        matrix[i][j] = i * j; // 赋值操作
    }
}

示例程序

以下是几个使用二维数组的示例程序。

示例 1:求和二维数组的所有元素
#include <stdio.h>

int main() {
    int matrix[3][4] = {
        {1, 2, 3, 4},
        {5, 6, 7, 8},
        {9, 10, 11, 12}
    };
    int sum = 0;

    // 遍历所有元素,计算总和
    for(int i = 0; i < 3; i++) {
        for(int j = 0; j < 4; j++) {
            sum += matrix[i][j];
        }
    }

    printf("Sum of all elements: %d\n", sum);
    return 0;
}

定义并初始化了一个 3x4 的整数二维数组,然后计算并打印所有元素的总和。

示例 2:矩阵转置
#include <stdio.h>

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

    // 计算矩阵的转置
    for(int i = 0; i < 3; i++) {
        for(int j = 0; j < 3; j++) {
            transpose[j][i] = matrix[i][j];
        }
    }

    // 输出转置后的矩阵
    printf("Transpose of the matrix:\n");
    for(int i = 0; i < 3; i++) {
        for(int j = 0; j < 3; j++) {
            printf("%d ", transpose[i][j]);
        }
        printf("\n");
    }

    return 0;
}

计算了一个 3x3 矩阵的转置,并输出转置后的矩阵。转置操作是交换矩阵的行和列。

示例 3:查找二维数组中的最大值
#include <stdio.h>

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

    // 查找最大值
    for(int i = 0; i < 2; i++) {
        for(int j = 0; j < 3; j++) {
            if(matrix[i][j] > max) {
                max = matrix[i][j];
            }
        }
    }

    printf("Maximum value: %d\n", max);
    return 0;
}

该程序查找并打印二维数组中的最大值。

  • 15
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值