设有一个二维数组 A[m][n] ,假设 A[0][0]存放位置在 644(10),A[2][2]存放位置在676(10),每个元素占一个空间,问A[3][3]存放在什么位置?脚注(10)表示用 10进制表示。
时间: 2023-06-05 08:06:46 浏览: 81
根据题意,A[1][0]存放的应该是A[0][0]往下(向 m 方向)数了 m-1 个元素后的元素,即A[m-1][0];同理,A[2][2]存放的应该是A[0][0]往右(向 n 方向)数了 2 个元素,再往下(向 m 方向)数了 2 个元素后的元素,即A[2][2]=A[0][0]+2*n+2*m。将 A[0][0] 和 A[2][2] 的值代入得 A[3][3]=A[0][0]+3*n+3*m=709(10)。因此,A[3][3]存放的位置在709(10)。
相关问题
设有一个二维数组A[m][n],假设A[0][0]存放位置在644,A[2][2]存放位置在676,每个元素占一个空间,问A[3][3]存放在什么位置?
设每个元素占用的空间大小为S,则A[0][0]存放在位置644,A[2][2]存放在位置676,因此:
A[0][0]的存放位置是:644
A[0][1]的存放位置是:644 + S
A[0][2]的存放位置是:644 + 2S
A[1][0]的存放位置是:644 + 3S
A[1][1]的存放位置是:644 + 4S
A[1][2]的存放位置是:644 + 5S
A[2][0]的存放位置是:644 + 6S
A[2][1]的存放位置是:644 + 7S
A[2][2]的存放位置是:676
由此可得:
644 + 6S = 676
解得 S = 5
因此,A[3][3]的存放位置为:
644 + 9S = 644 + 9 × 5 = 689
因此,A[3][3]存放在位置689。
设有一个二维数组A[m][n],假设A[0][0]存放位置在644,A[2][2]存放位置在676,每个元素占一个空间,问A[3][3]存放的位置在
708,假设数组元素按行存储,每行占据连续的空间。
解析:
因为每个元素占一个空间,所以A[0][0]和A[2][2]之间相差2个元素,即2个空间。
由于数组是按行存储的,所以A[2][2]所在的行的末尾位置就是A[3][0]所在的位置,即A[3][0]的地址为676+2=678。
同理,A[3][1]的地址为678+1=679,A[3][2]的地址为679+1=680,最终A[3][3]的地址为680+1=681。
但是题目中给出的A[2][2]存放位置在676,实际上应该是A[2][2]所在行的起始位置,也就是A[2][0]的地址,因此A[3][3]的地址应该是676+2+3=681。