跳到主要内容

C语言的多维数组

提示
  1. 多维数组的定义:在C编程中,可以创建一个数组的数组,称为多维数组,例如二维数组float x[3][4];可以存储12个元素。
  2. 初始化多维数组:可以在声明时初始化多维数组,例如int c[2][3] = {{1, 3, 0}, {-1, 5, 9}};用于二维数组,类似的方法也适用于三维数组。
  3. 多维数组示例:示例包括使用二维数组存储和打印城市每天的温度,计算两个矩阵的和,以及使用三维数组存储和显示用户输入的值。

在C编程中,您可以创建一个数组的数组。这些数组被称为多维数组。例如,

float x[3][4];

这里,x是一个二维(2d)数组。该数组可以存储12个元素。您可以将这个数组看作一个有3行,每行有4列的表格。

C编程中的二维数组

类似地,您也可以声明一个三维(3d)数组。例如,

float y[2][4][3];

这里,数组y可以存储24个元素。

初始化多维数组

这里是如何初始化二维和三维数组的方法:

初始化2d数组

// 初始化二维数组的不同方式

int c[2][3] = {{1, 3, 0}, {-1, 5, 9}};

int c[][3] = {{1, 3, 0}, {-1, 5, 9}};

int c[2][3] = {1, 3, 0, -1, 5, 9};

初始化3d数组

您可以以与二维数组类似的方式初始化三维数组。这是一个例子,

int test[2][3][4] = {
{{3, 4, 2, 3}, {0, -3, 9, 11}, {23, 12, 23, 2}},
{{13, 4, 56, 3}, {5, 9, 3, 5}, {3, 1, 4, 9}}};

示例1:使用二维数组存储和打印值

// C程序用来存储两个城市一周的温度并显示它。
#include <stdio.h>
const int CITY = 2;
const int WEEK = 7;
int main()
{
int temperature[CITY][WEEK];

// 使用嵌套循环存储二维数组的值
for (int i = 0; i < CITY; ++i)
{
for (int j = 0; j < WEEK; ++j)
{
printf("城市 %d, 第 %d 天: ", i + 1, j + 1);
scanf("%d", &temperature[i][j]);
}
}
printf("\n显示值: \n\n");

// 使用嵌套循环显示二维数组的值
for (int i = 0; i < CITY; ++i)
{
for (int j = 0; j < WEEK; ++j)
{
printf("城市 %d, 第 %d 天 = %d\n", i + 1, j + 1, temperature[i][j]);
}
}
return 0;
}

输出

城市 1,1: 33
城市 1,2: 34
城市 1,3: 35
城市 1,4: 33
城市 1,5: 32
城市 1,6: 31
城市 1,7: 30
城市 2,1: 23
城市 2,2: 22
城市 2,3: 21
城市 2,4: 24
城市 2,5: 22
城市 2,6: 25
城市 2,7: 26

显示值:

城市 1,1= 33
城市 1,2= 34
城市 1,3= 35
城市 1,4= 33
城市 1,5= 32
城市 1,6= 31
城市 1,7= 30
城市 2,1= 23
城市 2,2= 22
城市 2,3= 21
城市 2,4= 24
城市 2,5= 22
城市 2,6= 25
城市 2,7= 26

示例2:两个矩阵的和

// C程序计算两个2*2矩阵的和

#include <stdio.h>
int main()
{
float a[2][2], b[2][2], result[2][2];

// 使用嵌套循环输入数组元素
printf("输入第一个矩阵的元素\n");
for (int i = 0; i < 2; ++i)
for (int j = 0; j < 2; ++j)
{
printf("输入a%d%d: ", i + 1, j + 1);
scanf("%f", &a[i][j]);
}

// 使用嵌套循环输入数组元素
printf("输入第二个矩阵的元素\n");
for (int i = 0; i < 2; ++i)
for (int j = 0; j < 2; ++j)
{
printf("输入b%d%d: ", i + 1, j + 1);
scanf("%f", &b[i][j]);
}

// 添加两个数组的对应元素
for (int i = 0; i < 2; ++i)
for (int j = 0; j < 2; ++j)
{
result[i][j] = a[i][j] + b[i][j];
}

// 显示结果
printf("\n矩阵的和:\n");

for (int i = 0; i < 2; ++i)
for (int j = 0; j < 2; ++j)
{
printf("%.1f\t", result[i][j]);

if (j == 1)
printf("\n");
}
return 0;
}

输出

输入第一个矩阵的元素
输入a11: 2;
输入a12: 0.5;
输入a21: -1.1;
输入a22: 2;
输入第二个矩阵的元素
输入b11: 0.2;
输入b12: 0;
输入b21: 0.23;
输入b22: 23;

矩阵的和:
2.2 0.5
-0.9 25.0

示例3:三维数组

// C程序用来存储和打印用户输入的12个值

#include <stdio.h>
int main()
{
int test[2][3][2];

printf("输入12个值: \n");

for (int i = 0; i < 2; ++i)
{
for (int j = 0; j < 3; ++j)
{
for (int k = 0; k < 2; ++k)
{
scanf("%d", &test[i][j][k]);
}
}
}

// 打印值及其索引

printf("\n显示值:\n");
for (int i = 0; i < 2; ++i)
{
for (int j = 0; j < 3; ++j)
{
for (int k = 0; k < 2; ++k)
{
printf("test[%d][%d][%d] = %d\n", i, j, k, test[i][j][k]);
}
}
}

return 0;
}

输出

输入12个值:
1
2
3
4
5
6
7
8
9
10
11
12

显示值:
test[0][0][0] = 1
test[0][0][1] = 2
test[0][1][0] = 3
test[0][1][1] = 4
test[0][2][0] = 5
test[0][2][1] = 6
test[1][0][0] = 7
test[1][0][1] = 8
test[1][1][0] = 9
test[1][1][1] = 10
test[1][2][0] = 11
test[1][2][1] = 12