C语言:二维数组

在编程中,二维数组适合用于需要按行和列组织数据的场景,尤其当数据具有二维结构时(如表格、矩阵、棋盘等)。

1.定义二维数组

1.二维数组的基本语法如下:

数据类型 数组名[行数][列数];
  1. 数据类型:表示数组中元素的类型,例如 intfloatchar 等。
  2. 数组名:是自定义的数组名称,要符合 C 语言标识符的命名规则。
  3. 行数(column):指定二维数组有多少行。
  4. 列数(row):指定二维数组每一行有多少列。

 2.c语言是特殊的一维数组

 2.初始化二维数组

 

 

#include <stdio.h>

int main()
{
    // 定义一个 2 行 3 列的二维数组,并进行初始化
    int arr[2][3] = {{1, 2, 3}, {4, 5, 6}};//全部初始化
	int arr3[2][3] = {{1},{0,11,0}};//部分初始化
    int arr2[][3] = {{2,2,3},{4,0,6}};//省略行数,行可不写,列要写数值
	
	
    // 定义两个整型变量 i 和 j,用于作为循环的计数器
    int i, j;
    // 外层循环控制行数,从第 0 行到第 1 行
    for (i = 0; i < 2; i++) {
        // 内层循环控制列数,从第 0 列到第 2 列
        for (j = 0; j < 3; j++) {
            // 使用制表符分隔元素,使输出更整齐
			printf("%d\t",arr3[i][j]);
           // printf("%d,%p  ", arr3[i][j], &arr3[i][j]);   // 打印当前元素的值和该元素的内存地址
        }
        // 每打印完一行元素后,换行
        putchar('\n');
    }
    // 程序正常结束,返回 0
    return 0;
}

 案例:有一个 3×4 的矩阵,要求编程序求出其中值最大的那个元素的值,以及其所在的行号和列号。

#include <stdio.h>

int main()
{
    // 定义用于循环计数的变量 i 和 j
    int i, j;
    // 定义变量 max 用于存储最大值
    int max;
    // 定义变量 行 用于记录最大值所在的行
    int row;
    // 定义变量 列 用于记录最大值所在的列
    int col;
    // 定义并初始化一个 3 行 4 列的二维数组
    int arr[3][4] = {1, 2, 4, 6, 7, 9, 45, 56, 78, 98, 34, 46};

    // 遍历二维数组并打印每个元素
    for (i = 0; i < 3; i++) {
        for (j = 0; j < 4; j++) {
            // 使用制表符分隔元素,使输出更整齐
            printf("%d\t", arr[i][j]);
        }
        // 每行元素打印完后换行
        printf("\n");
    }

    // 假设数组的第一个元素为最大值
    max = arr[0][0];
    // 再次遍历二维数组,找出最大值
    for (i = 0; i < 3; i++) {
        for (j = 0; j < 4; j++) {
            // 如果当前元素比 max 大
            if (max < arr[i][j]) {
                // 更新最大值
                max = arr[i][j];
                // 记录最大值所在的行
                row = i;
                // 记录最大值所在的列
                col = j;
            }
        }
    }

    // 输出最大值所在的行、列以及最大值本身,行和列从 1 开始计数
    printf("输出最大在第%d行,第%d列,最大值为%d", row + 1, col + 1, max);
    return 0;
}
  1. 定义并初始化矩阵int arr[3][4] 创建 3 行 4 列的二维数组,存储矩阵数据。
  2. 初始化最大值及位置:先把矩阵第一个元素arr[0][0]设为初始最大值,记录其行列。
  3. 双重循环遍历
    • 外层循环控制行(i从 0 到 2,共 3 行)。
    • 内层循环控制列(j从 0 到 3,共 4 列)。
    • 每次比较当前元素arr[i][j]和记录的max,若更大,就更新max及对应的rowcol
  4. 输出结果:用printf打印最大值及其行列号。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值