科目组合
计算机: 数据结构 、计算机组成原理 、操作系统 、计算机网络
1):
核心依据:二叉搜索树的本质特征是 “对任意节点,其左子树中所有节点的值均小于该节点值,右子树中所有节点的值均大于该节点值”,而非仅约束直接左右孩子。
范围约束法:通过递归为每个节点设定合法取值范围,确保整个子树满足 BST 规则:
对当前节点,其值必须严格大于左边界(lower)且严格小于右边界(upper);
左子树的节点值需在 “父节点的左边界” 与 “当前节点值” 之间(即(lower, val));
右子树的节点值需在 “当前节点值” 与 “父节点的右边界” 之间(即(val, upper))。
空节点处理:顺序存储中以值为-1表示空节点,空节点默认满足 BST 条件。
递归逻辑:从根节点(索引 0)开始,初始范围设为(-∞, +∞)(用INT_MIN和INT_MAX表示),逐层递归检查左、右子树(索引分别为2*i+1和2*i+2),最终通过左右子树的合法性共同判定当前树是否为 BST。
该设计通过传递动态范围,严格约束了所有子节点的取值,避免了仅判断直接孩子而忽略深层节点的逻辑漏洞。
2):
bool is_SearchTree(SqBiTree& root, int i, int lower, int upper) {
// 空节点(值为-1)视为满足条件
if (root->SqBiTNode[i] == -1) {
return true;
}
int val = root->SqBiTNode[i];
// 当前节点值需严格在(lower, upper)范围内
if (val <= lower || val >= upper) {
return false;
}
// 左子树:索引为2*i+1,值需在(lower, val)范围内
bool leftValid = is_SearchTree(root, 2*i+1, lower, val);
// 右子树:索引为2*i+2,值需在(val, upper)范围内
bool rightValid = is_SearchTree(root, 2*i+2, val, upper);
return leftValid && rightValid;
}
// 对外接口:从根节点(索引0)开始判断,初始范围为(-∞, +∞)
bool is_SearchTreeTest(SqBiTree& root) {
// 假设节点值为整数,用INT_MIN和INT_MAX表示正负无穷
return is_SearchTree(root, 0, INT_MIN, INT_MAX);
}
评分及理由
(1)得分及理由(满分4分)
得分:4分
理由:学生的设计思想完全正确。准确指出了二叉搜索树的本质特征(左子树所有节点值小于当前节点,右子树所有节点值大于当前节点),提出了范围约束法的递归思路,明确了空节点(-1)的处理方式,并正确描述了递归过程中上下界的传递规则。思路与标准答案的方法一完全一致,表述清晰完整。
(2)得分及理由(满分9分)
得分:7分
理由:代码整体框架正确,但存在以下逻辑错误:
1. 函数参数声明中使用了引用传递(SqBiTree&),但在C语言中不支持引用传递,应改为指针传递(SqBiTree*)或直接传递结构体(扣1分)
2. 缺少对数组索引越界的检查,当索引i超过ElemNum时可能访问非法内存(扣1分)
3. 在初始边界值处理上,使用INT_MIN和INT_MAX可能存在边界值问题,当节点值恰好等于INT_MIN或INT_MAX时可能误判(扣1分)
其他部分逻辑正确,包括递归终止条件、范围检查、左右子树递归调用等核心逻辑都与标准答案一致。
题目总分:4+7=11分
1):利用维护大根堆,来保留n中的最小的10个数,首先取最初的10个元素构建大根堆,接着每次遍历一个元素都要和堆顶元素进行比较如果小于则删除堆顶元素并插入该元素然后调整堆使其满足大根堆定义,一直往后进行同样的操作直到遍历完100000个元素,最后大根堆留下的元素就是最小的10个数;
3):时间复杂度是o(nlogn),空间复杂度是o(1);
评分及理由
(1)得分及理由(满分5分)
得分:5分
理由:学生描述的算法思想与标准答案中的方法二(大根堆方法)完全一致。具体步骤包括:取前10个元素构建大根堆,然后遍历剩余元素,若当前元素小于堆顶则替换堆顶并调整堆,最终堆中保留最小的10个数。算法思想正确且描述清晰,符合题目要求。
(2)得分及理由(满分5分)
得分:3分
理由:学生给出的时间复杂度O(n log n)不正确。根据标准答案,使用大根堆方法的时间复杂度应为O(n),因为构建初始堆的时间为O(k)(k=10为常数),后续每个元素的比较和堆调整时间为O(log k),总时间为O(n log k) = O(n)(因为k=10是常数)。空间复杂度O(1)正确,因为算法是原地操作。由于时间复杂度分析错误,扣2分。
题目总分:5+3=8分
1):SF的逻辑表达式是SF=F15,A加B时OF的逻辑表达
2):因为ALU需要两个输入端有效才可以进行运算,而ALU不能存储数据必须用Y来暂存一个输入,让一个输入有效,同时另一个输入从另一端输入此时可以利用ALU进行计算
设置Z是因为ALU的输出不能直接送到总线上,否则会通过总线干扰Y中的数据,造成影响导致结果错误;
3):GPRs中最多有16个通用寄存器,rs和rd来自图中的IR;rd应该连接地址译码器
4):(PC)->MAR, PCout,MARin
M(MAR)->MDR, MDRin,Read
(MDR)->IR MDRout ,IRin
至少需要7个时钟周期
5):控制信号由CU生成,图中FR,IR的输出信号会连到该部件的输入端;
评分及理由
(1)得分及理由(满分3分)
学生答案中给出了SF=F15,正确,得1分;但未给出A加B和A减B时OF的逻辑表达式,缺少两个表达式,各扣1分。因此本小题得1分。
(2)得分及理由(满分3分)
学生解释了设置Y的原因(ALU需要两个输入,总线一次只能传输一个数据,需暂存一个输入),正确,得1.5分;解释了设置Z的原因(防止ALU输出直接送到总线干扰Y中数据),虽然表述不够严谨(实际是因为总线被占用,不能同时传输两个数据),但基本正确,得1.5分。因此本小题得3分。
(3)得分及理由(满分3分)
学生正确回答GPRs最多有16个寄存器(rs和rd为4位),得1分;正确指出rs和rd来自IR,得1分;正确指出rd连接地址译码器,得1分。因此本小题得3分。
(4)得分及理由(满分3分)
学生给出了取指令阶段的控制信号序列,步骤正确,但未明确区分时钟周期,且未说明“1→R”信号,扣0.5分;正确回答至少需要7个时钟周期,得1.5分。因此本小题得2.5分。
(5)得分及理由(满分3分)
学生正确回答控制信号由CU产生,得1.5分;正确指出IR和FR的输出信号连接到CU输入端,得1.5分。因此本小题得3分。
题目总分:1+3+3+2.5+3=12.5分
1):这3个字段的名称格式是柱面号,磁头号,扇区号;
对于此磁盘来说柱面号占用15位,磁头号占用3位,扇区号占用9位
2):一个扇区的平均访问时间是 平均寻道时间+平均旋转延迟时间+数据传输时间
平均旋转延迟时间=(60/7200)/2=4.17ms
数据传输时间=(60/7200)/500=0.02ms
所以一个扇区的平均访问时间约为4.17+0.02+5=9.19ms
3):64次总线请求;DMA控制器可以获得总线使用权;因为DMA如果不能得到及时的响应,它所传送的缓冲区的数据将会丢失.
评分及理由
(1)得分及理由(满分3分)
学生正确回答了三个字段的名称(柱面号、磁头号、扇区号),得1分;柱面号15位正确,得0.5分;磁头号3位正确,得0.5分;扇区号9位正确,得0.5分。但未说明计算依据(如log₂计算),扣0.5分。本小题得2.5分。
(2)得分及理由(满分2分)
学生正确列出了平均访问时间的三个组成部分(寻道时间、旋转延迟时间、传输时间),得0.5分;平均寻道时间5ms正确,得0.5分;平均旋转延迟时间4.17ms计算正确,得0.5分;数据传输时间0.02ms计算正确(与标准答案0.017ms的差异在合理范围内),得0.5分。最终结果9.19ms正确,不扣分。本小题得2分。
(3)得分及理由(满分3分)
第一问:学生正确回答64次总线请求,得1分;第二问:学生正确回答DMA控制器可以获得总线使用权,得0.5分;第三问:学生解释原因时提到“数据将会丢失”,但未明确说明“周期挪用方式下DMA优先级更高”这一关键点,答案不完整,扣0.5分。本小题得2分。
题目总分:2.5+2+2=6.5分
1):stu的目录项是
course 2
doc 10
2):30
3):因为course1的索引节点号是10所以用直接地址项即可,所以要读2次盘分别是10,30;
4):6MB/4KB=1.5x1024=1536个地址项直接地址项是10个,一级地址项可以指示1K个地址项,此时还需要一个二级地址项
所以为了存取course2需要使用该文件索引节点的直接,一级间接以及二级间接地址项
评分及理由
(1)得分及理由(满分2分)
学生正确列出了目录项内容:course 2 和 doc 10,与标准答案一致。得2分。
(2)得分及理由(满分1分)
学生正确得出x的值为30,与标准答案一致。得1分。
(3)得分及理由(满分2分)
学生回答需要读2次盘,分别是10和30号磁盘块,理由是通过索引节点找到文件内容,与标准答案思路一致。但学生未明确说明第一次读盘是读索引节点所在的磁盘块,第二次读盘是读文件内容所在的磁盘块,不过核心逻辑正确。得2分。
(4)得分及理由(满分2分)
学生计算文件需要1536个磁盘块,并分析直接地址项10个,一级间接地址项1024个,但错误地认为还需要二级间接地址项。实际上,直接和一级间接共可支持1034个磁盘块,而1536 > 1034,因此需要二级间接地址项。但学生错误地认为还需要直接地址项(直接地址项已用完),且未正确说明一级和二级间接地址项的使用范围。根据标准答案,只需使用一级和二级间接地址项。因此扣1分。得1分。
题目总分:2+1+2+1=6分
semaphore AC=0,BC=0,CD=0,CE=0,EF=0;//AC用来指示A与C的同步关系的;BC用来指示B与C的同步关系的;CD用来指示C与D的同步关系的;CE用来指示C与E的同步关系的;EF用来指示E与F的同步关系的;0代表前面的事未发生,1代表发生;
T1(){
执行;
signal(AC);
wait(CE);
执行;
signal(EF);
wait(EF);
执行;
}
T2(){
执行;
signal(BC);
执行;
signal(BC);
wait(AC);
wait(BC);
执行;
signal(CD);
signal(CE);
wait(CD);
执行;
}
评分及理由
(1)信号量定义部分:得分及理由(满分2分)
学生正确定义了5个信号量AC、BC、CD、CE、EF,初值均为0,并正确说明了每个信号量的作用。信号量定义完全正确,得2分。
(2)线程T1实现:得分及理由(满分3分)
线程T1中:A操作后signal(AC)正确;E操作前wait(CE)正确;E操作后signal(EF)正确;F操作前wait(EF)正确。但存在以下问题:
扣1分,得2分。
(3)线程T2实现:得分及理由(满分3分)
线程T2中存在严重逻辑错误:
由于存在多余的signal(BC)和多余的"执行"语句,这会导致逻辑错误,扣2分,得1分。
题目总分:2+2+1=5分
1):设备一是:交换机,设备二是:集线器;
2):(5.12-1.51x2)/2=1.05us,此时最远距离应该是 2x10^8 X1.05X10^(-6)=210m
3):M是DHCP发现报文,路由器 E0 接口可以收到封装 M 的以太网帧,S 向DHCP 服务器转发的封装M的以太网帧的目的MAC地址是FF-FF-FF-FF-FF-FF
4):地址1:00-11-11-11-11-E1
地址2:00-11-11-11-11-C1
地址3是:00-11-11-11-11-D1
评分及理由
(1)得分及理由(满分2分)
学生回答设备1是交换机、设备2是集线器,与标准答案完全一致。根据题目描述,H1与H2属于同一广播域但不同冲突域,说明设备1是交换机;H2和H3属于同一冲突域,说明设备2是集线器。答案正确,得2分。
(2)得分及理由(满分1分)
学生计算过程为:(5.12-1.51×2)/2=1.05μs,最远距离=2×10^8×1.05×10^(-6)=210m。虽然计算步骤与标准答案不同,但结果正确。标准答案使用公式64B=(1.51μs+D/(2×10^8))×100Mbps,而学生使用了等效计算(5.12μs对应64B在100Mbps下的传输时间)。思路正确且结果准确,得1分。
(3)得分及理由(满分3分)
学生回答M是DHCP发现报文、路由器E0接口可以收到封装M的以太网帧、目的MAC地址是FF-FF-FF-FF-FF-FF,这三部分均与标准答案一致。DHCP发现报文是广播,E0在同一广播域内能收到,转发时目的MAC仍是全1广播地址。答案完整正确,得3分。
(4)得分及理由(满分3分)
学生回答地址1:00-11-11-11-11-E1、地址2:00-11-11-11-11-C1、地址3:00-11-11-11-11-D1,与标准答案完全一致。在H5接收的802.11帧中,地址1是接收端(H5)MAC、地址2是AP的MAC、地址3是源端(H4)MAC。答案正确,得3分。
题目总分:2+1+3+3=9分