算法与数据结构专项练习3

1.数组元素的下标值越大,存取时间越长,这样的说法正确吗?
正确答案: B
正确
不正确
解析:

存取,指读出,写入,时间复杂度都是O(1),不是插入和删除操作
2.有两个NN的矩阵A和B,想要在PC上按矩阵乘法基本算法编程实现计算AB。假设N较大,本机内存也很大,可以存下A、B和结果矩阵。那么,为了计算速度,A和B在内存中应该如何存储(按行存指先存储第一行,再第二行,直到最后一行;按列存指先存储第一列,再第二列,直到最后一列)?
正确答案: B
A按行存,B按行存。
A按行存,B按列存。
A按列存,B按行存。
A按列存,B按列存。

解析:https://nolaymanleftbehind.wordpress.com/2011/07/10/linear-algebra-what-matrices-actually-are/
http://www.ruanyifeng.com/blog/2015/09/matrix-multiplication.html
3.有n个数存放在一维数组A[1…n]中,在进行顺序查找时,这n个数的排列有序或无序其平均查找长度不同。()
正确答案: B
正确
错误
解析:

在等概率下,查找成功时的平均查找长度相同,查找失败时的平均查找长度不相同。如果查找失败,有序表可以尽早退出,而无序表必须全部遍历完,所以平均查找长度不同。例如对于有序表12345,查找-1时,在遍历第一个元素即可退出,而无序表需要将整个表遍历完。
4.将一个A[1…100,1…100]的三对角矩阵,按行优先存入一维数组B[1…298]中,A中元素A6665 (即该元素下标i=66,j=65),在B数组中的位置K为()供选择的答案:
正确答案: B
198
195
197
解析:

在这里插入图片描述
这是三角矩阵
在这里插入图片描述
****5.下列选项中,能正确定义数组的语句是( )。
正确答案: B

int num[0..2008];

int num[]={2008};

int N = 2008;
int num[N];

#define N 2008;
int num[N];****

解析:D项不对,觉得不是数组定义有问题,应该是宏定义后面不需要分号
6.广义表的取表尾运算,其结果通常是个表,但有时也可是个单元素值()
正确答案: B


解析:

表尾是指除去表头后剩下的元素组成的表,表头可以为表或单元素值
7.在一个长为33厘米的光滑凹轨上,在第3厘米、第6厘米、第19厘米、第22 厘米、第26厘米处各有一个钢珠,凹轨很细,不能同时通过两个钢珠,开始时,钢珠运动方向是任意的。两个钢珠相撞后,以相同速度反向运动。假设所有钢珠初 始速度为每秒运动1厘米,那么所有钢珠离开凹轨的最长可能时间是()
正确答案: A
30
26
38
33

解析:
首先要理解为穿越问题。然后如下分析:
所有球离开的最长时间,就可以等效为最后离开的那个球的时间,也就变成找哪个球离左边或右边出口的距离最远,显然5个球中,第一个球离右端出口(33-3)30是距离最远的,故最后答案是30;
若求最短时间,同上,找每个球离左右出口最小的值中的最大值即可。最后是(33-19)14
https://blog.csdn.net/luoweifu/article/details/12071865
8.下面哪几个语句正确的声明一个整型的二维数组()
正确答案: C D
int a[][]=new int[][]
int b[10][10]=new int[][]
int c[][]=new int[10][10]
int []d[]=new int[10][10]

解析:

  1. 定义一维数组时,必须显式指明数组的长度;
  2. 定义多维数组时,其一维数组的长度必须首先指明,其他维数组长度可以稍后指定;
  3. 采用给定值初始化数组时,不必指明长度;
  4. “[]” 是数组运算符的意思,在声明一个数组时,数组运算符可以放在数据类型与变量之间,也可以放在变量后。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
讨论课样题 1.下列页面置换算法说法正确的有(B)。 I先进先出(FIFO)会产生Belady现象。 II.最近最少使用(LRU)会产生Belady现象。 III.在进程运行时,若它的工作集页面都在虚拟存储器内,则能够使该进程有效地运行,否则会出现频繁的页面调入/调出现象。 IV.在进程运行时,若它的工作集页面都在主存储器内,则能够使该进程有效地运行,否则会出现频繁的页面调入/调出现象。 A.I、II B.I、IV C.II、III D.III、IV 2.在一个请求分页系统,采用LRU页面置换算法时,加入一个作业的页面走向为: 1,3,2,1,1,3,5,1,3,2,1,5。当分配给该作业的物理块数分别为3和4时,在访问过程所发生的缺页率为()。 A.25%, 33% B. 25%, 100% C.50%, 33% D.50%,, 75% 3.有一个矩阵为100x 200,即a[100][200]在一个虚拟系统,采用LRU算法。系统分给该进程5个页面来存储数据(不包含程序),设每页可存放200个整数,该程序要对整个数组初始化,数组存储时是按行存放的。试计算下列两个程序各自的缺页次数(假定所有页都以请求方式调入)(B) 程序一: for(i=0;i<= 99;i++) for(j=0;j<= 199;j++) A[i][j]=i*j 程序二: for(j=0; j<= 199;j++) for(i=0; i<= 99; i++) A[i][j]=i*j A.100, 200 B.100, 20000 C.200,100 D. 20000,100 解:外层改变行,内层改变列 程序一:对于外层循环一次后,内层循环都是在一行内运转的,也就是一页内运转的。 程序二:内循环是在行之间运行的,内层循环一次,程序运行页面需要换一个。 5.假定有一个请求分页存储管理系统,测得系统个相关设备的利用率为CPU为10%,磁盘交换区为99.7%;其他I/O设备为5%。试问:下面(B)措施可能改进CPU的利用率? I. 增大内存的容量 II.增大磁盘交换区的容量 III.减少多道程序的度数 V.使用更快速的磁盘交换区 IV.增加多道程序的度数 VI:使用更快速的CPU A.I、II、III、IV B.I、III C.II、III、V D.II、VI 解:I正确:增大内存可使每个程序得到更多的页面,能减少缺页率,因而减少换入换出过程,可提高CPU的利用率。 II错误:增大磁盘交换区的容量。因为系统实际已处于频繁的换入换出过程,不是因为磁盘交换区容量不够,因此增大磁盘交换区的容量无用。 III正确:减少多道程序的度数。可以提高CPU的利用率,因为从给定的条件磁盘交换区的利用率为99.7%,说明系统现在已经处于频繁的换入换出过程,可减少主存的程序。 V错误:使用更快速的磁盘交换区。因为系统现在处于频繁的换入换出过程,即使采用更快的磁盘交换区,其换入换出频率也不会改变,因此没用。 IV错误:增加多道程序的度数。系统处于频繁的换入换出过程,再增加主存的用户进程数,只能导致系统的换入换出更频繁,使性能更差。 VI错误:使用更快速的CPU。系统处于频繁的换入换出过程,CPU处于空闲状态,利用率不高,提高CPU的速度无济于事。 6.一个页式虚拟存储系统,其并发进程数固定为4个。最近测试了它的CPU利用率和用于页面交换的利用率,假设得到的结果为下列选项,(C)说明系统需要增加进程并发数? I. CPU利用率13%;磁盘利用率97% II. CPU利用率97%;磁盘利用率3% III.CPU利用率13%;磁盘利用率3% A.I B.II C.III D.I、III 解:A.系统在抖动,增加并发进程数反而会恶化系统性能。 B.系统正常,不需要采取什么措施 C.CPU没有充分利用 10.考虑页面替换算法,系统有m个页帧供调度,初始时全空;引用串长度为p,包含了n个不同的页号,无论用什么算法,缺页次数不会少于(C)。 A. m B.p C.n D. min(m, n) 解:缺页次数不会少于页数,因为要调入内存。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值