首页 > 试题广场 >

数组A[8][10] 中(下标均从0开始), 每个元素的长度

[单选题]
数组A[8][10] 中(下标均从0开始), 每个元素的长度为3个字节,按列存储时,元素A[4][7]的起始地址为(SA为数组存储时的首地址)()
  • SA+141
  • SA+222
  • SA+180
  • SA+225
推荐
本题选C。
数组总共8行10列,要找的元素在第5行第8列,数组按列存储。
因此要找的元素首地址为:SA+3*(8-1)*8+3*(5-1) = SA+180。
综上,本题选C。
编辑于 2020-03-03 14:11:43 回复(2)
0 0 0 0 0 0 0 0
1 1 1 1 1 1 1 1
2 2 2 2 2 2 2 2
3 3 3 3 3 3 3 3
4 4 4 4 4 4 4 4
5 5 5 5 5 5 5 5
6 6 6 6 6 6 6 6
7 7 7 7 7 7 7 7
8 8 8 8 8 8 8 8
9 9 9 9 9 9 9 9
        由于题目说案列存储,所以如上表格,每列是一个数组一共是8个数组,每个数组10个元素(里面的数字为元素下标)。
        所以A[4][7]应该是表格中带下划线的粗体“7”,也就是在第8行,第5列。
        前面完整的7行=7*8=56个元素,第8行所求元素前面有4个元素,56+4一共就是60个元素,题目说每个元素3个字节,60*3=180。
编辑于 2020-08-20 19:49:28 回复(4)
(7*8+4)*3
发表于 2020-03-16 15:00:50 回复(0)

二维数组A[b1,b2]中任一元素ai,j 的存储位置  L为每个元素长度
行序为主序:LOC(i,j) = LOC(0,0) +(b2×i+j)×L
列序为主序:   LOC(i,j) = LOC(0,0) +(b1*j+i)×L
发表于 2020-04-01 11:20:37 回复(0)
Key: 按列存储
发表于 2020-04-19 23:39:16 回复(1)
大家行云流水般的答复,看得我眼花缭乱、目不暇接、一脸茫然...可以详细说说吗???A[8][10]应该是8行10列,那找出A[4][7]四行七列的地址不是应该 (4 * 10 +7) * 3  = 141 所在的地址吗?我这样理解是不是有问题? 如果换一种思路(7 * 8 + 4) * 3 = 180 这答案就对了。。。我很焦灼啊!
发表于 2020-05-31 13:25:16 回复(2)
看错了,按列
发表于 2022-02-26 11:21:20 回复(0)
A[8][10](0-7,0-9)按列存储,先寸每一列,一共8行,故每列8个元素。
发表于 2021-10-28 11:20:05 回复(0)
((7*8)+4)*3
发表于 2021-08-16 22:55:19 回复(0)
按列存储
每个元素占3个字节
A[4][7] 在内存当中的位置与首元素距离为  7 * 10 + 4 = 74
74 * 3(每个元素三个字节) = 222
A[4][7]地址为 首地址 + 222 = SA + 222
发表于 2020-03-09 10:28:42 回复(1)
按行存储:SA+141 按列存储:SA+180
发表于 2022-07-27 14:23:33 回复(0)
按列存储,列8行10,算第列5第行8,7*8 56+前4个=60 60*3得180
发表于 2023-01-29 14:01:35 回复(0)
有点无语,乍一看按列储存下意识就想到是数据的存储,先存满一列再存下一列。😥
我一想A[8][10]一int之后地址不就确定了么?地址不是先行再列?地址还能按列分配?
//先存满一行再到下一行,所以先存一行中的每一列int A[8][10];    
int A[8][10]
int  for(int i =0; i<8; i++){ //从下标0开始,对应为第一行,或称i+1行
    for(int j = 0; j<10;j++){  //第i+1行的第j列开始存
        A[i][j] = 0; //随便存个0,遍历完A全存的0;
                                //先A[0][0],再A[0][1],再A[0][2]....A[0][9]
       }
}

//按列储存   先存满一列再到下一列,所以先存一列中的每一行
int A[8][10];
for(int i =0; i<10; i++){ //从下标0开始,对应为第一行,或称i+1行
    for(int j = 0; j<8;j++){  //第i+1行的第j列开始存
        A[j][i] = 0; //例: 先A[0][0],再A[1][0],再A[2][0].....A[7][0]
    }
}
发表于 2022-07-12 15:19:23 回复(0)
题目好无聊啊,你别提按列存储还能多考一个内存知识
发表于 2022-02-21 00:17:38 回复(0)
行序为主序是指地址从第一个出发顺着第一列往下递增,列序为主序是指抵制从第一个出发顺着第一行往右递增。
发表于 2020-07-20 18:27:08 回复(0)
平时存储是按照行存储的,就是满一行再从下一行存储,比如说存储1~9,a[3][3],其存储应该是: 1 2 3 4 5 6 7 8 9 如果换成按列存储,那就是满一列换下一列。 1 4 7 2 5 8 3 6 9 按照行计算,a[行m][列n]计算是 则a[i][j]的位置是i*n+j。 当按照列计算时,我们把按照行的这种思想套上,把原来的行当做列看,原来的列当做行看,此时a[i][j]的位置j*m+i。
发表于 2023-08-21 12:34:31 回复(0)
A[8][10]为8行10列,求A[4][7]因为下标是从0开始,所以元素所在位置为第5行,第8列,则间距为(7*8+5-1)*3=180 这里为啥要减去1是因为A[0][0]已经占据了一个起始位置了
发表于 2022-10-11 16:53:51 回复(0)
我反复看了几遍,确定本题是有问题的,正确答案应该选a,
47*3=121
结果为SA+121
发表于 2022-06-17 10:29:09 回复(0)
7*8+4=60 60*3=180
发表于 2022-03-12 12:40:58 回复(0)
为什么是7*8而不是7*9呢,没列不是9个数嘛
发表于 2022-03-08 17:12:46 回复(0)
靠 要算,之前那样排列时,在改元素前的元素个数
发表于 2022-02-09 22:44:33 回复(0)