C语言的多维数组
提示
- 多维数组的定义:在C编程中,可以创建一个数组的数组,称为多维数组,例如二维数组
float x[3][4];
可以存储12个元素。 - 初始化多维数组:可以在声明时初始化多维数组,例如
int c[2][3] = {{1, 3, 0}, {-1, 5, 9}};
用于二维数组,类似的方 法也适用于三维数组。 - 多维数组示例:示例包括使用二维数组存储和打印城市每天的温度,计算两个矩阵的和,以及使用三维数组存储和显示用户输入的值。
在C编程中,您可以创建一个数组的数组。这些数组被称为多维数组。例如,
float x[3][4];
这里,x是一个二维(2d)数组。该数组可以存储12个元素。您可以将这个数组看作一个有3行,每行有4 列的表格。
类似地,您也可以声明一个三维(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