文章

66

粉丝

0

获赞

0

访问

9.2k

头像
2023年计算机学科专业基础综合试题 - 第41题回答
数据结构
发布于2025年9月18日 16:34
阅读数 157

1.由于边以邻接矩阵的形式给出,可遍历所有边,统计各顶点入度与出度,并返回出度大于入度的顶点

2.

//首先这里假设邻接矩阵中边长不为0,为0则表示没有这条边

int countKVertcies(MGraph* g){

int nums = 0;

for(int v = 0; v<g.numVertices;v++){

int in = 0;

int out = 0;

for(int i = 0; j<g.numVertices;i++){

in+=g.Edge[i][v]!=0;

}

for(int j = 0; j<g.numVertices;j++){

out+=g.Edge[v][i]!=0;//简便写法,边长不为0时判断求值结果为1

}

nums+=out>in?1:0;

}

return nums;

}


评分及理由

(1)得分及理由(满分4分)

得分:3分

理由:学生给出了基本正确的设计思想,即通过遍历邻接矩阵统计每个顶点的入度和出度,然后判断出度是否大于入度。但未明确提及需要输出K顶点的名称(字符类型),而标准答案要求打印顶点名称(如'a','b'等),而不仅仅是统计个数。因此扣1分。

(2)得分及理由(满分9分)

得分:5分

理由:

  • 代码逻辑基本正确,但存在多处错误:
    • 函数参数应为MGraph类型(值传递),但学生使用了指针MGraph*(未在题目定义中体现),且函数名与题目要求printVertices不符(学生写为countKVertcies),扣2分。
    • 内层循环变量错误:第一个内层循环使用变量i,但判断条件写为j(j未定义),且循环体中使用g.Edge[i][v]会导致越界或逻辑错误;第二个内层循环使用变量j,但循环体中使用g.Edge[v][i](i此时为外层循环变量,但内层应使用j)。这属于严重逻辑错误,扣2分。
    • 代码未输出K顶点的名称(只统计了个数),与题目要求不符,扣1分。
    • 注释中假设“边长不为0”正确(邻接矩阵通常用0/1表示边存在性),但代码中使用了!=0判断,实际邻接矩阵可能为权重(但题目定义中为int类型,且示例...
登录查看完整内容


登录后发布评论

暂无评论,来抢沙发