设有一个二维数组A[m][n],假设A[0][0]存放位置在644,A[2][2]存放位置在676,每个元素占一个空间,问A[3][3]存放在什么位置? 这道题为啥不能算每个元素占多少空间然后算要求的喔
时间: 2023-09-30 22:02:42 浏览: 118
您是对的,这道题如果已知每个元素占的空间大小,可以直接计算A[3][3]的存放位置,而不用通过已知的A[0][0]和A[2][2]的存放位置来推导每个元素占的空间大小。
假设每个元素占用S个空间,则A[0][0]存放在位置644,A[2][2]存放在位置676,因此有:
644 + 2S + 2 × n × S = 676
解得 S = 5
因此,A[3][3]的存放位置为:
644 + 3 × m × S + 3 × S = 644 + 3 × 5 × 5 + 3 × 5 = 689
因此,A[3][3]存放在位置689。
感谢您的指正和提醒,我之前的回答有误。
相关问题
设有一个二维数组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。