科目组合
计算机: 数据结构 、计算机组成原理 、操作系统 、计算机网络

评分及理由
(1)得分及理由(满分4分)
得分:4分
理由:学生的算法思想与标准答案基本一致,都是通过计算入度、使用栈(或队列)存储入度为0的顶点,并在每一轮判断是否存在多个入度为0的顶点来判断拓扑序列是否唯一。思路清晰完整,没有逻辑错误,因此得满分。
(2)得分及理由(满分9分)
得分:7分
理由:学生的代码整体框架正确,实现了拓扑排序的基本流程,但在细节处理上存在两处逻辑错误:
1. 在while循环中,判断条件为if(top),这表示当栈中元素个数大于0(即非空)时就返回0,这显然是错误的。正确的逻辑应该是判断栈中是否同时存在多个入度为0的顶点,即if(top > 0)或if(top >= 1)(因为top是栈顶索引,top>0表示栈中至少有两个元素)。此处错误导致算法无法正确判断唯一性,属于关键逻辑错误,扣2分。
2. 代码中定义了变量cnt用于记录拓扑结点数量,但在后续处理中并未对cnt进行递增操作,导致最后无法通过cnt == G.numVertices判断拓扑序列是否包含所有顶点。不过,在第二次识别的代码中,最后直接返回1,这隐含了拓扑排序成功完成即包含所有顶点的假设,但实际代码中缺少对图中是否存在环的检查(即拓扑排序是否真正完成)。由于第一处错误已扣分,此处不再重复扣分。
此外,代码中使用了变长数组int in[G.numVertices],这在C99标准中合法,但部分编译器可能不支持,考虑到题目未明确要求语言标准,且不影响核心逻辑,不扣分。
综上,扣除2分,得7分。
题目总分:4+7=11分
题目总分:4+7=11分

评分及理由
(1)得分及理由(满分6分)
学生答案中给出了散列表的构造结果,表格形式清晰,关键字的存放位置与标准答案完全一致:地址0为11,地址2为14,地址3为7,地址5为20,地址6为9,地址9为3,地址10为18。装填因子计算正确,为7/11。因此该部分得满分6分。
(2)得分及理由(满分2分)
学生给出的查找关键字14的比较序列为“3→18→14”。这与标准答案的探查过程(先查地址9得3,再查地址10得18,最后查地址2得14)完全一致,只是表述形式不同。因此该部分得满分2分。
(3)得分及理由(满分2分)
学生答案中对于查找关键字8,确认查找失败时的散列地址给出了“4”。这是错误的。根据标准答案,探查序列应为:H0=2(关键字18),H1=3(关键字7),H2=6(关键字9),H3=0(关键字11),H4=7(空位),查找失败于地址7。学生答案“4”既不是探查序列中的地址,也不是最终的空位地址。因此该部分不得分,扣2分。
题目总分:6+2+0=8分

评分及理由
(1)得分及理由(满分2分)
学生回答:通用寄存器最多32个,理由正确(2^5=32)。shamt字段占5位的原因解释为“最多左移32位”,虽然表述不够精确(标准答案强调字长32位,左移范围不超过32,所以5位足够),但核心意思正确。因此给满分2分。
(2)得分及理由(满分3分)
学生回答:ALUBsrc=0正确;F=1FDB9753H正确;OF和CF的计算结果(均为1)正确,但解释中“1⊕0=1”的写法含义模糊(标准答案解释为最高位进位与次高位进位异或),不过结果正确;判断无符号整数溢出依据CF正确。因此给满分3分。
(3)得分及理由(满分2分)
学生回答:“slli是只需要rs1寄存器的值做为输入,Ext取值不影响”和“shamt移位量表示在指令中”这两点表述不准确。标准答案的关键是立即数(imm字段)高12位的最高位为0,因此零扩展和符号扩展效果相同。学生未抓住核心原因,因此扣1分。得1分。
(4)得分及理由(满分2分)
学生回答:Ext=1正确;ALUctr=000正确。因此给满分2分。
(5)得分及理由(满分2分)
学生回答:“低7位是0000011”正确(对应lw的操作码),但未进一步说明add和slli的高12位均为0,而该指令高12位非零,因此一定是lw。回答不够完整,但关键点(操作码)正确,给1分。
(6)得分及理由(满分2分)
学生回答:最终地址FFFF9CD4H正确(第二次识别结果),计算过程(FFFFA2D0 + FFFFA04H)正确,但第一次识别结果FFF9CD4H有误,第二次正确。根据“两次识别只要有一次正确则不扣分”的原则,给满分2分。
题目总分:2+3+1+2+1+2=11分

评分及理由
(1)得分及理由(满分3分)
学生第一次识别结果中明确写出“a 首地址 ;i: r2;sum: r1”,第二次识别结果也类似。标准答案为:数组a首地址在r3(编号03H),i在r2(02H),sum在r1(01H)。学生的回答中,i和sum的寄存器编号正确,但数组a的首地址未明确给出寄存器编号(只写了“D a 首地址”,可能为识别错误或表述不清)。考虑到题目要求根据指令序列推断,且指令“add r4, r3, r4”中基址寄存器为r3,结合上下文,学生可能意会但未明确写出r3。根据“禁止扣分”原则,对于识别不清或表述不全但不影响核心逻辑判断的情况,可以酌情给分。但此处a的首地址是问题明确要求的部分,学生未给出正确编号,应扣1分。得2分。
(2)得分及理由(满分5分)
学生计算了a[i]的地址(0013E004H)、a[i]的值(FFFFEC DCH,标准答案为FFFF ECDH,顺序书写差异,数值正确)以及sum的结果(0000000EH),这些核心计算全部正确。但问题还要求回答a[i]所在页的页号以及数组a至少存放在几页中,学生答案中完全没有涉及这两问。因此,对于已回答的部分,计算正确,应给予相应分数;对于未回答的部分,应扣除相应分数。该小题共5分,地址、a[i]值、sum值各占一定分值(通常各1分),页号和跨页问题各占1分。学生答对了前三项,得3分;后两项未答,扣2分。得3分。
(3)得分及理由(满分2分)
学生给出了指令“slli r4, r2, 2”的机器码(00212213H)和当数组a改为short类型时slli指令的汇编形式(slli r4, r2, 1)。这两项答案均与标准答案完全一致。得2分。
题目总分:2+3+2=7分

评分及理由
(1)得分及理由(满分3分)
得分:2分
理由:
(2)得分及理由(满分4分)
得分:4分
理由:
题目总分:2+4=6分

评分及理由
(1)得分及理由(满分2分)
得分:2分
理由:学生回答“是”,并给出了原因“因为读写互斥”。虽然“读写互斥”的表述不够精确(此处更准确的表述是“写操作之间需要互斥”或“对共享缓冲区的修改需要互斥”),但其核心思想正确,即多个进程执行C1(写操作)需要互斥访问缓冲区B,因此实现C1的代码是临界区。根据“思路正确不扣分”的原则,给予满分。
(2)得分及理由(满分3分)
得分:2分
理由:学生定义了一个信号量S,并给出了P1和P2的同步代码。其思路是使用信号量S来保证C1先于C2执行,这满足了题目中“B为空时才能执行C1”和“B非空时才能执行C2”的同步要求。然而,学生的方案存在一个逻辑错误:它只保证了执行的先后顺序,但没有保证对缓冲区B的互斥访问。P1执行C1(写)和P2执行C2(读)可能同时访问缓冲区,这违反了互斥原则,可能导致数据不一致。标准答案使用了两个信号量(mutex和full)来同时解决互斥和同步问题。因此,由于存在逻辑错误(缺少互斥保护),扣1分。
(3)得分及理由(满分3分)
得分:3分
理由:学生定义了一个信号量mutex,并给出了P1和P2执行C3的代码。在第二次识别结果中,代码正确地将C3操作置于wait(mutex)和signal(mutex)之间,这确保了任意时刻只有一个进程可以执行C3(修改缓冲区B),满足了互斥要求。题目中“假设B初始不为空”意味着没有额外的同步要求(如等待缓冲区非空),因此只需要互斥信号量即可。学生的答案正确、简洁,符合“定义尽可能少的信号量”的要求,思路与标准答案一致,给予满分。
题目总分:2+2+3=7分

评分及理由
(1)得分及理由(满分1分)
学生答案:OSPF。与标准答案一致,正确选择了适合大规模网络的内部网关协议。得1分。
(2)得分及理由(满分1分)
学生答案:16。标准答案为16,因为AS3内最大跳数不超过15,初始TTL至少为16才能确保分组不被丢弃。答案正确。得1分。
(3)得分及理由(满分2分)
学生答案:60s。标准答案为60秒,分析过程与标准答案一致(两次交换周期)。答案正确。得2分。
(4)得分及理由(满分3分)
学生答案:Update ebgp.. ibgp。
标准答案要求回答三部分:① R44向R13通告路由使用的BGP会话类型(eBGP);② 使用的BGP报文(Update);③ R13向R14和R15通告使用的BGP会话类型(iBGP)。
学生答案中“Update”正确回答了第二部分(1分)。
“ebgp..”和“ibgp”虽然表述不完整且格式有误,但根据上下文可以判断其意图是指eBGP和iBGP。结合题目问题顺序,可以认为学生答出了第一部分(eBGP)和第三部分(iBGP)。因此,三部分均正确。得3分。
(5)得分及理由(满分2分)
学生答案:R14下一跳R11,R15下一跳R13。标准答案为R14选择R11,R15选择R13(基于最短AS路径原则)。答案完全正确。得2分。
题目总分:1+1+2+3+2=9分