设数组a[1..n,1..m](n>1,m>1)中的元素以行为主序存放,每个元素占用1个存储单元,则数组元素a[i,j](1≤i≤n,i≤j≤m)相对于数组空间首地址的偏移量为( )。

题目
设数组a[1..n,1..m](n>1,m>1)中的元素以行为主序存放,每个元素占用1个存储单元,则数组元素a[i,j](1≤i≤n,i≤j≤m)相对于数组空间首地址的偏移量为( )。

A.(i-1)*m+j-1
B.(i-1)*n+j-1
C.(j-1)*m+i-1
D.(j-1)*n+i-1
如果没有搜索结果或未解决您的问题,请直接 联系老师 获取答案。
相似问题和答案

第1题:

设二维数组A[1..m,1..n](即m行n列)按行存储在数组B[1..m*n]中,则二维数组元素A[i,j]在一维数组B中的下标为()。

A.(i-1)*n+j

B、(i-1)*n+j-1

C.i*(j-1)

D、j*m+i-1


参考答案:A
解释:特殊值法。取i=j=1,易知A[1,1]的的下标为1,四个选项中仅有A选项能确定的值为1,故选A。

第2题:

●设数组a[1..m,1..n](m>1,n>2)中的元素以行为主序存放,每个元素占用1个存储单元,则最后一个数组元素a[m,n】相对于数组空间首地址的偏移量为( )。

A.(m-l)*n+n-l

B.(m-l)*n

C.m*(n-l)

D.m*n


正确答案:A

第3题:

● 设数组a[0..m,1..n]的每个元素占用1个存储单元,若元素按行存储,则数组元素a[i,j](0≤i≤m,1≤j≤n)相对于数组空间首地址的偏移量为 (32) 。

(32)

A. (i+1)*n+j

B. i*n+j-1

C. i*m+j

D. i*(m+1)+j-1


正确答案:B
试题(32)分析
本题考查数据结构基础知识。
    二维数组元素的存储布局可以按行安排,也可以按列安排。元素a[i.j]相对于数组空间首地址的偏移量计算方法为:先算出存储在该元素之前的行数(或列数),然后算出在该元素所在行(或列)上排在a[i.j]之前的元素个数。根据以上信息算出存储在a[i,j]之前的元素个数,再乘以每个元素占用的存储单元个数即可。题中数组元素按行存储,在a[i,j]之前有i行(行号为0、1、…、i-1)、每行n个元素,在其所在行,a[i,j]之前有j-1个元素,因此偏移量为i*n+j-1。
参考答案
      (32)B

第4题:

●设有二维数组a[1..m,1..n](2<m<n),其第一个元素为a[1,1],最后一个元素为a[m,n],若数组元素以行为主序存放,每个元素占用k个存储单元(k>1),则元素a[2,2]的存储位置相对于数组空间首地址的偏移量为(35)。

A.(n+1)*k

B.n*k+l

C.(m+1)*k

D.m*k+l


正确答案:A

第5题:

● 若二维数组arr[1..M,1..N]的首地址为base,数组元素按列存储且每个元素占用K个存储单元,则元素arr[i,j]在该数组空间的地址为 (21) 。

A.base+((i-1)*M+j-i)*K

B.base+((i-1)*N+j-1)*K

C.base+((j-1)*M+i-1)*K

D.base+((j-1)*N+i-1)*K


正确答案:C

 

第6题:

●若二维数组arr[1..M,1..N】的首地址为base,数组元素按列存储且每个元素占用K个存储单元,则元素arr[i,j]在该数组空间的地址为 (21)。

(21)

A. base+((i-1)*M+j-1)*K

B.base+((i-1)*N+j-1)*K

C.base+((j-1)*M+i-1)*K

D.base+((j-1)*N+i-1)*K


正确答案:C

第7题:

设数组a[1…10,5…15]的元素以行为主序存放,每个元素占用4个存储单元,则数组元素a[i,j(1≤i≤10,5≤j≤15)的地址计算公式为(46)。

A.a-204+2i+j

B.a-204+40i+4j

C.a-84+i+j

D.a-64+44i+4j


正确答案:D
解析:二维数组中的元素可以用两种方式存储:以行为主序(按行存储)或以列为主序(按列存储)。对于一个m行n列的二维数组,当数组元素以行为主序存储时,首先存储第一行的所有元素,第二行的元素存储在第一行的元素之后,第三行的所有元素存储在第二行的元素之后,依次类推,第m行的元素最后存储。每行的元素按列下标次序从低到高依次存储。同理,以列为主序存储时,先存储第一列的元素,然后是第二列的元素,依次类推,最后是第n列的元素。
  对于二维数组a[L1…H1,L2…H2],无论采用哪一种存储方式,都可以采用以下通式计算数组中元素a[i,j]在存储空间中的位置:
  loc(a[i,j])=loc(a[L1,L2])+K*d其中,k表示数组中存储在a[i,j]之前的元素数目;d表示每个数组元素占用的存储单元个数。当数组的元素以列为主序存放时,存储在a[i,j]之前的元素数目k为
  k=(i-L1)*(H2-L2+1)+(j-L2)
  因此对于题目中定义的数组a[l…10,5…15],以行为主序存放时,a[i,j](k≤i≤10, 5≤i≤15)的地址计算公式为
  loc(a[i,j)=loc(a[L1,L2])十((i—1)*11+(j—5))*4=a-64+44i+4j

第8题:

●设数组a[1..n,1.m](n>1,m>1)中的元素以行为主序存放,每个元素占用1个存储单元,则数组元素a[i,j](1≤i≤n,1≤j≤m)相对于数组空间首地址的偏移量为(14)。

(14) A. (i-1)*m+j-1

B. (i-1)*n+j-1

C. (j-1)*m+i-1

D. (j-1)*n+i-1


正确答案:A

第9题:

设数组a[1..n,1..m](n>1,m>1)中的元素以行为主序存放,每个元素占用1个存储单元,则数组元素a[i,j](1<=i<=n,1<=j<=m)相对于数组空间首地址的偏移量为(35)。

A.(i-1)*m+j-1

B.(i-1)*n+j-1

C.(j-1)*m+i-1

D.(j-1)*n+i-1


正确答案:A
二维数组元素的存储布局可以按行安排,也可以按列安排。元素a[i.j]相对于数组空间首地址的偏移量计算方法为:先算出存储在该元素之前的行数(或列数),然后算出在该元素所在行(或列)上排在a[i.j]之前的元素个数。根据以上信息算出存储在a[i,j]之前的元素个数,再乘以每个元素占用的存储单元个数即可。本题中数组元素按行存储,在a[i,j]之前有i-1行(行号为1、…、i-1)、每行m个元素,在其所在行,a[i,j]之前有j-1个元素,因此偏移量为(i-1)*m+j-1。

第10题:

设数组a[0..m,1..n]的每个元素占用1个存储单元,若元素按行存储,则数组元素a[i,j](0≤i≤m,1≤j≤n)相对于数组空间首地址的偏移量为( )。

A.(i+1)*n+j

B.i*n+j-l

C.i*m+j

D.i*(m+1)+j-1


正确答案:B
解析:因为是按行存储,所以是i×n,又因为列是从1开始,所以是j-1。最终答案为i*n+j-l。

更多相关问题