C语言高级教程-C语言数组(五):二维(多维)数组初始化和基于数组的综合实例->帽子选购问题
一、本文的编译环境
本文的编译环境使用的是集成开发环境:Visual Studio 2019
Visual Studio 2019官网链接如下
Visual Studio 2019集成的开发环境的特点有
- Visual Studio 2019默认安装Live Share代码协作服务。
- 帮助用户快速编写代码的新欢迎窗口、改进搜索功能、总体性能改进。
- Visual Studio IntelliCode AI帮助。
- 更好的Python虚拟和Conda支持。
- 以及对包括WinForms和WPF在内的.NET Core 3.0项目支持等 。
二、二维数组的初始化
- 二维数组的初始化类似于一维数组。
- 区别是把每一行的初始值放在大括号{}中,再把所有行放在一对大括号中。
// 二维数组的初始化
int numbers[3][4] =
{
{
10,20,30,40}, // 第一行的值
{
15,25,35,45}, // 第二行的值
{
47,48,49,50} // 第三行的值
};
- 初始化行中元素的每组值放在大括号中,所有的初始值则放在另一对大括号中。一行中的值以逗号分开,各行值也需要以逗号分开。
- 如果指定的初值少于一行的元素数,这些值会从每行的第-一个 元素开始,依序赋予各元素,剩下未指定初值的元素则初始化为0。
仅提供-一个值,就可以把整个数组初始化为0:
int numbers[3] [4] = {
0};
三、三维数组的初始化
- 三维数组是二维数组的扩展。
- 三维数组的初始化有3级嵌套的括号。
- 内层的括号包含每行的初始值。
三维数组的初始化如下所示
// 三维数组初始化
int numbers[2][3][4] =
{
{
// 第一个块3行
{
10,20,30,40},
{
15,25,35,45},
{
47,48,49,50}
},
{
// 第二个块3行
{
10,20,30,40},
{
15,25,35,45},
{
47,48,49,50}
}
};
- 可以看到,初始化的值放在一一个外层的大括号中,该外层括号由两个包含3行的块组成,每个块也放在括号中,各个块中的每-行也放在括号中,所以三维数组有3层嵌套括号。
- 一般来说是这样的,例如六维数组用6层嵌套括号包含元素的初始值。可以省
略每一行的括号, 但给每一行的值加上括号比较安全,因为更不容易出错。
四、使用for循环求三维数组元素值的和
4.1、for循环求数组元素值的和
使用for循环求三维数组元素值的和 的代码如下所示
int sum = 0;
// 使用for循环求三维数组元素值的和
for (int i = 0; i < 2; i++)
{
for (int j = 0; j < 3; j++)
{
for (int k = 0; k < 4; k++)
{
sum += numbers[i][j][k];
}
}
}
printf("使用for循环求三维数组元素值的和为:%d\n", sum);
- 每个循环都遍历一个数组维。
- 对于i的每个值,都完整地执行j控制的循环,对于i的的每个值,都完整地执行k控制的循环。
4.2、for循环求数组元素值的和的运行结果
for循环求数组元素值的和的运行结果 如下所示
五、使用sizeof运算符求三维数组元素值的和
5.1、sizeof运算符求数组元素值的和
使用sizeof运算符求三维数组元素值的和 的代码如下所示
// 使用sizeof运算符求三维数组元素值的和
sum = 0;
for (int i = 0; i < sizeof(numbers) / sizeof(numbers[0]); i++)
{
for (int j = 0