1.已知数组A[..8.0..9]中的每个元素占4个字节的存储单元,设内存按字节编址,则存放数组A至少需要多少个字节? A的第8列和第5行共占多少个字节的空间?若A按行优先方式存储,第个元素的存储地址为Loc(A[0][0])= 1000 ,那么元素A[7][4]的起始地址为多少?行优先存储的元素A[7][4]与当A按列优先方式存储时的哪个元素的起始地址一致?
存放数组A至少需要(8+1)* (9+1)* 4=360字节
A的第8列和第5行共占 4 乘(8+1+9+1)=76个字节
数组从0开始,A[7][4]
loc=1000+4 * (7 * 10+4)=1280
行优先存储的元素A[7][4]与当A按列优先方式存储时的哪个元素起始地址一致
1000+4 * ( x * 9+y)=1280
x=8 y=2
与当A按列优先方式存储时的A[8][2]起始地址一致
A数组是二维矩阵吗?行数和列数是多少?
假设行数是m,列数是n
(1)数组A至少需要多少个字节
最少字节数=4*m*n
(2)A的第8列和第5行共占多少个字节的空间
第8列所占空间= 4 * m
第5行所占空间= 4*n
共占字节数=4*m + 4*n - 4 ,减去4是因为第第8列和第5行有一个共同元素A[4][7],这个元素既在第8列,也在第5行
(3)A[7][4]的起始地址
Loc(A[0][0])= 1000 + (7*n + 4)*4
(4)与列存储的哪个元素一致,假设与A[i][j]一致,那么满足如下条件:
i = (7*n + 4) %m
j = 7*n + 4 - i*m
A[...8.0...9]这么看好像是9*10的二维数组,也就是m=9,n=10,带入上面的公式可以计算出:
(1)数组A至少需要多少个字节
最少字节数=4*m*n = 4*9*10= 360
(2)A的第8列和第5行共占多少个字节的空间
第8列所占空间= 4 * m = 4*9 = 36
第5行所占空间= 4*n = 4*10 = 40
共占字节数=4*m + 4*n - 4=36+40-4=76-4=72 减去4是因为第第8列和第5行有一个共同元素
(3)A[7][4]的起始地址
Loc(A[0][0])= 1000 + (7*n + 4)*4 = 1000 + (7*10+4)*4 = 1296
(4)与列存储的哪个元素一致,假设与A[i][j]一致,那么满足如下条件:
i = (7*n + 4) %m = (7*10+4)%9 = 74%9 = 8
j = 7*n + 4 - i*m = 7*10+4-8*9 = 74-72=2
也就是与A[8][2]一致
A[..8.0..9] 是A[8][9]吗?
A[..8.0..9]