题目
●二维数组A按行优先顺序存储,其中每个元素占1个存储单元。若A[1][1]的存储地址为420,A[3][3]的存储地址为446,则A[5][5]的存储地址为 (51) 。A. 470B. 471C. 472D. 473
●二维数组A按行优先顺序存储,其中每个元素占1个存储单元。若A[1][1]的存储地址为420,A[3][3]的存储地址为446,则A[5][5]的存储地址为 (51) 。
A. 470
B. 471
C. 472
D. 473
题目解答
答案
C. 472
解析
步骤 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。