C语言 | 二维数组

115 阅读3分钟

什么是二维数组?

C 语言中的二维数组可以理解为 “数组的数组”,是一种用于存储表格型(行、列结构)数据的集合。

它的本质是在内存中以连续的一维空间存储,但通过 “行号 + 列号” 的方式来访问,逻辑上呈现为 “多行多列” 的结构。

核心特点:

1.定义格式:

基本格式为 数据类型 数组名[行数][列数];

示例:int matrix[4][4];

定义了一个 4 行 4 列的整型二维数组。

2.内存存储:

二维数组在内存中是按行连续存储的(即先存第 0 行的所有元素,再存第 1 行,以此类推)。

比如 matrix[0][0] 之后是 matrix[0][1],直到 matrix[0][3],再接着是 matrix[1][0]。

3.访问方式:

通过 数组名[行下标][列下标] 访问元素(下标从 0 开始)。

示例:matrix[2][3] 表示第 3 行、第 4 列的元素。

#include 
int main(){
	int arr[2][3]={
	{1,2,3},
	{4,5,6}
	};
	for(int i =0;i 
int main (){ 
    int numbers[6];  // 存储6个整数的数组
    int max;         // 存储最大值
    
    printf("请输入6个整数:\n");  
    
    for(int i =0; i  max){ 
            max = numbers[i];  
        } 
    } 
    
    printf("\n这6个整数中的最大值是:%d\n", max); 
    
    return 0;
}

image.png

第2问:

请编写程序实现以下功能。

(1)从键盘输入 6 个整数。

(2)使用冒泡排序法将这 6 个整数从小到大排序。

#include \

int main() { int numbers[6]; // 定义一个数组,用于存储6个整数 int i, j, temp; // 循环变量和临时变量

// (1) 从键盘输入6个整数
for (i = 0; i < 6; i++) {
    printf(&#34;请输入第 %d 个整数: &#34;, i + 1);
    scanf(&#34;%d&#34;, &numbers[i]);
}

// (2) 使用冒泡排序法将这6个整数从小到大排序
for (i = 0; i < 6 - 1; i++) {  // 控制排序轮数
    for (j = 0; j < 6 - i - 1; j++) {  // 控制每轮比较次数
        if (numbers[j] > numbers[j + 1]) {  // 如果前一个数大于后一个数
            // 交换两个数
            temp = numbers[j];
            numbers[j] = numbers[j + 1];
            numbers[j + 1] = temp;
        }
    }
}

// 输出排序后的结果
printf(&#34;排序后的结果为: &#34;);
for (i = 0; i < 6; i++) {
    printf(&#34;%d &#34;, numbers[i]);
}
printf(&#34;\n&#34;);

return 0;

}

image.png

第三问:

矩阵转置是线性代数的基本运算,就是将矩阵的行、列交换,即将行变成列,将列变成行。要求编写程序,实现输入一个 4 行 4 列的矩阵,将矩阵转置后输出。

#include 

#define SIZE 4  // 定义矩阵的大小为 4x4

int main() {
    int matrix[SIZE][SIZE];         // 原始矩阵
    int transpose[SIZE][SIZE];      // 转置后的矩阵
    int i, j;

    // 1. 输入原始矩阵
    printf(&#34;请输入一个 4x4 的矩阵(每行输入 4 个整数,用空格分隔):\n&#34;);
    for (i = 0; i < SIZE; i++) {
        for (j = 0; j < SIZE; j++) {
            scanf(&#34;%d&#34;, &matrix[i][j]);
        }
    }

    // 2. 计算转置矩阵
    for (i = 0; i < SIZE; i++) {
        for (j = 0; j < SIZE; j++) {
            transpose[j][i] = matrix[i][j];  // 行变列,列变行
        }
    }

    // 3. 输出转置后的矩阵
    printf(&#34;\n转置后的矩阵为:\n&#34;);
    for (i = 0; i < SIZE; i++) {
        for (j = 0; j < SIZE; j++) {
            printf(&#34;%d\t&#34;, transpose[i][j]);
        }
        printf(&#34;\n&#34;);
    }

    return 0;
}

image.png