考研帮 > 数学 > 每日一练

2.3 数组的概念和实现

2.3 数组的概念和实现

  考试大纲涉及本节的知识点有:特殊矩阵和稀疏矩阵。

一、选择题

  1.选择题题目部分
   ● 设数组a[1...10,5...15]的元素以行为主序存放,每个元素占用4个存储单元,则数组元素a[i,j](1≤i≤10,5≤j≤15)的地址计算公式为 (1)
   (1)A.a-204+2i+j B.a-204+40i+4j C.a-84+i+j D.a-64+44i+4j
   ● 已知有一维数组T[0…mn-1],其中m>n。从数组T的第一个元素(T[0])开始,每隔n个元素取出一个元素依次存入数组B[1…m]中,即B[1]=T[0],B[2]=T[n],依此类推,那么放入B[k](1≤k≤m)的元素是 (2)
   (2)A.T[(k-1)×n] B.T[kn] C.T[(k-1)×m] D.T[k×m]
   ● 将一个三对角矩阵A[l…100,1…100]中的元素按行存储在一维数组B[1…298]中,矩阵A中的元素A[66,65]在数组B中的下标为 (3)
   (3)A.195 B.196 C.197 D.198
   ● 二维数组A的每个元素是由6个字符组成的串,其行下标i=0,1,…,8,列下标j=1,2,…,10。若A按行先存储,元素A[8,5]的起始地址与当A按列先存储时的元素 (4) 的起始地址相同。设每个字符占一个字节。
   (4)A.A[8,5] B.A[3,10] C.A[5,8] D.A[0,9]
   ● 压缩存储特殊矩阵时,使用数组存储矩阵的下三角元素,已知矩阵A为6×6矩阵,则矩阵元素A[4,3]存储在数组中的下标为 (5) ,已知数组下标从0开始计数。
   (5)A.8 B.9 C.20 D.21
   2.选择题练习答案与分析
   题号 (1)答案 D
   习题分析:
   根据数组下标的个数,可以把数组分为一维、二维、……、多维数组。维度是指下标的个数:一维数组只有一个下标;二维数组则有两个下标,第一个称为行下标,第二个称为列下标。根据数组的定义,计算存储地址的公式—览表如表2-9所示。

表2-9 数据的存储地址计算公式一览表

数 组 类 型

存储地址计算

一维数组a[n]
   n为个数
对于a[i]的存储地址:a+i×len
   (a为数组首地址,len为每个数据对象的长度)
二维数组a[m][n]
   m、n为个数
对于a[i][j]的存储地址:a+(i×n+j)×len
   (a为数组首地址,len为每个数据对象的长度)
三维数组a[m][n][o]
   m、n、o为个数
对于a[i][j][k]的存储地址:a+(i×n×o+j×o+k)×len
   (a为数组首地址,len为每个数据对象的长度)

  根据表2-9中的公式,可以得知公式应该是a+(i×n+j)len。len的值很显然应该取4,但这里需要注意的是,i、n、j的值在此都有一些变化。i的取值是1~10,而上述公式是针对0开始的,因此套到公式中应是i-1;j的取值则是5~15,因此同理,套到公式中应该是j-5;而n的值是第二维的值,5~15共11个元素,因此取值11;这样就得到:
  a+((i-1)×11 + (j-5))×4= a+44i+4j-64
  注意:“行优先”存储是指先存储完第一行,然后再存第二行,……,如果是“列优先”存储,则是先存储第一列,再存储第二列,……。
  题号 (2)答案 A
  习题分析:
  这是一道十分简单的题目,我们不难推出B[3]=T[2n],B[4]=T[3n],结合题目给出的条件,我们不难发现有一个这样的趋势:B[k]=T[(k-1)×n]。
  题号 (3)答案 C
  习题分析:
  解答这道题,首先要理解什么是三对角矩阵,如图2-1所示。
  显然,除第1行和最后1行的元素是两个外,其余的都是3个,因此元素个数总数是3n2个。第i行第j列对应的一维数组的下标计算公式为:2×i+j。
  根据这一公式可以得到,其下标为:2×66+65=197。

  

  题号 (4)答案 B
  习题分析:
  对mn的二维数组来说,假设len为每个数据对象的长度,则按行存储时,A[I,J]的地址公式为:A[I,J]=A[0][0]+(i×n+j)×len;按列存储时,A[I,J]的地址公式为:A[I,J]=A[0][0]+(j×m+i)×len。
  此公式中,行下标和列下标的初始值均为0,若初始值发生变化时,公式也应相应地发生变化。如:本题中列下标从1开始,因此,则按行存储时,A[I,J]的地址公式为:A[I,J]=A[0][1]+(i×n+j-1)len;按列存储时,A[I,J]的地址公式为:A[I,J]=A[0][1]+((j-1)×m+i)×len。
  本题中,m=9,n=10。即A[8,5]= A[0][1]+(8×10+5-1)×6。
  若要A[8,5]按行存储的地址等于某一元素按列存储的地址,即:
  A[0][1]+(8×10+4)×6= A[0][1]+((j-1)×9+i)×6
  从以上分析可以,答案B为正确答案。
  题号 (5)答案 A
  习题分析:

  

  3.训练自测表(如表2-10所示)

表2-10 选择题练习自测表

题    号

考  查  点

得    分

(1) 二维数组元素地址的计算  
(2) 一维数组元素的操作  
(3) 三对角矩阵元素位置的计算  
(4) 二维数组元素地址的计算  
(5) 下三角矩阵元素位置的计算  

 

关于"最后阶段,真题的正确打开方式_备考经验_考研帮"15名研友在考研帮APP发表了观点

扫我下载考研帮

考研帮地方站更多

你可能会关心:

来考研帮提升效率

× 关闭