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

评分及理由
(1)得分及理由(满分4分)
学生作答中给出了算法的设计思想:先统计出度个数并放入Outdegree[]数组中,再统计入度数据放入Indegree[]数组中,最后统计出度大于入度的K顶点个数。这个思路与标准答案一致,都是通过遍历邻接矩阵计算每个顶点的出度和入度,然后比较出度和入度的大小关系。因此得4分。
(2)得分及理由(满分9分)
学生提供了C/C++代码实现,但存在以下问题:
因此本部分得6分。
题目总分:4+6=10分

评分及理由
(1)得分及理由(满分8分)
学生第一次识别结果给出了3个归并段,但具体内容与标准答案不符;第二次识别结果给出了5个归并段,且归并段划分错误。标准答案要求生成3个归并段,且每个归并段的内容应是有序的(通过置换-选择排序生成)。学生答案中归并段数量错误,且归并段内容未体现置换-选择排序的有序性,因此核心逻辑错误。但考虑到识别可能存在的错误(如数字识别错误),仅按归并段数量错误扣分。标准答案中归并段数量为3分(若正确给2分),每个归并段内容各2分(共6分)。学生归并段数量错误,扣2分;归并段内容全错,扣6分。本小题得0分。
(2)得分及理由(满分2分)
学生两次识别结果均回答最大值为m、最小值为n%m。标准答案为最大值为n、最小值为m。学生答案中最大值错误(应为n),最小值错误(应为m,但n%m可能小于m,且当n是m的倍数时n%m=0,不符合最小归并段长度要求)。因此逻辑错误,扣2分。本小题得0分。
题目总分:0+0=0分

评分及理由
(1)得分及理由(满分3分)
第一次识别:学生正确计算出数组a分为2个页面存储(得1分),正确指出会发生2次缺页异常(得1分),但页故障地址0042 2000H正确,另一个地址"02 0080000H"明显错误(应为0042 3000H),扣0.5分。第二次识别:页故障地址0042 2000H正确,但0042 2001H错误,扣0.5分。综合两次识别,页故障地址部分得0.5分。本小题总分:1+1+0.5=2.5分
(2)得分及理由(满分2分)
第一次识别:学生回答"您有"(可能为"没有"的误写),但解释"因为当前使用的数对接下来的再次访问,不符合时间局部性"思路正确,判断为误写不扣分。第二次识别:明确回答"不符合时间局部性"且理由正确。本小题得2分
(3)得分及理由(满分4分)
第一次识别:块内地址分析错误(说A11~A0,应为A4~A0),Cache组号分析错误(说A5~A0,应为A10~A5),a[1][0]虚拟地址0042 2100H正确(得1分),Cache组号3错误(应为8)。第二次识别基本无法识别有效内容。本小题仅得1分
(4)得分及理由(满分5分)
第一次识别:正确计算出数组a占用192个主存块(得1分),但Cache命中率计算错误(3/64远小于87.5%),两种循环方式都计算为3/64错误。第二次识别无有效内容。本小题仅得1分
题目总分:2.5+2+1+1=6.5分

评分及理由
(1)得分及理由(满分3分)
学生第一次识别结果为"004010B8",第二次识别结果为"0x044010B8"。标准答案为"004010B9H"。学生答案与标准答案相差1,考虑到识别误差(如8和9相似),且虚拟地址计算涉及指令长度推算,学生答案接近但未完全正确。根据误写不扣分原则,但核心逻辑未正确计算,扣1分。得2分。
(2)得分及理由(满分3分)
学生两次识别均回答"直接寻址",但标准答案为"相对寻址"。这是核心概念错误,未理解跳转指令的寻址方式原理。扣3分。得0分。
(3)得分及理由(满分3分)
第一问:学生第二次识别回答"立即寻址"正确,得1分。
第二问:学生回答"ecx中存放操作数"不明确,未正确指出ecx存放的是i×256,逻辑错误扣1分。
第三问:学生未回答大小端判断问题,扣1分。
本小题得1分。
题目总分:2+0+1=3分

评分及理由
(1)得分及理由(满分4分)
学生答案中指出了两个错误:① 共享变量第一行 "Bool lock = FALSE" 存在错误,应改为 "while (!lock)";② 退出区 "lock = TRUE" 错误,应改为 "lock = FALSE"。
对于第一个错误,学生的修改建议 "while (!lock)" 与标准答案 "while (key == TRUE)" 不一致,但逻辑上等价(因为 key 初始为 TRUE,且通过 swap 与 lock 交换值),思路正确,不扣分。
对于第二个错误,学生正确指出退出区应改为 "lock = FALSE",与标准答案一致。
但学生未明确指出进入区中的 if 语句应改为 while 语句(仅通过 "while (!lock)" 间接涉及),且未完整修正代码。根据标准答案,需要修改两处:① while (key == TRUE) swap key, lock; ② lock = FALSE;。学生只完整修正了第二处,第一处修正不完整,扣2分。
得分:2分
(2)得分及理由(满分3分)
学生正确回答 "不可以",并指出原因是 "swap 是原子操作,而 newSwap() 在多线程运行时能导致公共资源访问时被修改,两个操作也修改访问资源时可能出现错误"。
该理由与标准答案一致,即 newSwap() 不是原子操作,可能导致多个线程同时进入临界区。学生答案清晰正确。
得分:3分
题目总分:2+3=5分