首页 > 试题广场 >

假设以行优先顺序存储三维数组A[5][6][7],其中元素A

[单选题]
假设以行优先顺序存储三维数组A[5][6][7],其中元素A[0][0][0]的地址为1100,且每个元素占2个存储单元,则A[4][3][2]的地址是()
  • 1150
  • 1291
  • 1380
  • 1482
把三维坐标想象成立方体。分配的空间A[5][6][7]表示层高为5、行数为6、列数为7
因为数数的基本单位其实是列,二维坐标是行号列号,虽然平时可能习惯行号列号层号,但是按照二维的规律,那么三维坐标应该是层号行号列号

那么A[4][3][2]中4、3、2分别对应这个点的层数、行号、列号
位置为4*(6*7)+3*7+2=191
每个元素两个存储单元,最终结果为191*2+1100=1482
编辑于 2016-10-02 15:09:05 回复(18)
首先弄清楚 A[4][3][2] 所对应的元素个数一共有多少个,
A[0] - A[3] 元素个数为 = 4*6*7*2
A[4][0]-A[4][2] 的元素个数为 = 3*7*2
A[4][3][0] - A[4][3][2] 的元素个数为 = 3*2
一共(4*6*7+3*7+3)*2 = 382

382+1100 = 1482
发表于 2015-11-02 16:03:29 回复(7)
可以将三维数组A[5][6][7]看作5个6行7列的二维数组。
1、A[4][3][2]元素在第5个二维数组,前面4个二维数组存储元素个数为4*(6*7);
2、第5个二维数组中,目标元素位于第4行第3列,其前面存储元素个数为3*7+2;
因此A[4][3][2]前面存储了4*6*7+3*7+2=191个元素,故其地址为1100+191*2=1482。

编辑于 2017-07-13 16:23:55 回复(1)
三维数组a[m1][m2][m3]中若按行优先存储,设a[0][0][0]的起始地址为p,每个元素占n个单元,则a[i][j][k]的起始地址为:
loc(i,j,k)=loc(i,0,0)+(j*m3+k)*n=loc(i-1,0,0)+(m2*m3+j*m3+k)*n=loc(i-2,0,0)+(2*m2*m3+j*m3+k)*n=…=p+(i*m2*m3+j*m3+k)*n
则loc(4,3,2)=1100+(4*6*7+3*7+2)*2=1482
发表于 2015-10-20 21:04:55 回复(0)
三维比如说是x,y,z组成的立体,按行存储就是先存yz面,所以结果就是1100+(4*6*7+3*7+3)*2-2=1482
        
发表于 2015-10-21 19:45:06 回复(0)
行优先:从右往左进位
列优先:从左往右进位
A[5][6][7]分别对应 5、6、7进制,
A[4][3][2]的地址是:【(5-1)*(6*7)+(4-1)*7+(3-1)*1】*2+1100

发表于 2016-01-15 12:08:16 回复(0)
 三维数组相当于书本,最前面表示页,后面两位表示二维的数组

发表于 2016-04-26 12:54:23 回复(1)
1. 可以将三维数组A[i][j][k]看成是一本书,其中i代表页数,j代表行数,k代表列数。
2. 则A[5][6][7]为一本5页的书,每一页上的文字为5行7列。
3. A[4][3][2]表示第4页第3行第2列的文字。(注意:下标是从0开始的)
4. A[0][*][*]~A[3][*][*]所占存储空间=4页*6行*7列*2存储单元=336存储单元
5. A[*][3][2]为第三行第二列,行优先存储,A[*][3][2]则为本页的第【3*7+2=23】个元素
6. 所以A[4][3][2]的地址为1100 + 336 + 23 * 2 = 1472
发表于 2018-02-27 11:38:37 回复(2)
(4*(6*7)+3*7+2)*2 +1100
4*(6*7)是因为有4个6*7的二维数组
3*7+2是对单个的二维数组计算
发表于 2016-11-07 09:32:31 回复(0)
可以在脑袋里思考一个立方体。A[5][6][7]就是一个长6宽7高5的立方体。A[4][3][2]出于立方体的第5层的第四前两个行的第三个元素。前四层是满的,一共有4*6*7=168个元素,第五层前三行是满的再加上第四行的,有3*7+2=23个元素。因此,在A[4][3][2]之前共有168+23=191个元素。因此,地址是,1100+191*2=1482
发表于 2022-02-27 12:12:19 回复(0)
以行优先顺序存储三维数组A[5][6][7],首地址为A,
每个元素占用两个存储单元,那么第A[i][j][k]个元素
的地址为A[i][j][k]=A+[(i)*6*7+(j)*7+(k)]*2
发表于 2018-06-14 15:18:40 回复(0)
这个三维数组的三个维度分别是页、行、列,对于每一页都有行*列这么多元素,这样想这个题就简单了,得到元素个数之后*每个元素占用的存储单元即可
发表于 2016-09-03 18:37:37 回复(1)
D
发表于 2015-10-20 19:05:04 回复(0)
(4×6×7+3×7+2)×2+1100
发表于 2022-05-23 13:19:39 回复(0)
三维行优先 : A[4][3][2]:1100+(4*6*7+3*7+2)*2=1482
编辑于 2022-04-03 17:08:25 回复(0)
二维数组还能想来,三维有点抽象
发表于 2022-03-15 16:41:19 回复(0)
三维数组A[][][]分别代表片行列
发表于 2022-02-22 03:20:38 回复(0)
答案选D。
可以从进制的角度来看这个问题,首先三维数组A[5][6][7],存储顺序是A[0][0][0-6],A[0][1][0-6];类似于进制的进位过程,即A[5][6][7],分别指称5所在为第三位,6所在为第二位,7所在为第一位:第一位是7进制,第二位是6进制,第三位是5进制。然后A[4][3][2],可以计算:
4*6*7+3*7+2=191
由于每个元素占2个存储单元,元素A[0][0][0]的地址为1100,所以1100+191*2=1482,答案选D。当然也可以直接从维度角度来考虑。
发表于 2018-04-16 04:05:02 回复(0)
用大白话讲,A【5】表示A这个数组有五个元素,为A【0】-A【4】。最后一个元素是A【4】。5只表示长度不表示数组的序号。
发表于 2017-02-13 18:31:55 回复(0)
看成一本书,高行列代表页行列
发表于 2023-03-23 10:17:28 回复(0)