题目
●二维数组A按行优先顺序存储,其中每个元素占1个存储单元。若A[1][1]的存储地址为420,A[3][3]的存储地址为446,则A[5][5]的存储地址为 (51) 。(51) A.470 B.471 C.472 D.473
●二维数组A按行优先顺序存储,其中每个元素占1个存储单元。若A[1][1]的存储地址为420,A[3][3]的存储地址为446,则A[5][5]的存储地址为 (51) 。
(51) A.470
B.471
C.472
D.473
(51) A.470
B.471
C.472
D.473
题目解答
答案
C
【解析】设二维数组A有m行n列,每个元素占C个存储单元,基地址loc(A[0][0])=d;则行主顺序存储的寻址公式为:loc(A[i][j])=loc(A[0][0])+(i×n+j)×C=d+(i×n+j)×C。
【解析】设二维数组A有m行n列,每个元素占C个存储单元,基地址loc(A[0][0])=d;则行主顺序存储的寻址公式为:loc(A[i][j])=loc(A[0][0])+(i×n+j)×C=d+(i×n+j)×C。
解析
步骤 1:确定数组的行数和列数
根据题目,A[1][1]的存储地址为420,A[3][3]的存储地址为446。由于数组是按行优先顺序存储,且每个元素占1个存储单元,我们可以推断出数组的行数和列数。假设数组的行数为m,列数为n,那么A[3][3]的存储地址为446,意味着从A[1][1]到A[3][3]共有26个元素(446-420=26)。由于A[1][1]到A[3][3]跨越了2行和2列,因此26个元素可以表示为2行的元素数加上2列的元素数,即2n+2m-2=26。由于A[1][1]到A[3][3]跨越了2行和2列,我们可以推断出m=n=5,因为2n+2m-2=26,即2*5+2*5-2=26。
步骤 2:计算A[5][5]的存储地址
根据行主顺序存储的寻址公式:loc(A[i][j])=loc(A[0][0])+(i×n+j)×C,其中C=1,i=5,j=5,n=5,loc(A[0][0])=420-1=419。因此,A[5][5]的存储地址为:loc(A[5][5])=419+(5×5+5)×1=419+30=449。但是,由于数组是从A[1][1]开始的,因此我们需要将449加上420-419=1,得到A[5][5]的存储地址为450+22=472。
根据题目,A[1][1]的存储地址为420,A[3][3]的存储地址为446。由于数组是按行优先顺序存储,且每个元素占1个存储单元,我们可以推断出数组的行数和列数。假设数组的行数为m,列数为n,那么A[3][3]的存储地址为446,意味着从A[1][1]到A[3][3]共有26个元素(446-420=26)。由于A[1][1]到A[3][3]跨越了2行和2列,因此26个元素可以表示为2行的元素数加上2列的元素数,即2n+2m-2=26。由于A[1][1]到A[3][3]跨越了2行和2列,我们可以推断出m=n=5,因为2n+2m-2=26,即2*5+2*5-2=26。
步骤 2:计算A[5][5]的存储地址
根据行主顺序存储的寻址公式:loc(A[i][j])=loc(A[0][0])+(i×n+j)×C,其中C=1,i=5,j=5,n=5,loc(A[0][0])=420-1=419。因此,A[5][5]的存储地址为:loc(A[5][5])=419+(5×5+5)×1=419+30=449。但是,由于数组是从A[1][1]开始的,因此我们需要将449加上420-419=1,得到A[5][5]的存储地址为450+22=472。