C语言高级教程-C语言数组(五):二维(多维)数组初始化和基于数组的综合实例->帽子选购问题

本文详细介绍了C语言中二维和三维数组的初始化,并通过一个帽子选购的综合实例展示了如何使用数组解决问题。文章涵盖二维数组、三维数组的初始化方式,以及如何使用for循环和sizeof运算符求解数组元素之和。最后,通过实例演示了如何根据头围计算合适的帽子尺寸。
摘要由CSDN通过智能技术生成

在这里插入图片描述

一、本文的编译环境

本文的编译环境使用的是集成开发环境:Visual Studio 2019
在这里插入图片描述

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
很多同学对咱们C语言的课程、学习存在着很多误解,而且很多同学还不知道《C语言高级教程》后面的课程安排是什么,因此这里一并做一个说明。有同学问“别人都说开发数据库系统、Web系统还是Java、C#等最流行,咱们用C语言学了开发也不是浪费吗?”、“C语言不是做嵌入式开发、操作系统等底层的东西吗?”、“我们为什么不讲C语言的嵌入式开发?”、“人家都学Web开发,咱们这学C语言开发C/S的程序不是落伍了吗?”。 确实在实际工作中,由于C语言的门槛比较高,很少有实际项目用C语言进行数据库系统、Web系统等的开发的。但是我不止一次强调“学习时学东西和工作时学东西是不一样的”。 工作以后选用的技术、语言一定是选择做合适、最方便做所从事方面的,比如开发Web程序肯定首选PHP、Java、.net,开发底层系统肯定首选C/C++,开发桌面系统肯定首选VB、Delphi,也就是“用合适的语言做合适的事情”; 但是对于在校生来说则是“用最熟悉的语言做所有事情”。初学编程的人最容易在语言的表层陷入 太长时间,如果要学数据库开发了就要去学Delphi、PB,又要学Web开发了就又去学Java、.net,又要学底层开发了就又去学C/C++, 可是每门语言都没深入,最后真正要学的数据库开发、Web开发、底层 开发等等没怎么学会,倒是把大量的时间浪费在学这些基础语法上,浪费了宝贵的时间, 这也是我痛 恨目前很多大学课程安排的一个原因。因此我的倡导就是对于在校生来说则是“用最熟悉的语言做所 有事情”,我甚至建议大学只学一门C语言就够了,然后就教大家用C语言做所有的方面。
评论 62
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

编程爱好者-阿新

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值