科目组合
数据结构 、计算机组成原理 、操作系统 、计算机网络
1)通过二叉树的中序遍历,可以得出他的中缀表达式。如果一个结点有孩子且不是根节点,那就先输出“(”再访问他的左孩子。当一个结点没有孩子,输出该节点。接下来再遍历他的右子树。当右子树遍历到最后一个结点,说明这一段表达式结束,输出“)”。
2)
void expressionMid(BTree T, int depth){
if(T == NULL) return; //空树返回
if(depth > 0 && T->left != NULL || T->right != NULL) printf("(");
expressionMid(T->left, depth+1);
printf(T->data);
expressionMid(T->right, depth+1);
if(depth > 0 && T->left != NULL || T->right != NULL) printf(")");
}
评分及理由
(1)得分及理由(满分5分)
得分:3分
理由:学生基本理解了中序遍历的思想,提到了通过中序遍历输出表达式,并考虑了括号的添加。但是描述不够准确和完整:
- 没有明确说明根节点不需要加括号
- 对括号添加条件的描述比较模糊("不是根节点"、"当右子树遍历到最后一个结点"等表述不准确)
- 没有清晰说明深度参数的作用
基本思路正确但表达不够严谨,扣2分。
(2)得分及理由(满分10分)
得分:6分
理由:代码实现了基本的中序遍历框架,但存在以下逻辑错误:
- 括号添加条件有误:`depth > 0 && T->left != NULL || T->right != NULL` 存在运算符优先级问题,应该是 `(depth > 0 && (T->left != NULL || T->right != NULL))`
- 缺少对叶子节点的特殊处理,标准答案中对叶子节点直接输出,不添加括号
- 函数参数应该是 `BTree*` 而不是 `BTree`
- `printf(T->data)` 语法错误,应该是 `printf("%s", T->data)`
- 缺少主调用函数
代码框架基本正确,但存在多处逻辑错误和语法问题,扣4分。
题目总分:3+6=9分
1) A->D, D->E, E->C, C->B
2)是的
3)当一个连通图中环路没有相同权值的时候MST唯一。
评分及理由
(1)得分及理由(满分4分)
学生给出的边序列为:A→D, D→E, E→C, C→B。这与标准答案(A,D)、(D,E)、(C,E)、(B,C)在边的选择上完全一致,且顺序也正确。虽然学生使用了箭头符号表示,但表达的含义与标准答案相同。因此本题得满分4分。
(2)得分及理由(满分2分)
学生回答"是的",表示认为图G的MST是唯一的,这与标准答案一致。因此本题得满分2分。
(3)得分及理由(满分2分)
学生回答"当一个连通图中环路没有相同权值的时候MST唯一",这与标准答案"当带权连通图的任意一个环中所包含的边的权值均不相同时,其MST是唯一的"在含义上是一致的。虽然表述略有不同,但核心思想正确。因此本题得满分2分。
题目总分:4+2+2=8分
1)n=0时,f1会出现死循环,因为i是不断递增的,n-1所表示的是最大的无符号整数,无论怎么加都不可能超过他,所以会死循环。如果变成有符号整数,不会死循环,因为出现负数,直接就结束了。
2)float是浮点数,最大的表示范围是2^23,刚好不越界,所以相同。机器数分别是:00FF FFFFH和4B7F FFFFH
3) float在32位的时候最多有23位尾数,f2(24)已经溢出。
4)总共有32位,f1(31)则是有32个1,符号位是1,因此是负数。最大的n是30.
5)f2是float,尾数全为0,符号位是0,表示正无穷。最大的n是23。
评分及理由
(1)得分及理由(满分4分)
学生正确解释了n=0时死循环的原因:无符号整数n-1为最大值,条件永真。同时正确指出改为int后不会死循环,因为n-1=-1,条件不成立。但未明确说明无符号比较和带符号比较的区别,解释略显简略。扣1分。
得分:3分
(2)得分及理由(满分3分)
学生正确指出f1(23)和f2(23)返回值相等,并给出了正确的机器数。但解释部分“float最大的表示范围是2^23”表述不准确(应为23位尾数),不过不影响核心结论。扣0.5分。
得分:2.5分
(3)得分及理由(满分1分)
学生提到“float在32位时最多有23位尾数”正确,但将现象归因于“溢出”不准确(实际是舍入导致数值增大)。扣0.5分。
得分:0.5分
(4)得分及理由(满分2分)
学生正确解释f1(31)返回-1的原因(32位1解释为负数),并正确给出最大n=30。答案完整准确。
得分:2分
(5)得分及理由(满分3分)
学生正确解释7F80 0000H为正无穷,但未说明阶码全1、尾数全0的格式要求。第二问最大n=23错误(应为126),第三问最大n=23正确。第二问扣1分,第三问给满分。
得分:2分
题目总分:3+2.5+0.5+2+2=10分
1)CICS,因为指令长度不同长度
2)
3)0
4)不能,因为f2是float浮点数,不能通过简单的位移进行计算。
评分及理由
(1)得分及理由(满分2分)
得2分。学生正确判断为CISC,理由"指令长度不同"符合标准答案中"指令长短不一"的描述,虽然表述不够完整但核心观点正确。
(2)得分及理由(满分2分)
得0分。学生未给出任何计算过程,也未得出具体字节数,完全缺失答案内容。
(3)得分及理由(满分3分)
得0分。学生仅给出结果"0",但正确答案应为1。没有计算过程,且结果错误,属于逻辑错误。
(4)得分及理由(满分3分)
得2分。学生正确判断"不能",理由"f2是float浮点数,不能通过简单的位移进行计算"基本正确,但解释不够详细,未提及阶码部分和无最高有效数位等关键点。
题目总分:2+0+0+2=4分
1)
2)
3)
评分及理由
(1)得分及理由(满分1分)
得分:0分
理由:学生未给出任何回答,完全空白,因此不得分。
(2)得分及理由(满分2分)
得分:0分
理由:学生未给出任何回答,完全空白,因此不得分。
(3)得分及理由(满分4分)
得分:0分
理由:学生未给出任何回答,完全空白,因此不得分。
题目总分:0+0+0=0分
//复数的结构类型定义
typedef struct
{
float a;
float b;
}cnum;
cnum x,y,z; //全局变量
//计算两个复数之和
cnum add( cnum p,cnum q)
{
cnum s;
s.a=p.a+q.a;
s.b=p.b+q.b;
return s;
}
semaphore m_x=1, m_y=1, m_z=1;
semaphore mutex = 1;
thread1
{
wait(mutex);
wait(x);
wait(y);
cnum w;
w=add(x,y);
signal(x);
signal(y);
signal(mutex);
}
thread2
{
wait(mutex);
wait(z);
wait(y);
cnum w;
w=add(y,z);
signal(z);
signal(y);
signal(mutex);
}
thread3
{
wait(mutex);
wait(z);
wait(y);
cnum w;
w.a=1;
w.b=2;
z=add(z,w);
y=add(y,w);
signal(z);
signal(y);
signal(mutex);
}
评分及理由
(1)信号量定义得分及理由(满分3分)
学生定义了m_x=1, m_y=1, m_z=1和mutex=1四个信号量。但存在以下问题:
扣2分,得1分
(2)thread1代码得分及理由(满分1分)
thread1中:
扣1分,得0分
(3)thread2代码得分及理由(满分2分)
thread2中:
扣2分,得0分
(4)thread3代码得分及理由(满分2分)
thread3中:
扣2分,得0分
题目总分:1+0+0+0=1分
主要问题:学生使用了粗粒度的全局互斥锁,严重降低了并发性,没有实现题目要求的"最大程度地并发执行"。同时信号量的使用存在逻辑错误,对共享变量的保护方式不正确。
1)4个。(S0,0), (S1,0), (S2,0), (S3,0)
2)最多还可以发送2个。第一个帧是(S4,3);最后一个是(S4,3)
3)2个
评分及理由
(1)得分及理由(满分3分)
学生回答4个帧(S0,0、S1,0、S2,0、S3,0),但标准答案为3个帧(S0,0、S1,0、S2,0)。在GBN协议中,甲方只能断定乙方正确接收了已被确认的帧。图中甲方收到R2,3,表示乙方期望接收序号3,说明乙方已正确接收序号0、1、2的帧,但未确认序号3。学生错误地将S3,0计入,属于逻辑错误。扣2分,得1分。
(2)得分及理由(满分3分)
学生回答最多发送2个帧,第一个和最后一个均为S4,3。标准答案为5个帧(第一个S5,2,最后一个S1,2)。GBN发送窗口大小由序号空间决定(3比特,窗口大小为7),甲方当前已发送到序号4,收到R2,3后确认序号2及之前的帧,发送窗口向前滑动,可用序号为3~7和0~1(模8),共5个帧。学生答案中帧数量、起始和结束帧均错误,且未理解窗口滑动机制。扣3分,得0分。
(3)得分及理由(满分2分)
学生回答重发2个帧,但未指定第一个重发帧。标准答案为重发3个帧(第一个S2,3)。图(b)中甲方在t1时刻收到R2,3,但之前已超时重发S2,0,表明序号2及之后的帧(S2,0、S3,0、S4,0)需重发。学生答案帧数量错误,且未给出第一个重发帧。扣2分,得0分。
(4)得分及理由(满分1分)
学生未回答此问题。扣1分,得0分。
题目总分:1+0+0+0=1分