数组专项总结

第五单元 数组

第一课 一维数组的定义

在正常的情况下,输入50名同学的身高用以下代码:

cin>>h0>>h1>>……>>h49;//程序中是不能用省略号来表示的

但是这种程序代码非常麻烦,因此,c++提供了“数组”类型。
数组就是一组相同类型的变量,它们往往都是为了表示同一批对象的统一属性。数组可以是一维的,也可以是二维或多维的。在c++中,使用一维数组是,一般从0开始编号,h[i]就表示第i+1个同学的身高,i称为“下标变量”。当输入50个同学的身高时就可以用以下代码:

for(i=0;i<=49;i++) cin >>h[i];

1.一维数组的定义
定义一维数组的格式如下:

类型标识符  数组名[常量表达式];

其中,类型标识符可以是任何基本数据类型,也可以是结构体等构造类型,相同类型的数组可以一起定义。数组名必须是合法的标识符。常量表达式的值即为数组元素的个数。

2.一维数组的元素引用
数组定义好后,就可以“引用”数组中的任意一个元素。引用格式维“数组名[下标]”.其中,下标只能为整型常量或整型表达式,值必须在数组定义的下标范围内,否则会出现“下标越界错误”。
需要注意的是,不能一次引用整个数组,只能逐个引用数组的单个元素。
3.一维数组的存储结构

第二课 一维数组的输入与输出

批量数据一次性输入到一维数组中的方法
(1)键盘读入
例如:

int h[100];
for(i=0;i<100;i++) cion >>h[i];

(2)直接赋值
例如:

int h[100],a[20];
for(i=0;i<100;i++)  h[i]=0;
for(i=0;i<20;i++)  a[i]=i*2+1;

在c++中还提供了两个函数给数组“整体”赋值,分别为 memset函数和fill函数

第三课 一维数组的插入删除

插入一个元素,需要先找到插入的位置,将这个元素及其之后的元素依次往后移动一位,再将给定的元素插入。
删除一个元素,需要先找到删除的位置,将这个元素及其之后的元素依次往前移动一位,再将给定的元素删除。

第四课 一维数组的查找统计

一维数组的查找操作,就是在一维数组中查找有没有某个元素,它的值等于指定的值x。常见的查找算法有“顺序”查找和“二分”查找。

第五课 一维数组的元素排序

“排序”就是按照某个关键字的大小,将若干对象从小到大或者从大到小进行重新排列。关键字是对象的某一个属性,它可以使任何基本数据类型,甚至结构体等。
排序算法非常多,最基本的有三种,分别是选择排序、冒泡排序和插入排序。

第六课 一维数组的应用举例

第七课 二维数组的定义和操作

1.二维数组的定义和初始化
定义二维数组的一般格式为:

类型标识符  数组名[常量表达式1][常量表达式2];

常量表达式1的值表示第一维大小,常量表达式2的值表示第二维的大小,常量表达式1和常量表达式2的昌吉就是二维数组的元素个数,例如:

int h[4][5];

2.二维数组的存储及元素引用
因为二维数组本质上是一维数组的每一个元素又是一个一维数组,而计算机内部存储一维数组采用的是连续存储单元,所以,二维数组的存储方式是“行优先”的连续存储,先逐个存储第0行上的所有元素,再逐个存储第1行上的所有元素,依此类推。
引用二维数组的某一个元素,格式为:

数组名 [下标1][下标2]

3.二维数组的输入输出
二维数组的输入输出操作也是针对每一个元素进行,结合两个维度的下标变化,用循环嵌套实现。

第八课 二维数组应用举例

第九课 数字方阵

数字方阵就是一个行列数相等的二维数组,其中的每个元素都是数字。解决数字方阵问题,一般有两种方法:解析法和模拟法。

第十课 字符数组

如果数组中的每个元素都是一个字符,这样的数组成为“字符数组”。有时,把一维字符数组又称为“字符串”。定义字符数组的方法与定义其他类型数组的方法类似。

心得体会

首先,值得思考的是为什么需要数组呢,当我们定义一个变量时可以使用一个变量名来表示,但是如果出现很多个变量分别取变量名就比较麻烦了。
为了解决这个问题,我们就采用了数组的形式来进行储存,用数组的下标来表示每个变量。数组的优点是效率高,但为此,所付出的代价就是数组对象的大小被固定。这也使得在工作中,数组并不实用。随着学习深入,程序的长度日益增长。从最初的十几行,到现在三四十行。所以在写程序时,一定要专注,遇到错误了,先要自己反复研读,分析代码有没有问题。有时怎样也找不出错误,看的头疼,是因为没有跳出之前的代码,一直在原来的代码中,读来读去也感觉没有问题。这时要及时跳出自己的代码,回去再看看题,而看题的时候,要当成新题来读,以免陷入原来的代码中。另外,检查程序的时候,如果有数据,要首先检查数组的编号是否一致、语法是否有错误。但是再怎样细致的检查都不如最初写代码时的仔细来的重要,所以不论写什么样的代码,都应该仔仔细细,不在细节上犯马虎。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值