习题总结001

本文总结了关于矩阵在图表示中的重要性,解释了矩阵作为图的表示方法,如邻接矩阵。同时,通过一系列数学题目的解析,探讨了二维数组的地址计算、浮点数数组的内存布局以及稀疏矩阵转置的理解。文章还涵盖了数组的逻辑结构、插入元素的影响以及一维数组的初始化方法。

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};


 

 

 

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值