文章
81
粉丝
0
获赞
0
访问
2.2k

评分及理由
(1)得分及理由(满分3分)
得分:1分
理由:学生的基本设计思想是“在数组中依次查找1,2,3,...,n”,这是一种可行的思路,即从最小的正整数1开始,检查它是否在数组中,如果不在则它就是答案,否则继续检查2,依此类推。这个思路是正确的,但描述过于简略,没有详细说明如何高效地“查找”(例如,没有提及如何利用数组下标进行原地标记等优化方法),也没有明确说明最坏情况下的查找范围(是到n还是n+1)。因此,虽然思路方向正确,但不够完整和清晰,扣2分。
(2)得分及理由(满分8分)
得分:2分
理由:学生尝试用C语言描述了算法,但代码存在严重的逻辑错误和语法错误,无法正确实现所描述的功能。
int find (a[],n) 缺少参数类型,应为 int find(int a[], int n)。i=1, j=1 且循环条件为 i<n 和 j<n,这忽略了数组下标从0开始,并且查找的正整数范围应该是1到n+1,而不仅仅是1到n-1。if(i!= count 是语法错误(括号不匹配),count 和 length 的计数逻辑无法正确判断是否找到当前正整数i。代码意图似乎是如果遍历完整个数组都没找到i就返回i,但 length 和 count 在内层循环中每次迭代都增加,导致它们始终相等,判断条件 if (length == count) 永远为真,这会导致算法在第一次外层循环(i=1)时就提前返回1,无论数组内容如何。(3)得分及理由(满分2分)
得分:0分
理由:学生作答中没有说明算法的时间复杂度和空间复杂度。根据题目要求,这部分需要独立说明,但学生的答案中完全没有涉及,因此不得分。
题目总分:1+2+0=3分
登录后发布评论
暂无评论,来抢沙发