java二维数组遍历后转为一维数组_C语言入门 第十一章 数组

1.数组

在c语言中,数组可以认为是相同类型数据的集合

举个例子,当我们需要计算多个数据,比如说需要计算一个班级的数学成绩的平均分

#include

65d3a9fd26c8df4c88c54b3d9c5b93a0.png

在这里定义了5个变量,代表5个学生的数学成绩,然后依次的给变量赋值,但是如果学生的成绩非常多,需要的变量名也会很多,这个时候就需要考虑一下使用更科学的方法来储存数据

#include

922fddb97f928a47d4dd8f8885f259bf.png

int a[5],这句话定义了一个数组,表示在内存中分配了一个可以保存5个整数的空间

1.1 数组的定义

数组声明的语法:

<数据类型> <数组名>[数组长度]

比如:

int a[3];
float b[5];
char c[12];

声明数组之后就相当于在内存当中开辟了一个连续的空间,空间的大小取决于数组的长度与数组的元素个数(数组的长度)

数组空间的大小 = 数组类型 ✖ 数组长度

在使用数组的时候可以利用数组名[索引]的方式使用数组的元素

#include

bf8639cc186c5eb1105f531a9443b4bb.png

在使用数组的时候需要注意,声明数组的时候中括号当中的数字代表数组的元素个数,使用数组元素的时候,中括号当中的数字代表数组元素的索引(或者称为下标)

索引的取值范围是从0开始,数组索引的最大值是数组的长度-1

987c586bbfd972f9b7e91cb72de02033.png

在使用数组的时候一定要注意数组索引不要越界,也就是不要使用大于等于数组长度的索引

1.2 数组的初始化

声明数组之后可以给数组的元素赋值

#include

b62142c8acb2fb0456359bdb68e8ce15.png

也可以在声明的同时初始化数组

#include

在这里使用 {元素1,元素2,....} 的方式来初始化数组

c617c894b36bf7b878be98bfb34e716c.png

结果是相同的

如果在声明数组的时候对元素进行初始化,可以省略掉数组的长度,数组会自动按照初始化的长度来处理

#include

efd9b794f9a60b7172634417d0ec0aec.png

如果数组的长度小于初始化元素的个数,那么多余的元素就会被舍去

#include

eec89145fc1fa9426f84dd4cf1d8f652.png

这里数组只包含2个元素,第三个元素a[2]是一个错误的值,初始化数组只有前两个值被赋值到了数组里

如果数组元素的个数大于初始化的数组,那么数组多余的值会被赋值为 0

#include

bc9747e712f9942500dd92e883f18d4a.png

如果想把数组的元素全部初始化为0,我们就可以这样写

#include

4b1c8511959575cb7c9ba93246dedfa6.png

需要注意的是,初始化数组一定要在数组声明的时候来完成,如果是初始化一个已经声明过的数组,程序就会出错

#include

5dec393af1a336a8af1b4d72c808001f.png

2 使用循环来处理数组

使用数组带来的最大的好处就是我们可以通过利用循环工具,来批量的处理数组当中的数据

具体的做法就是把数组元素的索引当作循环的控制变量,通过索引自增,来遍历数组当中的元素

#include

77ab6d7d97ab9caa86983d18f454b023.png

第一次循环i=0,打印的是a[0]的值,第二次循环i=1,打印的是a[1]的值,...,循环次数等于数组的元素个数

在c99之后,还支持通过变量来动态的初始化数组

例如我们可以设计一个程序,手动输入学生的成绩,计算学生成绩的平均分

#include

76ef30591db2b801565e06aa87ede96c.png

数组的操作往往回合循环联系到一起,通过循环来遍历数组的元素,是在编写程序的时候经常会用到的手段

3 二维数组

有的时候处理的数据并不是线性的,而是有维度的,比如说可能会处理矩阵

如果使用1维数组的话处理数据的位置就会有一些难度,因此我们可以使用二维数组

二维数据可以想象为一个表格,有行和列

e7cbc7f25e00c550a4e78978a44c3878.png

我们建立数组

int a[3][3];

数组的第一个索引表示行号,第二个索引表示列号

2ec6c72449163748647eaab1555db017.png

那么 a[0][0]就是第一行第一列的元素为1,a[2][1]就是第三行第二列的元素为8

3.1 二维数组的初始化

声明二维数组

<数据类型> <数组名>[第一维长度][第二维长度]

比如说

int a[2][3];

a[2][3]就是一个2行3列的二维数组,使用的时候每个维度的索引都是由0开始,最大值为长度-1,所以 数组a的保存元素从 a[0][0]到a[1][2]

f2b19351778ecd868dde45052af3432d.png

我们也可以把二维数组想象为一个由一维数组组成的数组

7a7dcad99b66160deb910b93304d2e04.png

数组a由两个数组组成,a[0],a[1] 而a[0],a[1]又分别由三个整形数据组成

所以我们可以使用大括号的方式来给数组初始化

#include

505b4dd39b99d7f0c8ac9e20e012210e.png

数组的总大小除以整数的大小,就是数组包含的元素个数

二维数组的大小除以其中包含的一维数组的大小,就是二维数组中包含的一维数组的个数,即数组的行数

每个一维数组的大小除以整型数据的大小,就是一维数组的长度,即数组的列数

在初始化二维数组的时候可以省略一维数组的大括号,会自动按顺序分配每个元素的位置

#include

cbd1f777a57b92ca0205e78b219cc8a4.png

结果是一样的

如果数据的个数是明确的,那么在声明数组的时候只要指明每个一维数组的长度,可以省略二维数组的长度,即只需要指明列数可以省略行数

#include

89e76abe46a0987637f8a642c018001a.png

会自动计算行数

如果数据不够填满数组,那么剩余的部分依然会补0

#include

6b948a9c9f36da4279cbea23b6855787.png

如果要初始化所有元素都为0,就可以这样写

#include

a4543062084e0b28465cfbcc2d79bb0f.png

3.2 使用循环遍历二维数组

操作二维数组就需要使用嵌套的循环,外层循环的控制变量就是数组的第一维索引,内层循环的控制变量就是数组的第二维索引

如果我们要输出数组的所有元素

#include

1deb0faae3304b99fc695abd00730276.png

同样的也存在三维以上的数组,操作方式都是一样的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值