文章
3
粉丝
0
获赞
0
访问
288
答:(1)遍历数组,初始有一个cnt为1,循环从下标1开始,如果A[i-1]不等于A[i+1]时当cnt不为零0 返回A[i-1],否则cnt置1,A[i-1]等于A[i+1]时cnt减一继续循环。
(2)
#include<stdio.h>
#define MAX_SIZE 7
int main() {
int a[MAX_SIZE] = { 3, 3, 6, 6, 9, 0, 0 };
int cnt = 1;
for (int i = 1; i < MAX_SIZE; ++i) {
if (a[i - 1] != a[i]) {
if (cnt) printf("%d", a[i - 1]);
else cnt = 1;
}
else cnt--;
}
return 0;
}
(3)时间复杂度为O(n),只需要遍历一次数组
评分及理由
(1)得分及理由(满分3分)
得分:1分
理由:学生的设计思想描述不够清晰,且逻辑存在错误。题目要求找出仅出现一次的元素,而学生的思路是通过比较前后元素和计数器来判断,但描述不明确且逻辑混乱。例如,"A[i-1]不等于A[i+1]"的表述不准确,且计数器逻辑未正确体现题目要求。
(2)得分及理由(满分8分)
得分:4分
理由:学生的代码实现与设计思想不完全一致,且存在逻辑错误。代码中比较的是a[i-1]和a[i],但输出逻辑不完整(缺少返回语句,直接打印可能导致多次输出),且未处...
登录后发布评论
暂无评论,来抢沙发