科目组合
计算机: 数据结构 、计算机组成原理 、操作系统 、计算机网络
(1)某点的入度即为临接矩阵中该所对应的列中不为0的值总和,出度即为改点邻接矩阵所对应的行中不为0的值总和,采用一个count记录K节点个数,对于每个节点,依次遍历其所在行和所在列得到入度和出度值,若满足出度大于入度,则count++,最后输出count即可
(2)
int printVertices(MGraph G)
{
int count=0;
for(int i=0;i<numVertices;i++)
{
int indegree=0;
int outdegree=0;
for(int j=0;j<numVertices;j++)
{
outdegree+= G.Edge[i][j];
indegree+= G.Edge[j][i];
}
if(outdegree>indegree){cout<<k节点:i<<endl;count++;
}
return count;
}
cout<<count;
评分及理由
(1)得分及理由(满分4分)
得分:4分
理由:学生的设计思想完全正确。明确指出了通过遍历邻接矩阵来计算每个顶点的入度(对应列的非零值总和)和出度(对应行的非零值总和),然后比较出度和入度来识别K顶点,并统计个数。思路与标准答案一致,表述清晰。
(2)得分及理由(满分9分)
得分:6分
理由:代码整体框架正确,核心逻辑(计算入度和出度的方法)与标准答案一致。但存在以下逻辑错误和细节问题: 题目总分:4+6=10分
1. 函数参数中的右括号使用了中文全角字符(`MGraph G)`),应改为半角字符(`MGraph G)`) - 扣1分
2. 循环条件中使用了未定义的变量`numVertices`,应为`G.numVertices` - 扣1分
3. 输出语句中`cout<
4. 函数结尾多了一个`cout<
(1)
生成4个归并段
37 51 63 92 94 99
14 15 23 31 48 56 60 90 166
8 17 43 100
(2)
最大值为n,最小值为m
评分及理由
(1)得分及理由(满分8分)
学生回答生成4个归并段,但实际正确数量是3个。虽然列出的三个归并段内容完全正确(37,51,63,92,94,99;14,15,23,31,48,56,60,90,166;8,17,43,100),但由于数量判断错误,属于逻辑错误。根据打分要求,逻辑错误需要扣分。
三个归并段内容各得2分(共6分),数量错误扣2分,得分为6分。
(2)得分及理由(满分2分)
学生回答最大值为n,最小值为m,这与标准答案完全一致。思路正确,表述准确,得满分2分。
题目总分:6+2=8分
(1)分为2个页面存储,会发生2次缺页异常,第一次故障地址为00422000H,第二次为00423000H
(2)没有时间局部性,因为执行过程中每个数据仅被访问一次
(3)32B说明块内地址占5位,4路组相连共有64组,所以A[0]-A[4]作为块内地址,A[5]-A[10]作为cache组号,a[1][0]的虚拟地址为00422100H,对应的Cache组号为8
(4)占用了192个主存块,共访问1536次数据每8次访问产生一次缺失,共产生了192次缺失,命中率为87.5%
改为列优先访问,可视为每64*8次访问产生了64次缺失,命中率为87.5%
评分及理由
(1)得分及理由(满分3分)
学生答案正确,页面数、缺页次数和页故障地址均与标准答案一致。得3分。
(2)得分及理由(满分2分)
学生正确判断没有时间局部性,理由充分。得2分。
(3)得分及理由(满分4分)
学生正确指出块内地址为A[0]-A[4](5位),Cache组号为A[5]-A[10](6位),a[1][0]虚拟地址为00422100H,Cache组号为8,与标准答案一致。得4分。
(4)得分及理由(满分5分)
学生正确计算数组a占用192个主存块,两种循环顺序下的Cache命中率均为87.5%,与标准答案一致。得5分。
题目总分:3+2+4+5=14分
(1)004010B9H
(2)采用相对寻址方式,目标地址=下一条指令地址(当前PC值)+偏移量,即00401084H=0040107BH+09H
(3)采用立即寻址方式,ecx里存放的是a[i][0]的初始地址,即i*4*64=i*256,采用小端方式
(4)不会发生缺页异常,因为指令的页号也为00401H
评分及理由
(1)得分及理由(满分3分)
学生答案正确,第20条指令的虚拟地址为004010B9H,与标准答案一致。得3分。
(2)得分及理由(满分3分)
学生正确指出采用相对寻址方式,但在计算过程中存在逻辑错误。标准答案中当前指令地址为00401079H,加上指令长度2字节后得到下一条指令地址0040107BH,再加上偏移量09H得到目标地址00401084H。学生答案中直接使用下一条指令地址0040107BH加偏移量09H,虽然结果正确,但未完整说明当前指令地址与下一条指令地址的关系,属于表述不严谨。扣1分,得2分。
(3)得分及理由(满分2分)
学生正确指出源操作数为立即寻址方式(得0.5分);正确计算出ecx中存放的是i×256(得0.5分);正确判断为小端方式(得0.5分)。但未完整说明ecx具体含义(标准答案为"ecx存放的是i×256"),学生答案中"a[i][0]的初始地址"表述不够准确,但计算正确。总体回答基本正确,得1.5分。
(4)得分及理由(满分1分)
学生正确判断不会发生缺页异常,并指出指令页号为00401H(标准答案为004010H),虽然表述略有差异但本质正确。得1分。
题目总分:3+2+1.5+1=7.5分
(1)进入区的等待方式存在错误,if语句仅会执行一次判断,退出区语句错误,未正常释放锁。将if改为while,退出区的lock改为false
(2)不可以,因为swap的执行具有原子性,不可被打断,而函数进程无法实现对key,lock修改的互斥,导致结果出现错误。
评分及理由
(1)得分及理由(满分4分)
学生正确指出了两处错误:①进入区使用if语句应改为while语句;②退出区lock=TRUE应改为lock=FALSE。修改方式与标准答案完全一致,且理由充分。因此得4分。
(2)得分及理由(满分3分)
学生正确回答了“不可以”,并指出了关键原因:swap指令具有原子性,而函数调用无法保证原子性,可能导致多个线程同时进入临界区。理由与标准答案一致,但未详细举例说明并发执行时的具体错误情况。由于核心要点已正确,扣1分。因此得2分。
题目总分:4+2=6分
(1)操作1的前一个操作是3,后一个操作是5
操作6的后一个操作是4
(2)操作2,操作1
(3)操作3
(4)P处于阻塞态,CPU处于内核态
评分及理由
(1)得分及理由(满分3分)
学生答案:操作1的前一个操作是3,后一个操作是5;操作6的后一个操作是4。与标准答案完全一致。得3分。
(2)得分及理由(满分2分)
学生答案:操作2,操作1。与标准答案完全一致,分别对应"CPU一定会从进程P切换到其他进程的操作是②"和"CPU调度程序才能选择进程P执行的操作是①"。得2分。
(3)得分及理由(满分1分)
学生答案:操作3。与标准答案完全一致,正确识别出属于键盘驱动程序的操作。得1分。
(4)得分及理由(满分2分)
学生答案:P处于阻塞态,CPU处于内核态。与标准答案完全一致,正确判断了进程状态和CPU状态。得2分。
题目总分:3+2+1+2=8分
(1)FTP的控制链接是持久的,数据链接是非持久的,登陆时建立的是控制链接
(2)第一个字节序号是101,ACK为18102
(3)收到2101时拥塞窗口为3MSS,为7101时调整为8MSS
(4)初次建立需要1个RTT,5个RTT发送数据,共需6个RTT,60ms,数据发送速率为300MB/s
评分及理由
(1)得分及理由(满分3分)
学生答案正确。FTP控制连接是持久的,数据连接是非持久的,登录时建立的是控制连接。与标准答案完全一致,得3分。
(2)得分及理由(满分2分)
学生答案正确。第一个字节序号为101(初始序号100+1),第二次挥手ACK序号为18102(初始序号100+文件大小18000+2)。与标准答案完全一致,得2分。
(3)得分及理由(满分2分)
学生答案部分正确。收到2101确认段时拥塞窗口为3MSS正确(处于拥塞避免阶段线性增长),得1分;但收到7101确认段时回答8MSS错误,此时应处于拥塞避免阶段,窗口从4MSS线性增长到5MSS,扣1分。本小题得1分。
(4)得分及理由(满分2分)
学生答案部分正确。时间计算正确(6RTT=60ms),得1分;但数据发送速率计算错误,应为(18000×8)bit/0.06s=2.4Mbps,学生答案300MB/s明显错误,扣1分。本小题得1分。
题目总分:3+2+1+1=7分