科目组合
计算机: 数据结构 、计算机组成原理 、操作系统 、计算机网络
int res=10000000;
int dian=0;
void findClose(BSTNode* root,int k){
if(root!=NULL){
if(res>=abs(root,k)){ //若当前节点与K的差的绝对值更小,则更新最小值和节点中的关键字
res=abs(root,k) ;
dian=root->data;
}
if(root->left!=NULL) findClose(root->left,k); //遍历左子树
if(root->right!=NULL) findClose(root->right,k); //遍历右子树
}
cout<<res;
cout<<dian;
(1)计算当前节点关键字与K只差的绝对值,若比最小值res更小,则更新最小值res和节点中的关键字dian,若树的左子树不为空,则遍历他的左子树,若树的右子树不为空,则遍历他的右子树,最后遍历完成,输出最小值res和节点中的关键字dian即可。
评分及理由
(1)得分及理由(满分4分)
得分:2分
理由:学生给出的基本思想描述了遍历二叉树并比较绝对值的过程,但存在以下问题:
1. 没有明确指出利用二叉搜索树中序遍历的递增特性,这是优化算法的关键。
2. 描述中仅提到“若树的左子树不为空,则遍历左子树”,这是一种前序遍历或任意遍历方式,没有利用二叉搜索树的性质,可能导致效率低下。
3. 基本思想不够精确,没有说明如何找到“所有”最小绝对值的结点(学生代码实际上只保存了一个结点,与题目要求不符)。
扣2分:思路不完整,未体现二叉搜索树特性,且未正确处理“所有结点”的要求。
(2)得分及理由(满分8分)
得分:3分
理由:代码存在多处逻辑错误和不符合题目要求的地方:
1. 函数调用错误:abs(root,k) 不是标准库函数,应为 abs(root->data - k)。
2. 遍历方式错误:使用前序遍历(先根后左右)而非中序遍历,无法利用二叉搜索树有序特性提前终止搜索。
3. 只保存一个结点:变量 dian 只保存一个结点的值,但题目要求输出“所有”绝对值最小的结点。
4. 输出位置错误:cout 语句写在函数内部,且每次递归都会执行,逻辑混乱。
5. 语法错误:函数调用后使用了中文分号 ;(应为英文分号 ;)。
6. 未处理空树情况:虽然检查了 root!=NULL,但递归调用时未判断子节点是否为空(代码中已判断,但写法冗余)。
扣5分:逻辑错误严重,未正确实现算法,且代码无法编译运行。
题目总分:2+3=5分
(1)不能 能
(2)Pj<Pk<Pi
(3)5个,分别是 2,1,3,4; 2,1,4,3; 2,3,1,4 ; 2,3,4,1; 2,4,3,1
(4)
评分及理由
(1)得分及理由(满分2分)
学生回答“不能 能”,与标准答案一致。第一问判断正确,第二问回答“能”符合题意(题目中“可以得到出栈序列吗?”应指能否得到任意一个出栈序列,标准答案为“能得到”)。得2分。
(2)得分及理由(满分2分)
学生回答“Pj<Pk<Pi”,即 \( P_j < P_k < P_i \)。标准答案为 \( P_i > P_k > P_j \),两者等价,均表示 \( P_i \) 最大,\( P_j \) 最小,\( P_k \) 居中。表述形式不同但逻辑关系正确。得2分。
(3)得分及理由(满分2分)
学生回答个数为5个,与标准答案一致。但所列序列中“2,4,3,1”是合法的出栈序列,而标准答案中为“2431”,两者一致;学生未列出“2314”,但列出了“2,3,1,4”,这是同一个序列。学生所列序列为:2134、2143、2314、2341、2431(顺序不同但集合相同)。因此答案正确。得2分。
(4)得分及理由(满分4分)
学生未作答,得0分。
题目总分:2+2+2+0=6分
(1) 16 16
(2)可以 不可以
(3)R2的内容是9B0EH,R9的内容是F001H
(4)①1110
② 11110100
③11111011
④0000 0010
评分及理由
(1)得分及理由(满分2分)
学生答案:16(主存单元宽度)、16(通用寄存器宽度)。
标准答案:主存单元宽度为8位(按字节编址),通用寄存器宽度为16位。
分析:题目明确说明“计算机c按字编址”,且为16位计算机,因此字长为16位,通用寄存器宽度通常与字长一致,故16位正确。但主存单元宽度通常指一个存储单元存放的位数,按字编址时每个存储单元存放一个字(16位),但常见理解中“主存单元宽度”可能指存储单元的位数,若按字编址应为16位。然而标准答案给出“主存单元的宽度为8位”,这可能是将“按字编址”误解为“按字节编址”或认为存储单元宽度为字节(8位)。根据题目信息“按字编址”和16位字长,主存单元宽度应为16位。但标准答案以8位为准,因此学生答案与标准答案不符。
扣分:学生答案与标准答案不一致,但按题目信息推理学生答案更合理。然而按标准答案评判,应判错误。
得分:0分(两个部分均错)。
(2)得分及理由(满分2分)
学生答案:可以、不可以。
标准答案:Op1和op2可以相同,op2和op3不可以相同。
分析:学生答案与标准答案完全一致。
得分:2分。
(3)得分及理由(满分2分)
学生答案:R2=9B0EH,R9=F001H。
标准答案:R2=9BCEH,R9=F001H。
分析:指令为0000 0010 1001 0001,根据格式:前4位0000为R型,rt=0010(R2),rs/num=1001(R9),op1=0001(加法)。执行R[rt] ← R[rt] op1 R[rs],即R2 ← R2 + R9。计算:ABCDH + F001H = 1 9BCEH(保留16位,进位舍去),结果为9BCEH。学生计算错误(9B0EH)。
扣分:结果错误。
得分:0分。
(4)得分及理由(满分4分)
学生答案:①1110;②11110100;③11111011;④0000 0010。
标准答案:①1110;②0000 0100;③1111 1011;④0000 0000 0010。
分析:
①取数指令:从M[R15](x的地址)取x到R0,op3应为1110(取数),学生答案正确。
②左移指令:实现16*x(左移4位),R型指令,格式为0000 rt rs/num op1,op1=0010(左移)。目标是将R0左移4位结果存回R0,即rt=0000(R0),rs/num=0100(移位位数4),故为0000 0000 0100 0010。学生答案11110100不符合R型指令格式(前4位应为0000),逻辑错误。
③加立即数指令:实现减5(即加-5),I型指令,op2=0100,rt=0000(R0),imm8为-5的补码(16位下-5的补码为1111 1011,但imm8为8位,故取低8位11111011)。学生答案11111011正确。
④存数指令:将R0存到y的地址(x地址+2,因为每个变量16位=2字节),M型指令,op3=1111(存数),offset为2(地址偏移),offset字段占12位(M型指令为4位op3+12位offset),故为0000 0000 0010。学生答案0000 0010只有8位,不符合12位offset要求,且缺少前导0,但若理解为省略前导0,则数值正确但位数不匹配。
扣分:②指令格式错误,④offset位数不准确。
得分:①和③正确各得1分,②和④错误各扣1分。
得分:2分。
题目总分:0+2+0+2=4分
(2)1位 0和1用来表示符号扩展和非符号扩展
(3)MARSrC= ALUA SrC= ALUB SrC= RegWr=
评分及理由
(1)得分及理由(满分1分)
学生未作答第一问,得0分。
(2)得分及理由(满分2分)
学生回答“1位”,并解释“0和1用来表示符号扩展和非符号扩展”。这与标准答案“至少需要1位”以及“通过1位即可实现符号拓展和零拓展”的核心思想一致,表述虽不完全相同但意思正确。因此得2分。
(3)得分及理由(满分4分)
学生列出了四个控制信号,但未给出任何具体取值。题目要求回答“取值各是什么”,学生答案为空,属于未完成作答。因此得0分。
(4)得分及理由(满分2分)
学生未作答第四问,得0分。
题目总分:0+2+0+0=2分
(1)1100
一个盘块可以存放4KB/4B=1024个盘块项
5*4KB<21460B<5*4KB+1024*4KB
偏移地址21460的一个字节数据在一级间接地址项中,最多需要读3个盘块
最多可以存放 5+1024+1024*1024+1024*1024*1024个文件
(2)将file的索引结点和文件全部删掉,再将dir1的索引结点删掉
评分及理由
(1)得分及理由(满分3分)
学生答案中:
综上,第(1)小题得0分。
(2)得分及理由(满分5分)
学生答案:“将file的索引结点和文件全部删掉,再将dir1的索引结点删掉”。
综合考虑,给予部分分数。得2分。
题目总分:0+2=2分
(1)3次 确认序号为1001
(2)C的拥塞窗口增加到9MSS,
(3)4次 FIN=1
评分及理由
(1)得分及理由(满分3分)
学生答案正确。TCP连接需要三次握手;C收到的SYN=1, ACK=1的TCP段(即第二次握手报文)的确认序号应为C的初始序号+1,即1000+1=1001。得3分。
(2)得分及理由(满分3分)
学生答案错误。题目描述C收到ACK=1, seq=2001, ack_seq=2001, rwnd=1000的确认段,这是C发送第一个数据段后收到的确认(ack_seq=2001确认了C发送的seq=1001的数据)。根据TCP拥塞控制慢启动过程,初始拥塞窗口为1 MSS,收到第一个ACK后拥塞窗口增加到2 MSS,收到第二个ACK(即题目所述确认段)后,拥塞窗口应增加到3 MSS(1500B)。发送窗口应取拥塞窗口和接收窗口的最小值,即min(1500B, 1000B)=1000B。学生回答“9MSS”错误,且未计算发送窗口。扣3分,得0分。
(3)得分及理由(满分2分)
学生答案部分正确。释放连接需要四次挥手,回答正确;FIN=1正确。但未给出seq和ack_seq的具体数值。根据题目,C向S上传文件,文件传输结束后C主动发起连接释放。C收到的最后一个TCP报文段应为S对C的FIN报文的确认(第四次挥手),其seq应为S的下一个序号(初始2000+已接收数据确认的增量),ack_seq应为C的最后一个序号+1。标准答案为seq=2001, ack_seq=3002。学生缺少关键信息。扣1分,得1分。
(4)得分及理由(满分1分)
学生未作答。得0分。
题目总分:3+0+1+0=4分