首页 > 试题广场 >

二维数组k[1..7,1..9],每元素大小占2个字节,而且

[单选题]
二维数组k[1..7,1..9],每元素大小占2个字节,而且使用列存储,a[5,4]的偏移量为()个字节。
  • 78
  • 39
  • 25
  • 50
发表于 2020-09-08 10:49:23 回复(0)
a[5,4]左边有三列,上方有4行。
列存储的话,a[5,4]前方有3*7+4=25个元素,共50个字节。
发表于 2019-03-15 20:25:04 回复(2)
首先可以确定的是9行7列,问题中的a[5][4]指的是在第五列的第四个,这个地方大家可能误解了,还有就是二维数组转化成一维数组的公式a[x][y]=b[x*列数+y],其中的x,y的起始地址为0,不是1,所以这题应该减一,也就是a[4][3],3*7+4=25,再乘以2结果出来了。
发表于 2019-03-19 16:34:49 回复(1)

二维数组k[1..7,1..9],每元素大小占2个字节,而且使用列存储,a[5,4]的偏移量为()个字节。

注意的坑

  • 二维数组k[1..7,1..9] 不是从0 开始,所以 a[5,4] 就是第五行第四列
  • 是按照列存储

所以a[5,4] 左边有3列,上面有4行,按照列存储的话 就是 (3x7+4)2=25x2 =50 ;

拓展一下:如果是安装行存储
那么就是 上面有4行 4x9= 36 左边有3列 (36+3)x2 = 78
也就是 A答案

编辑于 2019-10-18 15:08:06 回复(1)
个人理解为:
先说哦我们习惯的K[7][9],默认是行优先(下标是从0开始),是一个7*9的矩阵。a[5,4]表示:第6行的第5列(下标是从0开始哈);

而题目要求,K[1..7, 1..9],列优先(注意:下标是从1开始的!!!),因此代表的是一个9*7的矩阵,
由于转置了,故a[5,4]变成了a[4,5],而a[4,5]代表第4行的第5列(此处的下标是从1开始!!!)。
也即:(3 * 7 + 4)* 2 = 50;


发表于 2020-05-15 16:49:30 回复(0)
你可以画一个矩形,9行7列的,这是以列为主存的话,那么a[5][4]是在第5列的第4行,每列有9个,那么在a[5[4]前面有9*4+3=39个数据元素,每个数据元素占2个存储单元,那么前面的总共有39*2=78,a[5,4]的偏移量为(78)个字节?
发表于 2019-03-14 15:44:40 回复(2)
一个k 一个a?
发表于 2022-03-16 16:54:57 回复(0)
注意看清题目 按列存储 不是常规的按行存储
发表于 2020-06-28 10:25:28 回复(0)
例题:二维数组a[0..4 , 1..5],每个元素占一个存储单元,且以列为主序存储,则元素a[2,2]相对于数组空间起始地址的偏移量为多少?

解答:数组列存储(先列后行),写入数组顺序是a[1][1]->a[2][1]->a[1][2]->a[2][2]->...(要算a[2][2],下标从1算起...),偏移量= 起始地址 + (a[1][1] + a[2][1] + a[1][2]) * size

本题:二维数组k[1..7,1..9],每元素大小占2个字节,而且使用列存储,a[5,4]的偏移量为()个字节
求解:偏移量= 起始地址 + (a[1][1] + a[2][1] +.... a[4][4]) * size=(7*3+4)*2=50
发表于 2019-03-22 15:31:56 回复(2)

二维数组其实就是两个一维数组的嵌套、而一维数组的存储是存在次序约定的 这个式前提
首先把二维数组k[7,9]看成一个7*9的矩阵 
如果是按列式存储  那么他的数据就是一列一列去存  那目标元素a[5,4] 代表当前元素是在第4列的第5行这个位置   
每列7个元素  a[5,4] = a[0,0] + ( 7*(4-1) + (5-1) ) * 2 = 50

如果是按行式存储  那么他的数据就是一行一行去存  那目标元素a[5,4] 代表当前元素在第5行的第4列这个位置 
每行9个元素 a[5,4] = a[0,0] + ( 9*(5-1) + (4-1) ) * 2 = 78
主要看的是存储方式  存储方式不同计算方式也就不同 二维数组看成一个矩阵即可 
发表于 2023-09-19 10:30:08 回复(0)
列式存储按照7列9行,a[5][4]在第5列第4行,就是(3*7+4)*2=50
发表于 2022-06-24 09:00:59 回复(0)
按列存储想,所以k是7列 9行
a[5,4]前面也有3行 4列
一个位置2个字节,所以一行2*7=14个字节,3行 14*3=42个字节,4列是2*4=8个字节,所以偏移量是42+8=50

发表于 2022-05-12 22:24:16 回复(0)
列存储:(5-1)+(4-1)*7=25
发表于 2024-01-29 11:22:28 回复(0)
从1开始((4-1)*7+4)*2
发表于 2023-06-18 20:08:57 回复(0)
看清楚“列存储”
发表于 2023-06-02 14:12:59 回复(0)
都是真牛啊,列存储,很明显是打哪错了,,4*9+4 然后乘2,,,可偏偏那么多人按照行存储去算,做对了沾沾自喜,还出解析,真牛
发表于 2023-05-12 14:55:10 回复(0)
主要难点是二维数组如何表示。到底是7行9列,还是7列9行。。。
发表于 2023-02-19 13:27:18 回复(0)
4x5x2字节等于50
发表于 2022-09-14 23:43:38 回复(0)
(21+4)*2=50
发表于 2022-07-11 21:58:25 回复(0)
有人和我一样用勾股定理懵对的吗
发表于 2021-03-09 15:47:49 回复(0)