一、单项选择题:140小题,每小题2分,共80分。下列每题给出的四个选项中,只有一个选项符合题目要求。请在答题卡上将所选项的字母涂黑。
1.已知程序如下:
int s(int n)
{ return (n<=0) ? 0 : s(n-1) +n; }
void main()
{ cout<< s(1); }
程序运行时使用栈来保存调用过程的信息,自栈底到栈顶保存的信息一次对应的是
A.main()->S(1)->S(0) B.S(0)->S(1)->main()
【参考答案】D
【考查知识点】栈的基本概念和函数调用的原理。
A.13 B.14 C.15 D.16
【参考答案】C
【考查知识点】二叉树的基本概念。
A.24,10,5和 24,10,7 B.24,10,5和24,12,7
C.24,10,10和 24,14,11 D.24,10,5和 24,14,6
【参考答案】C
【考查知识点】哈夫曼树的原理。
A.根节点的度一定为2 B.树中最小元素一定是叶节点
C.最后插入的元素一定是叶节点 D.树中最大元素一定是无左子树
【参考答案】B
【考查知识点】树的中序遍历和AVL树的基本概念。
A.2 B.3 C.4 D.5
【参考答案】D
【考查知识点】图的深度优先遍历。
A.(V1,V3) B.(V1,V4) C.(V2,V3) D.(V3,V4)
【参考答案】A
【考查知识点】最小生成树算法的Prim算法和Kruskal算法。
7.下列选项中,不能构成折半查找中关键字比较序列的是
A.500,200,450,180 B.500,450,200,180
C.180,500,200,450 D.180,200,500,450
【参考答案】A
【考查知识点】二分查找算法。
8.已知字符串S为“abaabaabacacaabaabcc”. 模式串t为“abaabc”, 采用KMP算法进行匹配,第一次出现“失配”(s[i] != t[i]) 时,i=j=5,则下次开始匹配时,i和j的值分别是
A.i=1,j=0 B.i=5,j=0 C.i=5,j=2 D.i=6,j=2
【参考答案】C
【考查知识点】模式匹配(KMP)算法。
9.下列排序算法中元素的移动次数和关键字的初始排列次序无关的是
A.直接插入排序 B.起泡排序 C.基数排序 D.快速排序
【参考答案】B
【考查知识点】几种排序算法的比较。
10.已知小根堆为8,15,10,21,34,16,12,删除关键字8之后需重建堆,在此过程中,关键字之间的比较数是
A.1 B.2 C.3 D.4
【参考答案】B
【考查知识点】最小堆的概念和最小堆的重建。
11.希尔排序的组内排序采用的是()
A.直接插入排序 B.折半插入排序 C.快速排序 D.归并排序
【参考答案】A
【考查知识点】希尔排序基本思想是:先将整个待排元素序列分割成若干个子序列(由
相隔某个“增量”的元素组成的)分别进行直接插入排序,然后依次缩减增量再进行排序,待整个序列中的元素基本有序(增量足够小)时,再对全体元素进行一次直接插入排序。
12.计算机硬件能够直接执行的是()
Ⅰ.机器语言程序 Ⅱ.汇编语言程序 Ⅲ.硬件描述语言程序
A.仅Ⅰ B.仅Ⅰ Ⅱ C.仅Ⅰ Ⅲ D.ⅠⅡ Ⅲ
【参考答案】A
【考查知识点】用汇编语言等非机器语言书写好的符号程序称源程序,运行时汇编程序要
将源程序翻译成目标程序,目标程序是机器语言程序。
13.由3个“1”和5个“0”组成的8位二进制补码,能表示的最小整数是()
A.-126 B.-125 C.-32 D.-3
【参考答案】B
【考查知识点】二进制的补码表示。
14.下列有关浮点数加减运算的叙述中,正确的是()
Ⅰ. 对阶操作不会引起阶码上溢或下溢
Ⅱ. 右规和尾数舍入都可能引起阶码上溢
Ⅲ. 左规时可能引起阶码下溢
Ⅳ. 尾数溢出时结果不一定溢出
A.仅Ⅱ Ⅲ B.仅ⅠⅡⅣ C.仅ⅠⅢ Ⅳ D.ⅠⅡ Ⅲ Ⅳ
【参考答案】B
【考查知识点】浮点数的加减运算。
15.假定主存地址为32位,按字节编址,主存和Cache之间采用直接映射方式,主存块大小为4个字,每字32位,采用回写(Write Back)方式,则能存放4K字数据的Cache的总容量的位数至少是()
A.146k B.147K C.148K D.158K
【参考答案】 B
【考查知识点】Cache 和主存的映射方式。直接映射方式地址映象规则: 主存储器中一块只能映象到Cache的一个特定的块中。(1) 主存与缓存分成相同大小的数据块。(2) 主存容量应是缓存容量的整数倍,将主存空间按缓存的容量分成区,主存中每一区的块数与缓存的总块数相等。(3) 主存中某区的一块存入缓存时只能存入缓存中块号相同的位置。
16.假定编译器将赋值语句“x=x+3;”转换为指令”add xaddt, 3”,其中xaddt是x 对应的存储单元地址,若执行该指令的计算机采用页式虚拟存储管理方式,并配有相应的TLB,且Cache使用直写(Write Through)方式,则完成该指令功能需要访问主存的次数至少是()
A.0 B.1 C.2 D.3
【参考答案】 C
【考查知识点】 考察了页式虚拟存储器及TLB快表。
17.下列存储器中,在工作期间需要周期性刷新的是()
A.SRAM B.SDRAM C.ROM D.FLASH
【参考答案】B
【考查知识点】DRAM使用电容存储,所以必须隔一段时间刷新(refresh)一次,如果存储单元没有被刷新,存储的信息就会丢失。
18.某计算机使用4体交叉存储器,假定在存储器总线上出现的主存地址(十进制)序列为8005,8006,8007,8008,8001,8002,8003,8004,8000,则可能发生发生缓存冲突的地址对是()
A.8004、8008 B.8002、8007 C.8001、8008 D.8000、8004
【参考答案】 C
【考查知识点】 考察了存储器中的多模块存储器,多体并行系统。
19.下列有关总线定时的叙述中,错误的是()
A.异步通信方式中,全互锁协议最慢
B.异步通信方式中,非互锁协议的可靠性最差
C.同步通信方式中,同步时钟信号可由多设备提供
D.半同步通信方式中,握手信号的采样由同步时钟控制
【参考答案】 B
【考查知识点】考察了总线操作和定时,主要是同步定时与异步定时的定义及其特点。
20.若磁盘转速为7200转/分,平均寻道时间为8ms,每个磁道包含1000个扇区,则访问一个扇区的平均存取时间大约是( )
A.8.1ms B.12.2ms C.16.3ms D.20.5ms
【参考答案】B
【考查知识点】磁盘访问时间计算。
21.在采用中断I/O方式控制打印输出的情况下,CPU和打印控制接口中的I/O端口之间交换的信息不可能是( )
A.打印字符 B.主存地址 C.设备状态 D.控制命令
【参考答案】A
【考查知识点】程序中断I/O方式。
22.内部异常(内中断)可分为故障(fault)、陷阱(trap)和终止(abort)三类。下列有关内部异常的叙述中,错误的( )
A.内部异常的产生与当前执行指令相关
B.内部异常的检测由CPU内部逻辑实现
C.内部异常的响应发生在指令执行过程中
D.内部异常处理的返回到发生异常的指令继续执行
【参考答案】A
【考查知识点】内部异常概念。
23.处理外部中断时,应该由操作系统保存的是( )
A.程序计数器(PC)的内容 B.通用寄存器的内容
C.块表(TLB)的内容 D.Cache中的内容
【参考答案】A
【考查知识点】外部中断处理过程。
24.假定下列指令已装入指令寄存器。则执行时不可能导致CPU从用户态变为内核态(系统态)的是( )
A.DIV R0,R1;(R0)/(R1)→R0
B.INT n;产生软中断
C.NOT R0;寄存器R0的内容取非
D.MOV R0,addr;把地址处的内存数据放入寄存器R0中
【参考答案】C
【考查知识点】CPU用户态和内核态概念。
25.下列选项中会导致进程从执行态变为就绪态的事件是()
A.执行P(wait)操作 B.申请内存失败
C.启动I/O设备 D.被高优先级进程抢占
【参考答案】D
【考查知识点】进程间各状态的转化。
26.若系统S1 采用死锁避免方法,S2采用死锁检测方法,下列叙述中正确的是()
Ⅰ.S1会限制用户申请资源的顺序
Ⅱ.S1需要进行所需资源总量信息,而S2不需要
Ⅲ.S1不会给可能导致死锁的进程分配资源,S2会
A.仅Ⅰ Ⅱ B.仅Ⅱ Ⅲ C.仅Ⅰ Ⅲ D.Ⅰ Ⅱ Ⅲ
【参考答案】C
【考查知识点】死锁相关概念。
27.系统为某进程分配了4个页框,该进程已访问的页号序列为2,0,2,9,3,4,2,8,2,3,8,4,5,若进程要访问的下一页的页号为7,依据LRU算法,应淘汰页的页号是()
A.2 B.3 C.4 D.8
【参考答案】C
【考查知识点】LRU算法。
28.在系统内存中设置磁盘缓冲区的主要目的是()
A.减少磁盘I/O次数
B.减少平均寻道时间
C.提高磁盘数据可靠性
D.实现设备无关性
【参考答案】A
【考查知识点】磁盘和内存速度的差异。
29.在文件的索引节点中存放直接索引指针10个,一级二级索引指针各1个,磁盘块大小为1KB。每个索引指针占4个字节。若某个文件的索引节点已在内存中,到把该文件的偏移量(按字节编址)为1234和307400处所在的磁盘块读入内存。需访问的磁盘块个数分别是()
【参考答案】D
【考查知识点】文件索引相关概念。
30.在请求分页系统中,页面分配策略与页面置换策略不能组合使用的是()
A.可变分配,全局置换 B.可变分配,局部置换
C.固定分配,全局置换 D.固定分配,局部置换
【参考答案】D
【考查知识点】页面分配策略和页面置换策略的概念和相应的方法。
二、综合应用题:41~47小题,共70分。
41. 用单链表保存m个整数,节点的结构为(data,link),且|data|<n(n为正整数)。现要求设计一个时间复杂度尽可能高效地算法,对于链表中绝对值相等的节点,仅保留第一次出现的节点而删除其余绝对值相等的节点。
例如若给定的单链表head如下
删除节点后的head为
要求
(1) 给出算法的基本思想
(2) 使用c或c++语言,给出单链表节点的数据类型定义。
(3) 根据设计思想,采用c或c++语言描述算法,关键之处给出注释。
(4) 说明所涉及算法的时间复杂度和空间复杂度。
【参考答案】
(1) 算法思想:
定义一个大小为N的数组,初始化为0.在遍历链表的同时将数组中索引值为节点的值的绝对值的元素置1.如果此元素已经为1,说明此节点之前已经有与此节点的值的绝对值相等的节点,需将此节点删除。
(2) 节点的数据结构定义如下:
typedef struct Node
{
Int data;
Struct Node * next;
}Node;
(3) int a[n]; // 全局数组 标志节点的绝对值的值是否出现过
void DeleteABSEqualNode(Node * head)
{
memset(a,0,n); // 初始化为0
if (head == NULL)
{
return NULL;
}
Node * p = head;
Node * r = head;
while (p != NULL)
{
if (a[abs(p->data)] == 1) //如果此绝对值已经在节点值的绝对值中出现过
{ //则删除当前节点
r->next = p->next;
delete p;
p = r->next;
}
else //否则,将数组中对应的元素置1,并将指针指向下一个元素
{
a[abs(p->data)] = 1;
r = p;
p = p->next;
}
}
return head;
}
(4) 只遍历一次链表,所以时间复杂度为O(n),
因为申请大小为n的数组,所以空间复杂度为O(n),(n为节点绝对值的最大值)。
【考查知识点】链表的操作。
42. 已知有5个顶点的图G如下图所示
请回答下列问题
(1) 写出图G的邻接矩阵A(行、列下标从0开始)
(2) 求A2,矩阵A2中位于0行3列元素值的含义是什么?
(3) 若已知具有n(n>=2)个顶点的邻接矩阵为B,则Bm(2<=m<=n)非零元素的含义是什么?
【参考答案】
(1)邻接矩阵为
(2)
0行3列的元素的含义是顶点0到顶点3的最短距离为2.
(3)Bm中非零元素的含义是:假设此顶点位于i行j列,如果i==j,则表示i顶点到自己的距离为0;如果i≠j,则表示顶点i到达不了顶点j。
【考查知识点】邻接矩阵的概念,最短路径。
43. (13分)某16位计算机主存按字节编码。存取单位为16位;采用16位定长指令格式;CPU采用单总线结构,主要部分如下图所示。图中R0~R3为通用寄存器;T为暂存器;SR为移位寄存器,可实现直送(mov)、左移一位(left)、右移一位(right)3种操作,控制信号为Srop,SR的输出信号Srout控制;ALU可实现直送A(mova)、A加B(add)、A减B(sub)、A与B(and)、A或B(or)、非A(not)、A加1(inc)7种操作,控制信号为ALUop。
请回答下列问题。
(1) 图中哪些寄存器是程序员可见的?为何要设置暂存器T?
(2) 控制信号ALUop和SRop的位数至少各是多少?
(3) 控制信号Srout所控制邮件的名称或作用是什么?
(4) 端点①~⑨中,哪些端点须连接到控制部件的输出端?
(5) 为完善单总线数据通路,需要在端点①~⑨中相应的端点之间添加必要的连线。写出连线的起点和终点,以正确表示数据的流动方向。
(6) 为什么二路选择器MUX的一个输入端是2?
【参考答案】
【考查知识点】寄存器相关概念及寄存器的操作,单总线结构
44. (10分)题43中描述的计算机,其部分指令执行过程的控制信号如如题44图a所示。
题44图a 部分指令控制信号
该机指令格式如题44图b所示,支持寄存器直接和寄存器间接两种寻址方式,寻址方式位分别为0和1,通用寄存器R0~R3的编号分别为0、1、2和3。
题44图b 指令格式
请回答下列问题。
(1) 该机的指令系统最多可定义多少条指令?
(2) 假定inc、shl和sub指令的操作码分别为01H、02H和03H,则以下指令对应的机
器代码各是什么?
③ sub R3, (R1),R2 ; ((R1)) – (R2) → R3
(3) 假定寄存器X的输入和输出控制信号分别为Xin和Xout,其值为1表示有效,为0表示无效(例如,PCout=1 表示PC内容送总线);存储器控制信号为MEMop,用于控制存储器的读(read)和写(write)操作。写出题44图a中标号①⑧处的控制信号或控制信号的取值。
(4) 指令“sub R1,R3,(R2)”和“inc R1”的执行阶段至少各需要多少个时钟周期?
【参考答案】
【考查知识点】指令的格式与寻址方式,指令执行过程
45. 有A、B两人通过信箱进行辩论,每人都从自己的信箱中取得对方的问题。将答案和向对方提出的新问题组成一个邮件放入对方的邮箱中,设A的信箱最多放M个邮件,B的信箱最多放 N个邮件。初始时A的信箱中有x个邮件(0<x<M). B 中有y个(0<y<N)。辩论者每取出一个邮件,邮件数减1.
A、B两人操作过程:
Code Begin
A{
While(TRUE){
从A的信箱中取出一个邮件;
回答问题并提出一个新问题;
将新邮件放入B的信箱;
}
}
从B的信箱中取出一个邮件;
回答问题并提出一个新问题;
将新邮件放入A的信箱;
}
}
当信箱不为空时,辩论者才能从信箱中取邮件,否则等待。
当信箱不满时,辩论者才能将新邮件放入信箱,否则等待。
请添加必要的信号量和P、V(或wait, signed)操作,以实现上述过程的同步,要求写出完整过程,并说明信号量的含义和初值。
【参考答案】
Semaphore mutexA=1;
Semaphore mutexB=1;
Semaphore emptyA=M;
Semaphore emptyB=N;
Semaphore fullA=0;
Semaphore fullB=0;
Code Begin
A{
While(TRUE){
P(mutexA)
Get a mail from A_mailbox;
V(mutexA);
V(fullA);
Answer the question and raise a question;
P(emptyB);
P(mutexB)
send the mail to B;
V(mutexB);
V(emptyB);
}
}
B{
While(TRUE){
P(fullB);
P(mutexB)
Get a mail from B_mailbox;
V(mutexB);
V(fullB);
Answer the question and raise a question;
P(emptyA);
P(mutexA)
send the mail to A;
V(mutexA);
V(emptyA);
}
}
Code End
【考查知识点】 考察了利用信号量进程同步问题。