文章

187

粉丝

0

获赞

3

访问

37.8k

头像
2023年(408)计算机学科专业基础综合试题 - 第41题回答
数据结构
发布于2025年12月14日 17:44
阅读数 158


评分及理由

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

学生给出了算法的基本思路:遍历顶点,计算每个顶点的出度和入度,比较出度和入度,如果出度大于入度则输出顶点。但描述中存在一些不准确或模糊之处:

  • “若G.Edge[i][i]所在的行(出度)不为0的数量比列(入度)小” 这一句表述混乱,且提到了“G.Edge[i][i]”对角元素,与出度入度计算无关,属于概念表述不清。
  • 整体思路核心(统计出度入度并比较)是正确的,但表述不够清晰、严谨。

根据评分标准,思路正确不扣分,但表述存在缺陷应适当扣分。扣1分。

得分:3分

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

学生代码框架基本正确,但存在多处逻辑错误和语法错误:

  1. 代码中使用了未定义的变量 n,应使用 G.numVertices
  2. 访问图的成员时未使用结构体变量 G,如 Edge 应为 G.EdgeVerticesList 应为 G.VerticesList
  3. 计数逻辑错误:count++ 语句放在了 if (chu > ru) 条件判断之外,这会导致无论顶点是否为K顶点,count都会增加,与题目要求不符。
  4. 函数缺少返回值(虽然最后有 printf("%d", count); 但未 return count;)。
  5. 代码中 printf("%d", count); 的位置在函数内最后,但题目要求返回K顶点个数,打印应在函数内部完成,且通常打印顶点和返回个数是两件事,这里打印count可能多余(但根据题目“输出G中所有K顶点”并返回个数,打印顶点已由前面完成,打印count可能被视为调试输出或误解)。标准答案只打印顶点,不打印个数,个数通过返回值返回。此处多打印了count,但未严重影响核心逻辑,可视为小瑕疵。

根据评分标准,逻辑错误需要扣分。主要错误是计数逻辑错误和结构体成员访问错误,这些属于严重逻辑错误。语法错误(未定义n、未加G.)也导致代码无法正确运行。但考虑到识别可能产生的误写(如n可能是G.numVertices的误写),以及核心的双重循环比较出度入度的逻辑正确,给予部分分数。

扣分点:计数逻辑错误(严重)-3分;结构体成员访问错误(多处)-2分;未定义变量n -1分;缺少返回值 -1分。共扣7分。

得分:2分

题目总分:3+2=5分

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发