科目组合
计算机: 数据结构 、计算机组成原理 、操作系统 、计算机网络
(1)中序遍历得到有序序列,计算相邻的差值(2)
#include <stdio.h>
#include <stdlib.h>
#include <limits.h>
// 定义结果存储:由于可能存在多个差值相等的结点,使用数组记录
int resultNodes[100];
int count = 0;
int minDiff = INT_MAX;
/**
* 核心递归函数:中序遍历寻找最小差值结点
* @param T 当前处理的树结点指针
* @param K 目标整数
*/
void findMinDiffNodes(BSTNode* T, int K) {
if (T == NULL) return;
// 1. 递归进入左子树
findMinDiffNodes(T->left, K);
// 2. 核心处理逻辑:计算当前绝对差
int currentDiff = abs(T->data - K);
if (currentDiff < minDiff) {
// 情况一:发现更小的差值,重置结果集
minDiff = currentDiff;
count = 0;
resultNodes[count++] = T->data;
}
else if (currentDiff == minDiff) {
// 情况二:发现相等的最小差值,加入结果集
resultNodes[count++] = T->data;
}
// 3. 递归进入右子树
findMinDiffNodes(T->right, K);
}
/**
* 外部调用接口
*/
void solve(BSTNode* T, int K) {
// 初始化全局状态
minDiff = INT_MAX;
count = 0;
if (T == NULL) {
printf("树为空\n");
return;
}
findMinDiffNodes(T, K);
// 输出结果
printf("最小差值绝对值为: %d\n", minDiff);
printf("对应的结点关键字为: ");
for (int i = 0; i < count; i++) {
printf("%d ", resultNodes[i]);
}
printf("\n");
}
评分及理由
(1)得分及理由(满分4分)
学生给出的基本思想是“中序遍历得到有序序列,计算相邻的差值”。这个描述过于简略且不准确。题目要求是查找与K之差的绝对值最小的所有结点,而不是计算相邻结点的差值。学生的描述未能清晰说明如何利用二叉搜索树的有序性(中序遍历)来高效地找到与K最接近的结点,也没有提及如何更新和比较绝对值差,以及如何处理多个结果的情况。因此,该基本思想表述不完整,存在关键信息缺失。扣2分。
得分:2分
(2)得分及理由(满分8分)
学生的代码实现整体思路正确:通过中序遍历二叉搜索树,计算每个结点与K的绝对差,并动态更新最小差值`minDiff`,同时用一个数组`resultNodes`收集所有达到该最小差值的结点关键字。这正确地解决了“查找所有结点”的要求。
然而,代码存在以下逻辑错误和问题:
综合来看,代码核心算法功能正确,但因其与(1)中表述的思想存在逻辑矛盾,需扣分。
得分:7分
题目总分:2+7=9分
(1)2 3 1 6 4 7 5 9 8
(2)不合法,错误的 ,后劲不能后出
(3)5
(4)n=k-1,出站总数为m个
评分及理由
(1)得分及理由(满分2分)
学生给出了一个具体的序列“2 3 1 6 4 7 5 9 8”,这与题目中给出的序列“{2,3,1,6,4,7,5,4,8}”不一致(学生序列中第8、9位是9、8,而原题是4、8,且原题有两个4,显然非法)。学生没有直接回答“可以得到出栈序列吗?”,而是给出了一个自己构造的序列,这属于答非所问。题目要求判断给定序列是否合法,学生未做判断,因此不得分。得分:0分。
(2)得分及理由(满分2分)
学生回答“不合法,错误的 ,后劲不能后出”。这描述非常模糊,没有明确指出三个元素的大小关系。题目要求找出导致序列非法的 \(P_i, P_j, P_k\) 的大小关系。学生回答不符合要求,且“后劲不能后出”表述不清,无法判断其正确性。得分:0分。
(3)得分及理由(满分2分)
学生回答“5”,与标准答案一致。虽然未列出具体序列,但题目问“个数有多少个”,直接给出数字5是正确的。得分:2分。
(4)得分及理由(满分4分)
学生回答“n=k-1,出站总数为m个”。这只是复述了题目条件,没有回答“以1开头的出栈序列个数”、“以2开头的出栈序列个数”和“总共的出栈序列有多少个”这三个问题。因此,该部分答案不完整,未给出任何有效结果。得分:0分。
题目总分:0+0+2+0=2分
(1)8 16
(2)op1和2可以相同,处于不同位置,不冲突
op2和op3不可以,处于同位置,有冲突
(3)r2=9bceh,r9=F001H
(4)程序填空
评分及理由
(1)得分及理由(满分2分)
学生答案:8 16。标准答案:主存单元宽度为8位(按字节编址),通用寄存器宽度为16位(与机器字长一致)。学生答案与标准答案完全一致,得2分。
(2)得分及理由(满分2分)
学生答案:op1和2可以相同,处于不同位置,不冲突;op2和op3不可以,处于同位置,有冲突。标准答案:Op1和op2可以相同,op2和op3不可以相同。学生答案正确阐述了原因(编码位置不同/相同导致冲突),结论与标准答案一致,得2分。
(3)得分及理由(满分2分)
学生答案:r2=9bceh,r9=F001H。标准答案:R2内容为9BCEH,R9内容为F001H。学生答案计算结果正确,书写格式(大小写)不影响判读,得2分。
(4)得分及理由(满分4分)
学生未填写具体答案。标准答案为:①1110;②0000 0100;③1111 1011;④0000 0000 0010。由于学生未作答,本题得0分。
题目总分:2+2+2+0=6分
(1)多路选择器
(2)extop的最少位数 区分拓展方式
(3)0 0 1 0
(4)2 1 1 1 不可以相同,extop是无符号数,m形指令是带符号数,拓展方式不同
评分及理由
(1)得分及理由(满分1分)
学生答案“多路选择器”与标准答案完全一致。得1分。
(2)得分及理由(满分2分)
学生答案“extop的最少位数 区分拓展方式”表述不完整且不准确。题目要求回答“EXTOP 至少有几位?为什么?”,标准答案明确为“1位”,并解释了原因(1位即可实现符号拓展和零拓展)。学生答案仅模糊地提到“区分拓展方式”,没有给出具体位数,也没有解释为什么该位数足够。因此,该部分答案不完整,逻辑不清晰。扣2分,得0分。
(3)得分及理由(满分4分)
学生答案“0 0 1 0”与标准答案“MARsrc=0,ALUAsrc=0,ALUBsrc=1,RegWr=0”完全一致,顺序也正确。得4分。
(4)得分及理由(满分2分)
学生答案“2 1 1 1”与标准答案“ALUBsrc=2,RegWsrc=1,RegDst=1,RegWr=1”完全一致。对于第二问,学生答案“不可以相同,extop是无符号数,m形指令是带符号数,拓展方式不同”与标准答案“不可以相同,因为左移指令的 shamt需零扩展,而 M 型 offset 需符号扩展,扩展方式不同”的核心意思一致,都指出了扩展方式不同。表述上“extop是无符号数”虽不严谨(Extop是控制信号,不是数据),但结合上下文可以理解其意指“左移指令的立即数是无符号数”。因此,该部分答案正确。得2分。
题目总分:1+0+4+2=7分
(1)22 7 130 10 180 20
(2)减少 增大
评分及理由
(1)得分及理由(满分5分)
学生答案中“22 7”与标准答案“发生22次时间中断,7次调度”一致,得2分。
但学生给出的四个进程第一次调度时刻“130 10 180 20”存在严重错误。根据标准答案分析:P2在10ms首次调度,P4在20ms首次调度,P1在90ms首次调度,P3在140ms首次调度。学生答案中P1的130ms、P2的10ms、P3的180ms、P4的20ms,只有P2和P4的时刻正确,P1和P3的时刻错误,且顺序混乱。因此,这部分扣3分。
本小题得分为:2分。
(2)得分及理由(满分2分)
学生答案“减少 增大”与标准答案完全一致,得2分。
题目总分:2+2=4分
(1)131 2 131072
(2)删除目录的dir1的元数据操作
评分及理由
(1)得分及理由(满分3分)
学生答案:131 2 131072
标准答案:盘块号131,最多读2个盘块,最多文件数2¹⁷=131072个。
分析:
该小题答案完全正确,得满分3分。
(2)得分及理由(满分5分)
学生答案:删除目录的dir1的元数据操作
标准答案:①释放file的索引节点和占用的盘块,并修改相应位图为0;②删除dir目录中dir1的目录项,并更新位图。
分析:
该小题答案基本不得分,考虑到可能隐含“需要操作”的意思,但未具体化,扣4分,得1分。
题目总分:3+1=4分
(1)3 1001
(2)1500b,1000b
(3)4 2001 3002
(4)4rtt
评分及理由
(1)得分及理由(满分2分)
学生答案“3 1001”与标准答案“三次握手。确认序号是 1001”完全一致。得2分。
(2)得分及理由(满分3分)
学生答案“1500b,1000b”与标准答案“C的拥塞窗口增加到 3MSS=1500B;C的发送窗口设置为 min{1500B,1000B}=1000B”完全一致。得3分。
(3)得分及理由(满分2分)
学生答案“4 2001 3002”与标准答案“四次挥手;FIN=1,seq=2001,ack_seq=3002”在核心内容上一致。标准答案明确写出了FIN=1,学生答案虽未写出,但根据上下文和TCP挥手过程,其给出的seq和ack_seq值正确,且“4”表示四次挥手正确。因此不扣分。得2分。
(4)得分及理由(满分2分)
学生答案“4rtt”与标准答案“4RTT=20ms”在RTT次数上一致。标准答案给出了具体时间20ms,学生答案未给出。但题目问的是“时间是多少”,标准答案以“4RTT=20ms”的形式给出,学生只答出“4rtt”,缺少了具体时间计算。考虑到RTT=5ms是已知条件,且“4rtt”已正确表达了核心的时间度量,此处给予部分扣分,扣1分。得1分。
题目总分:2+3+2+1=8分