科目组合
计算机: 数据结构 、计算机组成原理 、操作系统 、计算机网络
1)初始化 设置indegree数组统计每个结点的入度 visited数组判断每个节点是否被访问过 每一轮从所有没被访问过的顶点中选出一个入度零的顶点 (如果有多个入度零的顶点说明不唯一返回0) 删去对应顶点的相关边 更新入度 再重复选出一个入度零顶点 至所有顶点都被访问 则存在唯一拓扑序列 返回1 否则返回0
2)typedef struct //图的类型定义
{
int numVertices, numEdges; //图的顶点数和有向边数
char verticesList[MAXV]; //项点表,MAXV为以定义常量
int Edge[MAXV][MAXV]; //知接矩阵
}MGraph;
int uniquely(MGraph G){
int visited[G.numVertices];
int indegree[G.numVertices];
for(int i = 0; i < G.numVertices ; i++){
visited[i]=0;//所有节点初始未被访问
}
//计算所以节点入度
for(int i = 0; i < G.numVertices ; i++){
for(int j = 0 ; j < G.numVertices ;j++){
if(Edge[i][j]!=0){
indegree[j]++;//入度初始化
}
}
}
//拓扑删除
for(int k = 0 ; k<G.numVertices ;k++){
int num = -1;
int count = 0;
//找所有入度0顶点
for(int i = 0 ; i<G.numVertices ;i++){//统计这一轮里入度零的顶点个数
if(indegree[i]==0 && visited[i]==0){
num = i;
count ++;
}
}
//若不是唯一一个,或者没有一个入度零则返回0
if(count!=1){
return 0;
}
visited[num] = 1;
//更新所有后继节点入度
for(int j = 0 ; j<G.numVertices ;j++){
if(G.Edge[num][j]!=0){
indegree[j]--;
}
}
}
return 1;
}
评分及理由
(1)得分及理由(满分4分)
得分:4分
理由:学生的基本设计思想与标准答案一致。正确描述了初始化入度数组、每一轮寻找入度为0且未被访问的顶点、若每一轮有且仅有一个则继续并更新其后继节点入度,否则返回0(不唯一或不存在拓扑序列)。思路清晰完整,无逻辑错误。
(2)得分及理由(满分9分)
得分:7分
理由:算法整体框架正确,但存在以下逻辑错误和细节问题:
1. 在计算入度时,使用了未定义的标识符“Edge”,应为“G.Edge”。这是一个明显的语法/逻辑错误,会导致编译失败或错误计算。扣1分。
2. 入度数组“indegree”未初始化。在C/C++中,局部数组若不初始化,其值是未定义的,这将导致后续判断错误。这是一个严重的逻辑错误。扣1分。
3. 算法逻辑中,当“count != 1”时直接返回0,这包含了“count == 0”(即没有入度为0的顶点,说明存在环,无拓扑序列)的情况,处理是正确的。但标准答案中将其分为两种情况(>1 和 ==0)分别说明,学生的合并处理在功能上等价,不扣分。
4. 学生使用了“visited”数组来标记已处理的顶点,而标准答案是通过将入度置为-1来实现“移除”。两种方法均正确,不扣分。
5. 代码缩进和个别注释文字有误(如“所以节点”),但不影响逻辑理解,不扣分。
综上,因两处关键逻辑错误,共扣2分。
题目总分:4+7=11分

2)找位置9 元素3 找位置10 元素18 找位置2 元素 14
3)24%11 = 2冲突
2+1 = 3冲突
2+4=6冲突
(2+9)%11=0 冲突
(2+16)%11=7查找失败 最终7
评分及理由
(1)得分及理由(满分6分)
学生给出了散列表的构造表格,并计算了装填因子为7/11。表格中散列地址的对应关系基本正确,但存在一些细节问题:表格中散列地址的排列顺序与标准答案不完全一致,且表格中“散列地址”一行写成了0,1,2,3,4,5,6,7,8,9,10,11,12,而实际表长应为11,多出了地址11和12,这可能是识别或排版错误。但根据其填写的关键字行(11,14,7,20,9, ,3,18, , , , , ,)来看,关键字11在地址0,14在地址1,7在地址2,20在地址3,9在地址4,3在地址6,18在地址7。这与标准答案(11在0,14在2,7在3,20在5,9在6,3在9,18在10)有显著差异,说明学生的散列表构造存在多处逻辑错误。例如,关键字20的初始散列地址应为5,但学生将其放在了地址3;关键字14经过二次探查后应放在地址2,但学生将其放在了地址1。这些错误表明学生未能正确应用散列函数和二次探查法解决冲突。装填因子计算为7/11是正确的,但基于错误的散列表构造,该计算失去了意义。因此,本小题不能给满分。考虑到学生正确计算了装填因子,但散列表构造存在多处根本性错误,扣分应较重。给予1分(仅因装填因子计算正确)。
(2)得分及理由(满分2分)
学生给出的查找关键字14的比较序列为:找位置9 元素3,找位置10 元素18,找位置2 元素14。这个序列与标准答案完全一致(先查地址9,再查地址10,最后在地址2找到)。尽管学生在第(1)问中构造的散列表是错误的,但本小题的查找序列描述正确。根据评分要求“思路正确不扣分”,且本小题独立评分,因此给予满分2分。
(3)得分及理由(满分2分)
学生给出的查找关键字8的过程为:计算24%11=2(冲突),然后2+1=3(冲突),2+4=6(冲突),(2+9)%11=0(冲突),(2+16)%11=7(查找失败,最终7)。这个探查序列(2, 3, 6, 0, 7)与标准答案(2, 3, 6, 0, 7)完全一致,并正确得出查找失败时的散列地址为7。因此,本小题给予满分2分。
题目总分:1+2+2=5分
1)32个 M字长32位 shamt5位可以覆盖所有的移位情况
2)取0 8765 4321H+9876 5432H = 1FDB9753 OF=1 CF=1 CF无符号数根据CF判断溢出
3)slli是左移指令slli 指令的高 12 位(即 IR[31:20])的最高位为 0,因此无论进行零扩展还是符号扩展,都是在高位补 0,效果等价,因此 Ext 可以是 0 也可以是 1。
4) EXT取1 ALUctr取000
5)ADD和SLLI高7bit全0
6) 1010 0000 0100 0000 1010 0001 0000 0011B FFFF A2D0H+ FFFFFA04H =FFFFACD4H
评分及理由
(1)得分及理由(满分2分)
学生回答“32个”正确,得1分;解释“shamt5位可以覆盖所有的移位情况”基本正确,但表述不够精确(标准答案强调字长32位,最大移位范围不超过32,需要5位表示),扣0.5分。本小题得1.5分。
(2)得分及理由(满分3分)
学生回答“取0”正确,得0.5分;计算结果“1FDB9753”正确,得0.5分;OF和CF判断“OF=1 CF=1”正确,各得0.5分,共1分;判断无符号数溢出依据“CF”正确,得0.5分。本小题共得2.5分。
(3)得分及理由(满分2分)
学生回答与标准答案基本一致,解释清晰正确,得满分2分。
(4)得分及理由(满分2分)
学生回答“EXT取1 ALUctr取000”完全正确,得满分2分。
(5)得分及理由(满分2分)
学生回答“ADD和SLLI高7bit全0”正确指出了区分点,但未完整说明lw指令的识别依据(如机器码低7位为0000011),扣1分。本小题得1分。
(6)得分及理由(满分2分)
学生计算过程“FFFF A2D0H+ FFFFFA04H”中第二个加数多写了一个F(应为FFFF FA04H),导致最终结果“FFFFACD4H”错误。但提取立即数并符号扩展的思路正确,扣1.5分。本小题得0.5分。
题目总分:1.5+2.5+2+2+1+0.5=7.5分
1)存放数组a首地址r3 03H 变量i r2 02H sum r1 01H
2)a[i]的地址是0013DFF0H + 5*4 =0013 E004H a[i]的值FFFF ECDCH sum值是0000 1332H+FFFF ECDCH =0000 000EH a[i]所在页号是 0013EH号页 至少两页中
3)机器码是0000 0000 0010 0001 0010 0010 0001 0011=00212213H short类型汇编形式是 slli r4,r2,1
评分及理由
(1)得分及理由(满分3分)
学生答案正确指出了数组a首地址寄存器为r3(编号03H),变量i寄存器为r2(02H),sum寄存器为r1(01H),与标准答案完全一致。得3分。
(2)得分及理由(满分5分)
学生计算a[i]地址为0013E004H,a[i]值为FFFFECDCH,sum值为0000000EH,a[i]页号为0013EH,数组a至少存放在2页中,这些结果均与标准答案一致。但在计算过程中,学生未详细说明i=5时对应的地址偏移计算(即i=5时,a[i]对应i=6的值),也未解释小端方式下如何从内存中读取a[i]的值,同时未展示页号的计算过程(页大小4KB,地址去掉低12位)。由于最终答案全部正确,且题目未要求写出过程,因此不扣分。得5分。
(3)得分及理由(满分2分)
学生给出的机器码00212213H与标准答案一致,short类型时slli指令的汇编形式为slli r4, r2, 1也正确。得2分。
题目总分:3+5+2=10分
1)0001 0010 0011 0100 0101 0110 0111 1000 对应页号是0001 0010 00 64+8=72号页 页表项对应虚拟地址B8C0 0000H+0100 1000H*4=B8C00120H
1011 1010 1011 0100 0101 0110 0111 1000页表项对应物理地址是 6540 0000H+=10 1110 1010*4H(1011 1010 1000)BA8H= 65400BA8H 对应页框号是2EAH
2)1011 1000 1100 0000 0000 0000 0000 0000 对应页号是1011 1000 11 页号2E3H 虚拟地址是B8C0 0000H+2E3*4=B8C0 0B8CH 该页表项中对应页框号是
0110 0101 0100 0000 0000 0000 0000 0000 页框号是0110 0101 01 对应页框号195H
评分及理由
(1)得分及理由(满分3分)
得分:2分
理由:
(2)得分及理由(满分4分)
得分:4分
理由:
题目总分:2+4=6分
1)是临界区 如果p1 p2同时执行C1向B中写入数据分组可能会导致数据不一致 ,所以要求任何时刻只能有一个进程访问B所以实现C1的代码是临界区
2)
semaphore mutex=1;//互斥执行
semaphore full=0;//初始空
P1(){
while(TRue){
p(mutex);//互斥
C1/执行C1向B写入数据
V(mutex);
V(full);//与p2同步
}
}
P2(){
while(TRue){
P(full);//有数据时才能访问
p(mutex);//互斥
C2/执行C2从B取出数据
V(mutex);
}
}
3)
semaphore mutex=1;//互斥访问
p1(){
p(mutex);//互斥访问B
C2//执行C2
V(mutex);//释放互斥锁
}
p2(){
p(mutex);//互斥访问B
C2//执行C2
V(mutex);//释放互斥锁
}
评分及理由
(1)得分及理由(满分2分)
学生正确指出C1的实现代码是临界区,并给出了合理的解释:多个进程同时执行C1可能导致数据不一致,因此需要互斥访问。答案与标准答案核心思想一致。得2分。
(2)得分及理由(满分3分)
学生定义了正确的两个信号量(mutex和full)并给出了正确的初值(1和0),作用描述基本正确。同步逻辑正确:P1先互斥写入,然后V(full)通知;P2先P(full)等待数据,再互斥读取。代码中存在两处笔误/不规范:1. 信号量操作写成了p/V而非wait/signal,但含义明确;2. P1和P2的代码中包含了`while(True)`循环,题目只要求各执行一次,此循环虽不影响单次执行的正确性,但略显多余,并非逻辑错误。整体思路和实现正确。扣1分,因为题目明确要求用`wait()`和`signal()`操作描述,学生使用了`p()`和`V()`,属于未完全按照题目要求作答。得2分。
(3)得分及理由(满分3分)
学生定义了一个互斥信号量mutex,初值为1,用于保护对缓冲区B的访问。P1和P2通过P(mutex)和V(mutex)实现了对C3操作的互斥执行。这与标准答案思路一致。但存在一个明显错误:在代码中,学生写的是执行“C2”,而题目要求是执行“C3”。这是一个逻辑/描述错误,因为C2是读出,C3是修改,操作不同。扣1分。此外,同样未使用要求的`wait`/`signal`而使用了`p`/`V`,但此处与(2)同理扣过分,不重复扣分。得2分。
题目总分:2+2+2=6分
1)OSPF
2)16
3)至少需要60s
4)ebgp update报文 ibgp
5)R11
R13
评分及理由
(1)得分及理由(满分1分)
学生回答“OSPF”。标准答案指出,由于AS4规模较大,可能超过RIP的15跳限制,应选择OSPF。学生答案正确且简洁。得1分。
(2)得分及理由(满分1分)
学生回答“16”。标准答案解释,AS3内通信不超过15跳,TTL初始值应至少设置为16(经过15个路由器后TTL减为1,到达目的主机)。学生答案正确。得1分。
(3)得分及理由(满分2分)
学生回答“至少需要60s”。标准答案分析过程为:R14在30秒后向邻居交换距离向量,再经过30秒(即总计60秒)后,信息可传遍R11-R16。学生答案与标准答案结果一致,但未给出分析过程。由于问题只要求给出时间,且答案正确,得2分。
(4)得分及理由(满分3分)
学生回答“ebgp update报文 ibgp”。标准答案为:第一问,R44与R13属于不同AS,使用外部BGP(eBGP)会话;第二问,通过Update报文通告;第三问,R13与R14、R15在同一AS内,使用内部BGP(iBGP)会话。学生答案依次正确对应了三个问题,但“ebgp”和“ibgp”的书写格式(通常为eBGP和iBGP)不影响其正确性。得3分。
(5)得分及理由(满分2分)
学生回答“R11”和“R13”,分两行列出。标准答案分析:在无策略约束下,BGP选择AS路径最短的路由。三条路径的AS路径长度分别为3(AS2 AS8 AS19)、4(AS3 AS7 AS11 AS19)、3(AS4 AS10 AS19)。R14和R15会各自在收到的通告中选择最短路径。对于R14,从R11和R13收到的路径长度均为3,标准答案认为R14会选择R11(可能基于某种默认规则如先接收或路由器ID,但题目未明确,通常认为在等长路径中可任选,但标准答案指定了R11)。对于R15,从R13和R14(通过R11)收到的路径长度均为3,标准答案认为R15会选择R13。学生答案“R11”和“R13”与标准答案完全一致。得2分。
题目总分:1+1+2+3+2=9分