第五单元 数组
数组是有序数据的集合,可以减少体同种类型变量的声明。一个数组有一个统一的数组名,可以通过数组名和下标来唯一确定数组中的元素。
一.重点内容、知识点总结
㈠一维数组的定义
1.一维数组的定义
定义一维数组的格式:
类型标识符 数组名[常量表达式];
其中类型标识符可以是任何基本数据类型,也可以是结构体等构造类型,相同类型的数组可以一起定义。
2.一维数组的引用
一维数组引用的一般形式:
数组名[下标]
eg:int a[10] //声明数组
3.一维数组的存储结构
㈡一维数组的输入与输出
1.输入
⑴键盘读入
⑵直接赋值
⑶两个给数组“整体”赋值的函数
①memset函数
此函数是给数组“按字节”进行赋值,一般用在char型数组中,如果是int类型的数组,一般赋值为0和-1。使用前需要包含头文件:#include
②fill函数
此函数是给数组“按元素”进行赋值,可以是整个数组,也可以是部分连续元素,可以赋任何值。使用前需要包含头文件:#iostream。
⑷给所有或部分元素赋值
㈢一维数组的插入删除
⑴插入:插入一个元素,需要先找到插入的位置(假设下标为x),将这个元素及其之后的所有元素依次往后移一位(注意从后往前进行操作),再将给定的元素插入(覆盖)到位置x。
⑵删除:删除一个元素,需要先找到插入的位置(假设下标为x),将下标为x+1及其之后的所有元素依次向前移一位,覆盖原来位置上的元素。
㈣一维数组的查找统计
1.顺序查找:按从前往后的顺序,将数组中的元素依次与要查找的数x进行比较。
2.二分查找(折半查找):常用于元素有序的数组。如递增或递减数组。
㈤一维数组的元素排序
1.选择排序
2.冒泡排序
3.插入排序
4.桶排序:
㈥二维数组
1.二维数组的声明
二维数组声明的一般格式:
数据类型 数据名[常量表达式1][常量表达式2]
一个一维数组描述的是一个线性序列,二维数组描述的是一个矩阵。常量表达式1代表行的数量,常量表达式2代表列的数量。
2.二维数组元素的引用
二维数组元素的引用形式:
数组名[下标][下标]
3.二维数组的初始化
二维数组元素初始化的方式和一维数组相同,也分为单个元素逐一赋值和使用聚合方式赋值。
二维数组中元素排列的顺序是按行存放。
㈦数字方阵
数字方阵就是一个行列数相等的二维数组,其中每个元素都是数字。
解决数字方阵问题的方法:
解析法
模拟法
㈧字符数组
用来存放字符数据的数组是字符数组,字符数组中的一个元素存放一个字符。字符数组具有数组的共同属性。
⑴声明一个字符数组:
char pWord[11];
⑵字符数组赋值方式
①数组元素逐一赋值
②聚合方式赋值
⑶字符数组的一些说明
①聚合方式赋值只能在数组声明的时候使用。
②字符数组不能给字符数组赋值。
⑷字符串和字符数组结束符
字符数组常作字符串使用,作为字符串要有字符串结束符’\0’。
二.易错点
1.使用一维数组的说明如下:
⑴数组名的定义规则和变量名相同。
⑵数组名后面的括号是方括号,方括号内是常量表达式。
⑶常量表达式表示元素的个数,即数组的长度。
⑷定义数组的常量表达式不能是变量,因为数组的大小不能动态定义。
eg: int a[i] //不合法
2.一维数组引用的说明:
⑴数组元素的下标起始值为0而不是1。
⑵下标只能是整型常量或整型表达式,值必须在数组定义的下标范围内。
a[10]是不存在的数组元素,引用a[10]非法。(下标越界,易造成程序瘫痪)
3.插入操作需要注意把数组下标定义的足够大。
4.使用二维数组的说明:
⑴数组名的定名规则和变量名相同。
⑵二维数组有两个下标,所以要有两个中括号。
eg:int a[3,4] //不合法
⑶下标运算符中的整数型表达式代表数组每一个一维的长度,它们必须是整数,其乘积确定了整个数组的长度。
eg:int a[3][4]
⑷定义数组的常量表达式不能是变量,因为数组的大小不能动态定义。
5.常见例题:素数大酬宾、商品排序、扫雷游戏、最大整数、蛇形方阵、n阶奇数幻方……
三.自身体会
数组这一单元我们学习的内容比较多,知识点较细,难度也不小。同过这一单元的学习,我了解到数组是规则化依次排列的同类量的集合,对于数组操作也就是对于一群同类型数据操作,需要结合循环进行规则化数组元素操作。数组是把相同格式类型的数据元素组合到一起的工具。而有了数组这个工具,我们的代码和编程工作变得极为方便,不用一个一个定义数据了。