首页 > 试题广场 >

假设 8 行 10 列的二维数组 a[1…8 , 1…10]

[单选题]
假设 8 行 10 列的二维数组a[1…8 , 1…10] 分别以行序为主序和以列序为主序顺序存储时,其首地址相同,那么以行序为主序时元素 a[3 , 5] 的地址与以列序为主序时() 元素相同。注意:第一个元素为a[1][1]
  • a[7,3]
  • a[8,3]
  • a[3,4]
  • ABC都不对
假设以行存储和以列存储的首地址都是1,由于行和列的下标都是从1开始的:
所以a[3,5]以行存储的地址为:(3-1)*10+5=25;// (i-1)*10+j
要是以列存储,那么其地址表达式为:i+(j-1)*8
A 选项带入得到:7+2*8=23;
B:8+2*8=24;
C:3+3*8=27;
所以根本没有答案,选D,要选的话应该是a[1,4]//1+(4-1)*8=25
发表于 2017-07-21 14:12:42 回复(7)
答案错了,竟然还有人解析得头头是道,无语了。
在该元素所在的这一行,该元素之前有4个元素,所以地址应该是2*10+4=24而不是25(题目说的是该元素首地址不是它的末地址,末地址才是25)。如果要按楼下几位的逻辑这么算的话,A[0][0]的地址就是1不是0了
发表于 2017-08-20 22:08:55 回复(7)
a【1】【4】
发表于 2019-07-10 11:17:27 回复(4)
(1,1)  (1,2)  (1,3)  (1,4) (1,5)  (1,6) (1,7)  (1,8)  (1,9)  (1,10)
(2,1)  (2,2)  (2,3)  (2,4) (2,5)  (2,6) (2,7)  (2,8)  (2,9)  (2,10)
(3,1)  (3,2)  (3,3)  (3,4) (3,5)

(1,1)  (1,2)  (1,3)  (1,4)
(2,1)  (2,2)  (2,3)
(3,1)  (3,2)  (3,3)
(4,1)  (4,2)  (4,3)
(5,1)  (5,2)  (5,3)
(6,1)  (6,2)  (6,3)
(7,1)  (7,2)  (7,3)
(8,1)  (8,2)  (8,3)

直接点,行优先总共25个数,列优先总共25个数,地址一定相同
发表于 2022-12-01 17:12:19 回复(0)
a[4,3]
发表于 2017-09-13 15:54:13 回复(0)
以行为主序,下标从1开始,那么a[3,5],地址应该是2*10+5=25;
那么以列为主序,则应有(j-1)*8+i=25,所以答案应该是a[1,4];
本题答案是有误的。
发表于 2017-07-26 15:42:34 回复(0)
^~^头像 ^~^
我也觉得答案是D,正确数组下标应该是a[1,4]
发表于 2017-07-28 10:42:19 回复(5)
假设a[0,0]的地址为0。
以行为主序时a[i,j]的地址是i*10+j,a[3,5]的地址就是35;
以列为主序时a[i' , j']的地址是i'+j'*8,地址35的元素应该是a[3,4]。
发表于 2017-06-02 08:20:43 回复(3)
答案是a[1,4]
a[3,5]是第25个数,只要找到列主序时的第二十五个数即可,列主序时可以看作是10*8的数组,第二十五个数对应的是第四列第一个,转换为行主序就是a[1,4]
发表于 2021-04-10 09:41:35 回复(0)
设数组首地址为SA:
以行序为主序时,a[3][5]首地址(相当于a[3][4]的末地址)为 SA + (3-1)×10 + (5 - 1) = SA + 24.
以列序为主序时,设所求列号为m,行号为n,即a[m][n];
SA + (m-1)×8 + (n - 1) = SA + 24
化简:
8m + n = 33;
穷举法求得唯一解:m = 4,n = 1;
即a[4][1],则ABC都不对,选D。
发表于 2019-08-02 11:42:08 回复(1)
发表于 2020-08-23 15:45:04 回复(1)
1,4要分清行主序与列主序存储是不一样的,行:(i_1)*10+j 列:(j-1)*8+i
发表于 2022-03-15 16:37:59 回复(0)

数组索引从1开始


发表于 2019-11-30 11:35:26 回复(0)
设首地址从0开始,每个字节占1位 以行存储为主序时,a[3][5]的地址应为2*10+4=24 以列存储为主序时,3*8=24,所以应为a[1][4]
发表于 2019-10-05 11:37:11 回复(1)
上图呀呀呀
发表于 2022-10-29 00:07:13 回复(0)
可以考虑用矩阵的方式来思考。假设行为x轴,列为y轴,则题目中元素表示为坐标系上的点(3,5)。 当以列为主,则列为x轴,行为y轴。整个坐标系顺时针旋转90度。原坐标(3,5)变换为(1,4)
发表于 2022-08-19 19:25:10 回复(0)
发表于 2022-03-04 13:16:53 回复(0)
由于第一个元素为a[1][1],以行为主序时元素a[3][5]是第2*10+5=25个元素,如果以列为主序的话,同样的第25个元素应该是3*8+1=25(每一列为8个元素),所以此元素为a[4][1],题中没有,选d
发表于 2022-02-24 10:29:26 回复(0)

假设一个元素为k字节,那么地址就是24k,对应a[1,4]的地址


发表于 2019-07-26 15:34:08 回复(0)
题目应该问的是在对应的转置矩阵的位置吧,那不应该a[4,1]吗
发表于 2019-03-18 19:20:30 回复(0)