首页 > 试题广场 >

设有 一个二维数组 A [m][n] ,假设 A [0][0

[单选题]

设有 一个二维数组 A [m][n] ,假设 A [0][0] 存放位置在 644(10) A [2][2] 存放位置在 676(10) ,每个元素占一个空间,问 A [3][3](10) 存放在什么位置?脚注 (10) 表示用 10 进制表示。

  • 688
  • 678
  • 692
  • 696
[0][0] [2][2] [3][3]都是对角线的元素0->2的间隔是32,2->3的间隔是一半16,加上76,就是692
编辑于 2018-01-24 20:19:58 回复(2)
676-644=32。(32-2)/2=15。说明有15列元素。 644+15*3+3=692
发表于 2017-08-18 00:32:02 回复(0)
对角线上的存储计算是等差数列,差值都是总行数(按列)加一或者总列数(按行)加一。
发表于 2018-01-11 16:32:34 回复(0)
692 A[2][2]与A[0][0] 相差两排零2个元素 A[3][3]与A[2][2] 相差一排零1个元素 因为元素的地址是连续的,并且对角线元素地址是等差数列 所以A[2][2]与A[0][0] 的地址差是A[3][3]与A[2][2]地址差的2倍 A[2][2]与A[0][0] 的地址差是676-644 A[3][3]与A[2][2]地址差是(676-644)/2 所以A[3][3]的地址是676+(676-644)/2
发表于 2019-01-12 16:32:26 回复(0)
随意按行计算或按列计算,答案都一样。这里按列计算。(2-0)*n+(2-0)=676-644=32,解n=15,然后计算(3-0)*n+(3-0)=48。(因为数组都是从0开始)
发表于 2017-09-29 16:35:10 回复(0)
676-646=20。。。我特么。。。
发表于 2019-09-16 12:20:14 回复(0)
由前面得出两行加上两个是32,那2,2 和3,3相距离1行加1个,对应16。所以最后应该是在2,2对应位置加上16也就是692
发表于 2019-08-22 00:13:01 回复(0)
A[0][0]到A[2][2] 假设数组元素类型所占byte为B字节 则 (2n+2)B=32  现在求A[3][3] 即 (3n+3)B 联立两式即可得
(n+1)B=16  可以推测数组元素类型所占字节为1字节 即该数组为byte类型数组
A[3][3]=A[0][0]+16*3=692  

对角线[0][0] [2][2] [3][3]  也可以推出
发表于 2018-10-25 10:29:33 回复(0)
不明白怎么算出m n 以及size大小的。我的思路如下: a00位置已知, &a00+(2n+2)*size =&a22 (n+1)*size=16 &a33=&a00+(3n+3)*size
发表于 2017-08-21 11:59:58 回复(0)
算出A[2][0]的位置,然后推算每一行占多少元素之后,就可以得到A[3][0],再加3就可以了。
发表于 2017-06-14 09:33:07 回复(0)