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语言是我们必须学习的,同时它也会将我们带入一个全新的领域!

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java架构师系统架构设计原则应用

目录 1 导语2 如何设计高并发系统:局部并发原则3 如何设计高并发系统:服务化与拆分4 高可用系统有哪些设计原则?5 如何保持简单轻量的架构-DRY、KISS,YAGNI原则6 如何设计组件间的交互和行为-HCLC,CQS,SOC7 框架层面的发展趋势-约定大于配置想学习架构师构建流程请跳转:…

【数据结构】动态规划(Dynamic Programming)

一.动态规划&#xff08;DP&#xff09;的定义&#xff1a; 求解决策过程&#xff08;decision process&#xff09;最优化的数学方法。 将多阶段决策过程转化为一系列单阶段问题&#xff0c;利用各阶段之间的关系&#xff0c;逐个求解。 二.动态规划的基本思想&#xff1a; …

【vue】点击导航菜单切换局部页面,打开展示默认栏目,页面刷新等问题

非专业前端&#xff0c;局限性较高&#xff0c;有些问题看起来很小&#xff0c;但是初次接触很棘手&#xff0c;需要查找很多博客&#xff0c;内容也很杂。以下只是过程中总结下来的&#xff0c;要解决的就是标题中的三个问题。 这是我需要达成的效果。 1.第一个是进入导航菜单…

浅谈web性能测试

什么是性能测试&#xff1f; web性能应该注意些什么&#xff1f; 性能测试&#xff0c;简而言之就是模仿用户对一个系统进行大批量的操作&#xff0c;得出系统各项性能指标和性能瓶颈&#xff0c;并从中发现存在的问题&#xff0c;通过多方协助调优的过程。而web端的性能测试…

Clion运行QT,模拟VS弹出CMD框打印

参考&#xff1a;https://stackoverflow.com/questions/35385772/running-clion-on-the-system-console-like-visual-studio 在运行配置的地方进行编辑&#xff1a; 可执行文件设置&#xff1a;C:\Windows\System32\cmd.exe程序实参&#xff1a;/c “start cmd.exe cmd /c “…

【开发板测评】一起玩转ACM32G103开发板,释放MCU无限潜能!

为帮助小伙伴们更好的快速熟悉了解ACM32G103系列的特性&#xff0c;航芯特别发起了该系列开发板评测试用&#xff0c;以帮助大家更好地运用MCU进行项目设计。 ACM32G103开发板介绍 ACM32G103系列是航芯推出的一款有着丰富模拟外设及安全存储扩展能力的高性价比通用MCU。 高性…

汉威科技全系列VOC气体检测产品,护航绿色低碳安全发展

可能很多人都不知道&#xff0c;危化品爆炸、城市光化学烟雾污染&#xff08;如英国伦敦烟雾事件&#xff09;、城市灰霾、温室效应、臭氧层空洞等问题背后的元凶都是VOC。VOC(Volatile Organic Compounds)即挥发性有机物&#xff0c;这类物质易挥发&#xff0c;且普遍具有毒性…

系统调用过程

应用程序通过系统调用请求操作系统的服务。而系统中的各种共享资源都由操作系统内核统一掌管&#xff0c;因此凡是与共享资源有关的操作&#xff08;如存储分配、/O操作、文件管理等&#xff09;&#xff0c;都必须通过系统调用的方式向操作系统内核提出服务请求&#xff0c;由…

[实践总结] Java中读取properties配置文件

读取此key.properties文件 代码实现 import java.io.IOException; import java.io.InputStream; import java.util.Properties;public class PropertyUtils {private static final Properties properties new Properties();static {try (InputStream resourceAsStream Prope…

云上守沪 | 云轴科技ZStack成功实践精选(上海)

为打造国际数字之都&#xff0c;上海发布数字经济发展“十四五”规划&#xff0c;围绕数字新产业、数据新要素、数字新基建、智能新终端等重点领域&#xff0c;加强数据、技术、企业、空间载体等关键要素协同联动&#xff0c;加快进行数字经济发展布局&#xff1b;加快基础软件…

JavaWeb(五)

一、JDBC概述 JDBC 就是使用Java语言操作关系型数据库的一套API 全称是Java DataBase Connectivity 表示Java数据库连接。 JDBC的本质是官方&#xff08;sun公司&#xff09;定义的一套操作所有关系型数据库的规则&#xff0c;即接口,各个数据库厂商去实现这套接口&#xff0…

【zotero】搭配onedrive同步设置

1 登陆自己账户 登陆后记得取消文件同步的两个勾勾&#xff0c;不然后期会很占用储存空间的。 设置同步文件夹 一定要精准定位到绿色框框里头的文件夹。

【动手学深度学习】(十一)卷积层

文章目录 一、从全连接到卷积 一、从全连接到卷积 分类猫和狗的图片 使用一个相机采集图片&#xff08;12M像素&#xff09;RGB图片有36M元素使用100大小的单隐层MLP&#xff0c;模型有3.6B元素 远多于世界上所有猫和狗总数&#xff08;900M狗&#xff0c;600M猫&#xff09;…

制作一个RISC-V的操作系统五-RISC-V汇编语言编程一

文章目录 RISC-V汇编语言入门汇编语言概念简介 汇编语言语法介绍&#xff08;GNU版本&#xff09; RISC-V汇编语言入门 汇编语言概念简介 高级&#xff1a;可以理解就是更贴近人的理解 低级&#xff1a;可以理解就是更贴近机器的 难移植&#xff1a;汇编指令基本上和机器指令…

Matlab之统计数据分布并绘制直方图函数histogram

一、功能 直方图是一种将数据分组到条柱中的条形图。该函数可以统计数据在划分区间内的数量分布&#xff0c;同时以直方图的形式展示统计结果。 二、语法 1、histogram&#xff08;X&#xff09; 创建直方图X的图。该函数使用 一种自动分箱算法&#xff0c;返回具有统一宽度…

软件科技成果鉴定测试需提供哪些材料?

为了有效评估科技成果的质量&#xff0c;促进科技理论向实际应用转化&#xff0c;所以需要进行科技成果鉴定测试。申请鉴定的科技成果范围是指列入国家和省、自治区、直辖市以及国务院有关部门科技计划内的应用技术成果&#xff0c;以及少数科技计划外的重大应用技术成果。   …

“山东工行杯”山东省第五届数据应用创新创业大赛颁奖仪式丨2023中国新型智慧城市发展创新峰会“数字经济”分论坛同台举行

「场景赋能 数创齐鲁」 山东省第五届数据应用创新创业大赛 精彩颁奖典礼引领科技潮流 11月24日&#xff0c;“山东工行杯”山东省第五届数据应用创新创业大赛颁奖仪式与2023中国新型智慧城市发展创新峰会相结合并在“数字经济”分论坛同台举行。 本次大赛以“场景赋能&#…

VA03 凭证流 查看备忘

今天被问到了&#xff0c;为什么这个销售订单 只显示了3 EA 仔细看了一下&#xff0c;前面10 是行项目 看销售订单 最后发现&#xff0c;凭证流跟选择查看的行项目有关系 以前一直没有关注这个细节

2023字节跳动软件测试工程师面试题及答案分享

相信大家都有这样一个忧虑就是面试&#xff0c;不管我们要找什么工作&#xff0c;面试都会是必不可少的&#xff0c;下面是整理出来的面试题和我的一些见解觉得不对的在评论区留言&#xff01; 1、什么是兼容性测试&#xff1f;兼容性测试侧重哪些方面&#xff1f; 参考答案&…

【S32K3环境搭建】-0.3-S32DS安装实时驱动RTD(Real-Time Driver)

目录 1 什么是“实时驱动RTD(Real-Time Driver)” 2 安装“实时驱动RTD(Real-Time Driver)” 2.1 方法一&#xff1a;通过S32DS Extensions and Updates安装“实时驱动RTD(Real-Time Driver)” 2.2 方法二&#xff1a;通过Install New Software…安装“实时驱动RTD(Real-Ti…