单选题
39.对于二维数组a[1..4,3..6],设每个元素占两个存储单元,若分别以行和列为主序存储,则元素a[3,4]相对于数组空间起始地址的偏移量分别是{{U}} (1) {{/U}}和{{U}} (2) {{/U}}。
单选题 (1)
【正确答案】 D
【答案解析】
单选题 (2)
【正确答案】 A
【答案解析】
[解析] 每一个二维数组都可以被看作是一个矩阵。本题的二维数组a[1..4,3..6]的矩阵如下:

以行为主序存储,即以a[1,3]、a[1,4]、a[1,5]、a[1,6]、a[2,3]……这样的顺序连续存储,不难看出,a[3,4]是第10个元素。第1个元素的地址就是数组空间的起始地址,所以其偏移量为0,那么a[3,4]的偏移量难道为9?千万不要忘记题目的要求“每个元素占两个存储单元”,所以a[3,4]的偏移量是9*2=18。故第1空应该选择D。
以列为主序存储,即以a[1,3]、a[2,3]、a[3,3]、a[4,3],a[1,4]……这样的顺序连续存储,所以a[3,4]是第7个元素。那么a[3,4]的偏移量就是6*2=12。故第2空应该选择A。
单选题 (1)
【正确答案】 C
【答案解析】
单选题 (2)
【正确答案】 B
【答案解析】
单选题 (3)
【正确答案】 A
【答案解析】
单选题 (4)
【正确答案】 C
【答案解析】
[解析] 行下标为0~8,说明有8-0+1=9行;列下标2~5,说明有5-2+1=4列。所以共有9×4=36个元素。因为每个元素占6个字节,所以,该数组共占6×36=216个字节。所以,第1空的正确答案为选项C。
每个元素占6个字节,每行有4个元素,则每行占6×4=24个字节。每列有9个元素,所以,每列占6×9=54个字节。对于第6行和第4列的元素,因为有W64既属于第6行,又属于第4列,所以,不应当重复计算。因此,第6行和第4列的元素应当占24+54-6=72个字节。第2空的标准答案为选项B。
第一个元素的起始地址为100,前面已经计算过,该数组所有元素共占用216个字节。那么,最后一个元素的起始地址就是100+216-6=310。最后一个元素要占用6个字节,所以要在计算中减去6。第3个空的正确答案为选项A。
如果按行存放数组,那么,存放顺序为,首先是第0行的4个元素,然后是第1行的4个元素,以此类推。W34即第3行第4列,前面已有存储了3行又两个元素,也就是3×4+2=14个元素。所以,W34的起始地址为100+6×14=184。第4个空的正确答案为选项C。