文章

21

粉丝

0

获赞

0

访问

1.0k

头像
2020年(408)计算机学科专业基础综合试题 - 第41题回答
数据结构
发布于2026年5月4日 19:19
阅读数 34


评分及理由

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

学生给出了暴力法的基本设计思想:“使用三层for循环,依次遍历3个数组,用Min存储最小距离,最后输出距离最小的三元组”。该思路正确且清晰,符合暴力枚举所有三元组的基本方法,与标准答案中方法一的设计思想一致。因此得3分。

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

该学生给出的代码基本实现了暴力法,主要逻辑正确:使用三层循环遍历所有三元组,计算距离并更新最小值。但存在以下缺陷:

  • 函数参数问题:函数定义为 int Find_Min(int S1[], int S2[], int S3[]),但未传入数组长度;在函数内部使用 n1 = sizeof(S1)/sizeof(S1[0]); 计算长度,这是错误的,因为数组作为函数参数时会退化为指针,sizeof无法获取正确长度,导致循环次数错误。此逻辑错误会严重影响程序正确性,需要扣分。但由于题目要求判断是否误写,考虑上下文,这里显然是学生对C语言数组传参理解不足导致的逻辑错误,而非识别错误,因此必须扣分。扣除3分。
  • 返回值缺失:函数声明为 int Find_Min,但函数内部没有 return 语句,未返回最小值。虽然在函数内直接输出结果可能勉强符合题目“输出”的要求,但代码不规范,且题目要求“计算并输出”,缺少返回值会影响结果复用。扣除1分。
  • 变量初始化问题:int Min = 100000; 假设了最小值不会超过10万,不够严谨,但考虑到题目中示例数据不大和考试场景,可视为合理。不予扣分。
  • 冗余变量:变量 a, b, c 用于记录三元组,但题目只要求输出最小距离,不是强制要求输出三元组;虽未明确扣分,但也无加分。
  • 注释缺失:代码中没有关键注释,但题目要求“关键之处给出注释”,部分缺失扣1分。

综上,代码基本逻辑正确,但存在参数传错、缺少返回等影响正确性的缺陷,扣除4分,得4分。

(注:学生代码是暴力法,思路与标准答案方法一一致。标准答案中提到暴力法可得7-8分,由于学生代码有缺陷,给4分合理。)

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

学生给出的时间复杂度为 O(n³)(实际应为 O(n1*n2*n3)),空间复杂度为 O(1),与暴力法实际复杂度一致,分析正确。得2分。

题目总分:3+4+2=9分

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发