C语言之多维数组

所谓多维数组就是以多个数组为单位组成的数组,即元素本身是数组的数组。下面我们来学习多维数组的基本知识:


多维数组

上一节学习的数组都是int型或double型等单一类型,实际上数组本身也可以作为组成数组的元素。

以数组作为元素的数组时二维数组,以二维数组作为元素的数组是三维数组……也可以组成更高维度的数组。二维以上的数组统称为多维数组

多维数组是以数组为元素的数组。

 让我们来看下由单一的数据类型组成一维数组,再由一维数组组成二维数组的过程

a——>b:int类型的元素集中起来形成一维数组。

b——>c:一维数组集中起来形成二维数组。

元素类型分别如下:

a:int型

b:int[3]型  元素类型为int型,元素个数为3.

c:int[3][3]型  以元素类型为int型,元素个数为3的数组为元素,元素个数为3的数组。

 二维数组就是一个像由行和列组成的表单,各个元素纵横排列。

在多维数组的声明中,最先集中起来的元素个数(比如二维数组的列)放在末尾。

我们将构成数组的最小元素称为构成元素,访问构成元素的表达式形式为a[i][j],即连用下标运算符[ ],下标也是从0开始的,和一维数组一模一样。

构成二维数组a[3][3]的构成元素有:a[0][0]、a[0][1]、a[0][2]、a[1][0]、a[1][1]、a[1][2]、a[2][0]、a[2][1]、a[2][2]一共9个。

和一维数组一样,多维数组的所有元素/所有构成元素在内存的排列是一条直线上的。构成元素排列时,首先是末尾的下表按照0、1、……的顺序递增,然后是开头的下标按照0、1……等顺序递增,如下所示:

a[0][0]、a[0][1]、a[0][2]、a[1][0]、a[1][1]、a[1][2]、a[2][0]、a[2][1]、a[2][2]

注意

多维数组的构成元素进行排列时,首先由末尾的下标(列)开始递增。 

另在再定义一个二维数组时,它的行可以省略,但是列不行的哦!


下面我们用二维数组来编写一段程序假设有4名学生,3门课程,并且进行两次考试,让我们分别求出各课程的总分并显示。

 

#include<stdio.h>

int main()
{
	int i, j;
	int tensu1[4][3] = {{2, 3, 4}, {4, 3, 4 }, {5, 3, 3}, {3, 4, 4}};
	int tensu2[4][3] = {{2, 3, 4}, {4, 3, 4 }, {5, 3, 3}, {3, 4, 4}};
	int sum[4][3];
	/*求两次考试的分数之和*/
	
	for(i = 0; i < 4; i++)//4名学生
	{
		for(j = 0; j < 3; j++)//3门课程
		{
			sum[i][j] = tensu1[i][j] +  tensu2[i][j];
		}
	}
	puts("第一次考试的分数:");
	
	for(i = 0; i < 4; i++)
	{
		for(j = 0; j < 3; j++)
		{
			printf("%4d", tensu1[i][j]);
		}
		putchar('\n');
	}
	
	puts("第二次考试分数的:");
	
	for(i = 0; i < 4; i++)
	{
		for(j = 0; j < 3; j++)
		{
			printf("%4d", tensu2[i][j]);
		}
			putchar('\n');
	}
	
	puts("显示总分:");
	
	for(i = 0; i < 4; i++)
	{
			for(j = 0; j < 3; j++)
			{
				printf("%4d", sum[i][j]);
			}
			putchar('\n');
	}
	return 0;
}

二维数组到这里基础的知识我们已经讲完了,那么在你脑海中三维数组是啥样的呢?


三维数组

二维数组可以看为一页页纸张,三维数组可看为由一页页纸张组成的书本。

二维数组当然可以看作平直角坐标系(x和y),三维数组可以看做空间直角坐标系(x、y、z)。

   选择一个角,作为原地,作出空间直角坐标系,相信这个类型的图在我们高中化学大题(题型记不清了)也出现过。

在下节课中我们将会学习函数,函数作为C语言是我们必须学习的,同时它也会将我们带入一个全新的领域!

由于期末考试来临再加上函数部分学习可能不会那么轻松,更新速度回有所减慢,请见谅哦。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/223566.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

HarmonyOS学习--创建和运行Hello World

创建和运行Hello World 打开DevEco Studio&#xff0c;在欢迎页单击Create Project&#xff0c;创建一个新工程。根据工程创建向导&#xff0c;选择创建Application应用或Atomic Service元服务。选择“Empty Ability”模板&#xff0c;然后单击Next。关于工程模板的介绍和支持…

C++ Core Guidelines解析 ( 好书推荐 )

C Core Guidelines是Bjarne和 Herb Sutter发起编写的一个开源项目&#xff0c;汇聚了 C社区多年来积累的宝贵经验&#xff0c;是非常全面的编程最佳实践指导&#xff0c;包括代码风格、函数、类、错误处理、性能优化等&#xff0c;可以说是C社区的集大成者。用Effective Modern…

Python函数

1.函数 1.1 函数概述 函数定义和优势 不同形状正方形打印 # 2个 for i in range(0, 2):for j in range(0, 2):print("*", end"")print() # 3个 for i in range(0, 3):for j in range(0, 3):print("*", end"")print() # 4个 for i …

NET Core迁移前工作

前段时间迁移.NET Core做了大量的试水和评估&#xff0c;今天整理一下分享给大家。大致有以下几个部分&#xff1a; 1. .NET Core的由来 2. 为什么要迁移.NET Core 3. .NET Core3.X主要特性 4. .NET Standard和.NET Core 5. .NET Core Roadmap&版本选择 接下来&#…

记录一次vscode markdown的图片路径相关插件学习配置过程

插件及说明查找过程 csdn搜索markdown图片路径&#xff0c;找到关于这一款插件的回答。打开vscode拓展搜索Paste Image这款插件&#xff0c;看到下载量挺高的&#xff0c;应该不赖。 点击仓库,进入该插件开源的github仓库,查看README文件阅读说明. 淡然在Vscode 插件项目下的细…

minio的k8s的单机部署

minio的k8s的单机部署 apiVersion: apps/v1 kind: Deployment metadata:name: minionamespace: itshare spec:replicas: 1selector:matchLabels:app: miniotemplate:metadata:labels:app: miniospec:containers:- name: minioimage: minio/minio:RELEASE.2022-10-15T19-57-03Z…

微服务开发:断路器详解

微服务是目前业界使用的最重要的实现方面。通过使用微服务架构&#xff0c;开发人员可以消除他们以前在单体应用程序中遇到的许多问题。展望未来&#xff0c;人们开始在微服务中搜索和采用各种模式。大多数时候&#xff0c;新模式的产生是为了解决另一个模式中出现的常见问题。…

MySQL Server 层和引擎层是如何交互的

Server 层、引擎层、BufferPool、磁盘间的关系 大体来说&#xff0c; MySQL可以分为Server层和存储引擎层两部分。 1&#xff09;Server 层&#xff1a;Server 层包括连接器、查询缓存、分析器、优化器、执行器等&#xff0c;涵盖MySQL的大多数核心服务功能&#xff0c;以及所…

深信服行为管理AC设置禁止用户使用向日葵等远程软件

需求&#xff1a;在特定的时间内禁止内外网用户使用向日葵、todesk等远程软件&#xff1b;只禁止使用专业的远程软件&#xff0c;内网的ssh、telnet、RDP需要正常放行 AC版本&#xff1a;AC13.0.62.001 Build20221107 通过访问权限策略来控制 1、行为管理→访问权限策略→新…

基于springboot+vue篮球联盟管理系统源码

&#x1f345; 简介&#xff1a;500精品计算机源码学习 &#x1f345; 欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; 文末获取源码 目录 一、以下学习内容欢迎交流&#xff1a; 二、文档资料截图&#xff1a; 三、项目技术栈 四、项目运行图 背景&#xff1a; 篮球运…

「智慧城市」这一概念科学吗?还是炒作?

智慧城市是一个综合性的概念&#xff0c;它利用信息技术和创新概念&#xff0c;将城市的各个系统和服务集成起来&#xff0c;以提升城市运行效率、优化城市管理和服务&#xff0c;改善市民的生活质量。 具体来说&#xff0c;智慧城市涵盖了许多领域&#xff0c;包括城市规划、建…

【408】计算机学科专业基础 - 计算机组成原理

一、计算机系统概述 【复习提示】 本章是组成原理的概述&#xff0c;考查时易针对有关概念或性能指标出选择题&#xff0c;也可能综合后续章节的内容出有关性能分析的综合题。掌握本章的基本概念&#xff0c;是学好后续章节的基础。部分知识点在初学时理解不深刻也无须担忧&am…

uni-app中vue3表单校验失败

目录 1.问题 2.原因及解决方式 3.表单校验方式&#xff08;vue3&#xff09; 1.问题 在app中使用uni-forms表单&#xff0c;并添加校验规则&#xff0c;问题是即使输入内容&#xff0c;表单校验依然失败。 代码&#xff1a; <template><view><uni-forms r…

案例052:用于日语词汇学习的微信小程序

文末获取源码 开发语言&#xff1a;Java 框架&#xff1a;SSM JDK版本&#xff1a;JDK1.8 数据库&#xff1a;mysql 5.7 开发软件&#xff1a;eclipse/myeclipse/idea Maven包&#xff1a;Maven3.5.4 小程序框架&#xff1a;uniapp 小程序开发软件&#xff1a;HBuilder X 小程序…

Nginx跨域配置

一 跨域概述 1.1 同源策略 同源策略是一个安全策略。同源&#xff0c;指的是协议&#xff0c;域名&#xff0c;端口相同。浏览器处于安全方面的考虑&#xff0c;只允许本域名下的接口交互&#xff0c;不同源的客户端脚本&#xff0c;在没有明确授权的情况下&#xff0c;不能读…

【SVM】不同数据划分方式导致结果不同...

此帖是一个自我纠查帖&#xff0c;感觉基本不会有其他人踩相同的坑。 背景&#xff1a;在MI分类中使用FBCSPSVM&#xff0c;基于这个方法写了两个分类的.py文件实现&#xff0c;在数据划分上大差不差&#xff08;都是CV5&#xff09;&#xff0c;但是结果却相差很多 方法一&a…

自定义数组,循环展示对象数据,vue3监视数组

HTML <div v-for"(item, index) in dataList" :key"index"> <span>{{ item.title }}:</span> <span>{{ dataInfo[item.content] }}</span> </div> JS 需要展示的键值对放入数组中 let dataList [ { title: data1, co…

慎用!3个容易被打的Python恶搞脚本

Python 无限恶搞朋友电脑&#xff0c;别提有多爽了&#xff0c;哈哈&#xff0c;打造自己的壁纸修改器&#xff0c;电脑无限锁屏&#xff0c; 无线弹窗&#xff0c;都在这里&#xff01;&#xff01;&#xff01; 1、修改电脑桌面壁纸 工具使用 开发环境&#xff1a;python3…

Python替代Adobe从PDF提取数据

大家好&#xff0c;PDF文件是官方报告、发票和数据表的通用格式&#xff0c;然而从PDF文件中提取表格数据是一项挑战。尽管Adobe Acrobat等工具提供了解决方案&#xff0c;但它们并不总是易于获取或可自动化运行&#xff0c;而Python则是编程语言中的瑞士军刀。本文将探讨如何利…