暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

【软件评测师】考点53——数组的基础知识

昊洋与你一起成长 2021-09-30
1550

数组的基础知识是软件评测师考试的重要考点,经常出现在上午场的客观选择题当中数组是定长线性表在维数上的扩展,即线性表中的元素又是一个线性表,在考试中最常考察的就是二维数组。下面就该知识点并结合例题进行总结学习。


一、数组的定义

一维数组是长度固定的线性表,数组中的每个数据元素类型相同,结构一致。n维数组是定长线性表在维数上的扩张,即线性表中的元素又是一个线性表。以二维数组A[m][n]为例,可以把它看成是一个定长的线性表,它的每个元素也是一个定长线性表,如下图所示:


二维数组A[m][n]表示有m行n列,每行n个元素,每列有m个元素。在考试的时候一定要注意m和n的顺序,如果是A[n][m]则表示有m行列,每行m个元素,每列有n个元素。

A可看成一个行向量形式的线性表或列向量形式的线性表,如下所示:

(1)行向量形式的线性表:


(2)列向量形式的线性表:



二、数组的特点

(1)数据元素数目固定,一旦定义了一个数组结构,就不再有元素个数的增减变化;

(2)数据元素具有相同的类型;

(3)数据元素的下标关系具有上下界的约束且下标有序。


三、数组的存储结构

一旦定义了数组,则结构中的数据元素个数和元素之间的关系就不再发生变动,因此数组适合于采用顺序存储结构。对于数组,一旦确定了其维数和各维的长度,便可为它分配存储空间。反之,只要给出一组下标便可求得相应数组元素的存储位置二维数组的存储结构可分为以行为主序和以列为主序的两种方法,如图所示,左图以行为主序进行存储,也就是先存储第一行,然后存储第二行,以此类推。右图以列为主序进行存储,先存储第一列,然后继续存储第二列,以此类推。


二维数组A[m][n]中,设每个数据元素占用L个单元,m、n为数组的行数和列数,Loc()表示首元素的地址。数组元素的存储地址=数组空间首地址+偏移量。

(1)以行为主序优先存储的地址计算公式为:


(2)以列为主序优先存储的地址计算公式为:


四、总结

在考试的时候需要注意以下几点:

(1)看清楚m和n的先后顺序;

(2)看题干说明,到底是以行为为主序,还是以列为主序?

(3)看清楚行和列到底是从0开始,还是从1开始作为第一个下标。



下面是近几年对该知识点考察过的真题,以后仍是考试出题的重点,大家要重视起来。

【2016年第14题】设数组a[0 ... n-1,0 ...m-1](n>1,m>1)中的元素以行为主序存放,每个元素占用4个存储单元,则数组元素a[i,j](0≤i<n, 0≤j<m)的存储位置相对于数组空间首地址的偏移量为( )。

A、(j*m+i)*4    

B、(i*m+j)*4   

C、(j*n+i)*4   

D、(i*n+j)*4

解析:本题考查数组的基础知识。

数组元素的存储地址=数组空间首地址+偏移量,其中偏移量的计算方式为排列在所访问元素之前的元素个数乘以每个元素占用的存储单元数。对于元素a[i,j],在按行存储(以行为主序存放)方式下,从第0行和0列开始算起,每一行有m个元素,每一列有n个元素,每个元素占用4个存储单元,在a[i,j]前面已经有i行元素,然后在本行中,前面有j个元素,所以a[i,j]相对于数组空间首地址的偏移量为(i*m+j)*4。

故正确答案为:B


【2018年第21题】设数组a[1..10,1..8]中的元素按行存放,每个元素占用4个存储单元,已知第一个数组元素a[1,1]的地址为1004,那么a[5,6]的地址为( )。

A、1004+(5*8+6)*4        

B、1004+(4*8+5)*4

C、1004+(5*10+6)*4      

D、1004+(4*10+5)*4


解析:本题考查数组的基础知识。

数组元素的存储地址=数组空间首地址+偏移量,其中偏移量的计算方式为排列在所访问元素之前的元素个数乘以每个元素占用的存储单元数。由题目可知,本题数组下标从1开始,a[5,6],按行存储,其前(5-1)=4行已经存满,每行8个元素,每列10个元素,所在行前(6-1)=5个元素位已经存满,所以a[5,6],偏移的元素个数为:4*8+5。每个元素占用4个存储单元,已知第一个数组元素a[1,1]的地址为1004,那么a[5,6]的地址为1004+(4*8+5)*4。

故正确答案为:B


作者唯一官方个人微信公众号(昊洋与你一起成长):HYJY20180101

写于2021年9月30日

作者:昊洋讲师

版权所有,侵权必究


文章转载自昊洋与你一起成长,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论