文章
26
粉丝
0
获赞
0
访问
3.3k

评分及理由
(1)得分及理由(满分3分)
学生的设计思想为:从下标1开始每次比较相邻两个元素,若不相等则返回前一个元素。其核心逻辑与标准答案一致,都是从成对元素中判断目标值,只是标准答案从下标0开始比较,学生从下标1开始(即比较a[1]与a[2]、a[3]与a[4]等),同样能正确找出只出现一次的元素(因为目标元素之前的配对均相等,目标元素与其后一个元素不等)。思路正确,逻辑成立,给3分。
(2)得分及理由(满分8分)
代码实现:
int search() {
for(int i=1; i<n; i+=2) {
if(a[i] != a[i+1])
return a[i];
}
}
该代码需要基于全局数组a和全局变量n,但原题要求函数参数形式(如int func(int *A, int n)),学生的函数没有参数,但注释说明a[]、n为全局变量,这在C/C++中也是合法的,功能上能够实现查找。核心循环逻辑正确:从i=1开始,每次比较a[i]与a[i+1],若不相等则返回a[i];若全部相等(即目标元素在最后),函数会没有返回值,存在缺陷——缺少最终的return a[n-1]语句。这是一个逻辑遗漏,会导致在目标元素为最后一个时函数返回未定义值。因此代码存在逻辑错误,扣3分。
代码缺少必要的注释(如“若循环结束则最后元素为目标”),但注释并非主要得分点,且已有基本注释,不额外扣分。综合代码正确性,本题得5分。
(3)得分及理由(满分2分)
学生明确写出时间复杂度为O(n),且是一次循环遍历,与标准答案一致,给2分。
题目总分:3+5+2=10分
登录后发布评论
暂无评论,来抢沙发