首页
题库
面试
求职
学习
竞赛
More+
所有博客
搜索面经/职位/试题/公司
搜索
我要招人
去企业版
登录 / 注册
首页
>
试题广场
>
假设以行优先顺序存储三维数组A[5][6][7],其中元素A
[单选题]
假设以行优先顺序存储三维数组A[5][6][7],其中元素A[0][0][0]的地址为1100,且每个元素占2个存储单元,则A[4][3][2]的地址是()
1150
1291
1380
1482
查看正确选项
添加笔记
求解答(39)
邀请回答
收藏(1915)
分享
37个回答
添加回答
115
周星星_
参考
沐浴星光的潇洒少年
把三维坐标想象成立方体。分配的空间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)
58
暗月下捉迷藏
可以将三维数组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)
56
Aimer
首先弄清楚 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)
38
wtff
三维数组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)
17
沐浴星光的潇洒少年
三维比如说是x,y,z组成的立体,按行存储就是先存yz面,所以结果就是1100+(4*6*7+3*7+3)*2-2=1482
发表于 2015-10-21 19:45:06
回复(0)
15
老金龟
行优先:从右往左进位
列优先:从左往右进位
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)
12
huixieqingchun
三维数组相当于书本,最前面表示页,后面两位表示二维的数组
发表于 2016-04-26 12:54:23
回复(1)
10
LiuShiYi
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)
6
SunshineCC
(4*(6*7)+3*7+2)*2 +1100
4*(6*7)是因为有4个6*7的二维数组
3*7+2是对单个的二维数组计算
发表于 2016-11-07 09:32:31
回复(0)
5
zjlamtt
可以在脑袋里思考一个立方体。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)
3
爱如少年L
以行优先顺序存储三维数组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)
3
foreverfruit
这个三维数组的三个维度分别是页、行、列,对于每一页都有行*列这么多元素,这样想这个题就简单了,得到元素个数之后*每个元素占用的存储单元即可
发表于 2016-09-03 18:37:37
回复(1)
3
牛客477144号
D
发表于 2015-10-20 19:05:04
回复(0)
2
beSupine
(4×6×7+3×7+2)×2+1100
发表于 2022-05-23 13:19:39
回复(0)
2
牛客768117412号
三维行优先 : A[4][3][2]:1100+(4*6*7+3*7+2)*2=1482
编辑于 2022-04-03 17:08:25
回复(0)
2
还没想好名字那
二维数组还能想来,三维有点抽象
发表于 2022-03-15 16:41:19
回复(0)
2
已注销
三维数组A[][][]分别代表片行列
发表于 2022-02-22 03:20:38
回复(0)
2
Livius
答案选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)
2
爱吃青菜皮卷面的byr
用大白话讲,A【5】表示A这个数组有五个元素,为A【0】-A【4】。最后一个元素是A【4】。5只表示长度不表示数组的序号。
发表于 2017-02-13 18:31:55
回复(0)
1
机会留着有准备的人
看成一本书,高行列代表页行列
发表于 2023-03-23 10:17:28
回复(0)
这道题你会答吗?花几分钟告诉大家答案吧!
提交观点
问题信息
C++工程师
数组
2016
Java工程师
58集团
来自:
58同城2016研发工...
难度:
37条回答
1915收藏
25058浏览
热门推荐
相关试题
软件测试是软件开发过程中的一个重要...
京东
2016
测试工程师
软件测试
评论
(5)
下列叙述中,哪些是集成测试的入口准则()
京东
软件测试
2016
测试工程师
评论
(6)
下列有关Beta测试的叙述中,正确...
京东
软件测试
2016
测试工程师
评论
(7)
有多少种不同的关灯方法?
58集团
组合数学
Java工程师
C++工程师
2016
评论
(31)
来自
58同城2016研发工程...
四分位数是多少?
模拟
评论
(7)
来自
58同城2016研发工程...
扫描二维码,关注牛客网
意见反馈
下载牛客APP,随时随地刷题