1. 矩阵不仅是表示多维数组,而且是表示图的重要工具,这样的说法正确吗?
A.正确 B.不正确
解析:图的表示方法有邻接矩阵和邻接表。
2. 设有一个二维数组A[m][n],假设A[0][0]存放位置在 644,A[2][2]存放位置在676,每个元素占一个空间,问A[3][3]存放的位置在(C)。
A.688 B.678 C.692 D.696
解析:解法一:676-644=32=2*m+2,可以知道m=15。 因此,答案 [3][3]=[0][0]+3*m+3=644+48=692
解法二:A[2][2]与A[0][0] 相差两排零2个元素,A[3][3]与A[2][2] 相差一排零1个元素,因为元素的地址是连续的,所以A[2][2]与A[0][0] 的地址差是A[3][3]与A[2][2]地址差的2倍,A[2][2]与A[0][0] 的地址差是676-644=32;A[3][3]与A[2][2]地址差是(676-644)/2=16;所以A[3][3]的地址是676+(676-644)/2=692.
3.若声明一个浮点数数组如下: float average[]=new float[30];假设该数组的内存起始位置为200, average[15]的内存地址是(C)。
A.214 B.215 C.260 D.256
解析:float一般为4个字节,以0做下标,计算第15个则不包括第15个,所以前面有15个,15*4+200=260。
4.从逻辑结构上看,n维向量的每个元素均属于1个n维向量()
A.正确 B.不正确
解析:例如二维数组,可以把列看成x轴,行看成y轴,那么这里面任意一个点都可以看成一个坐标形式,以此类推,三维同理,那一个n维数组里每一个元素都可以看成是在n维坐标轴中的一个点,也就是一个n维向量。
5.若稀疏矩阵采用三元组表形式进行压缩存储,若要完成对三元组表进行转置,只要将行和列对换,这种说法( B )。
A.正确 B.不正确 C.无法确定 D.其它选项均不对
解析:三元组转置是指行列互换,然后再按行排序。
6.已知 10*12 的二维数组 A ,以行序为主序进行存储,每个元素占 1 个存储单元,已知 A[1][1] 的存储地址为 420 ,则 A[5][5] 的存储地址为 ( C )。
A.470 B.471 C.472 D。473
解析:解法一:题目已经告诉我们了A[1][1]的地址,只需要求题目要求的元素与A[1][1]之间有多少个元素就阔以了。 A[5][5]与A[1][1]之间有4*12+4=52个元素,而A[1][1]地址为420,那么A[5][5]的地址就为420+52=472。
解法二:A[1][1]=x+12+1=420,x=407,则A[0][0]=407,A[5][5]=407+(5*12+5)=472。
7.长度为n 的非空顺序表,若在第i个位置插入新的元素X,则i的取值范围是 1≤i≤n+1,需要移动的元素个数为( D )。
A.i B.n-i-1 C.n-i D.n-i+1
解析:新的元素替换掉了原来在i的元素,原先在i位置上的元素以及后面元素都往后移,所以需要 + 1 。
8.数组定义为”int a[4][5];”, 引用”*(a+1)+2″表示(B)(从第0行开始)
A.a[1][0]+2 B.a数组第1行第2列元素的地址
C.a[0][1]+2 D.a数组第1行第2列元素的值
解析:a是一个二级指针,指向数组第一行,*(a+1)指向数组第1行第0列元素,*(a+1)+2指向数组第1行第2列元素。
9.二维数组k[1..7,1..9],每元素大小占2个字节,而且使用列存储,a[5,4]的偏移量为( D )个字节。
A.78 B.39 C.25 D.50
解析:解法一:a[5,4]左边有三列,上方有4行。列存储的话,a[5,4]前方有3*7+4=25个元素,共50个字节。
解法二:列存储,首先可以确定的是9行7列,问题中的a[5][4]指的是在第五列的第四个,还有就是二维数组转化成一维数组的公式a[x][y]=b[x*列数+y],其中的x,y的起始地址为0,不是1,所以这题应该减一,也就是a[4][3],3*7+4=25,再乘以2结果出来了。
10.以下能对一维数组 a 进行正确初始化的语句是( BC )
A.int a[10]=(0, 0, 0, 0, 0);
B.int a[10]={ };
C.int a[]={0};
D.int a[10]={10*a};
本文总结了关于矩阵在图表示中的重要性,解释了矩阵作为图的表示方法,如邻接矩阵。同时,通过一系列数学题目的解析,探讨了二维数组的地址计算、浮点数数组的内存布局以及稀疏矩阵转置的理解。文章还涵盖了数组的逻辑结构、插入元素的影响以及一维数组的初始化方法。

1138

被折叠的 条评论
为什么被折叠?



