文章
75
粉丝
78
获赞
0
访问
4.2k

评分及理由
(1)得分及理由(满分4分)
学生给出的基本设计思想是使用辅助数组,将原数组后P个元素和前n-P个元素按特定顺序放入辅助数组,再覆盖回原数组。该思路可以实现循环左移,与标准答案中的“另解”一致,思路正确。但描述中“将原数组后面P个元素按从后往前的顺序依次放入辅助数组中”这一细节与标准答案略有差异(标准答案中是将前P个元素暂存,然后移动后n-P个元素,最后将暂存元素放回),但整体逻辑正确,不影响结果。因此,本部分得满分4分。
(2)得分及理由(满分7分)
学生提供了两次识别结果,但两次的代码均存在逻辑错误或实现不完整。
第一次识别代码:函数名为loopMove,参数为int ETR, int n, int P,但ETR被当作数组使用,参数类型错误;且代码中多次对ETR赋值,最后返回ETR,逻辑混乱。例如,在填充辅助数组L后,又用多个循环试图将L的内容覆盖回ETR,但最后一个循环for (int p = 0; p < n; p++) ETR[p] = L[p];会覆盖前面所有操作,且ETR作为int类型不能下标访问。这些属于严重逻辑错误,代码无法正确运行。因此,本部分扣4分,得3分。
第二次识别代码:函数名为loopMove,参数为int *L, int *R, int n, int P,但函数体内对L和R的使用混乱,例如L[R - L + j]这种指针运算没有明确意义,且最后return R但函数声明为void。代码逻辑无法正确实现循环左移,存在逻辑错误。因此,本部分同样扣4分,得3分。
根据“只要其中有一次回答正确则不扣分”的原则,但两次识别均存在逻辑错误,因此需扣分。综合两次识别,取较高得分3分。
(3)得分及理由(满分2分)
学生正确给出了时间复杂度O(n)和空间复杂度O(n),与辅助数组解法一致。因此,本部分得满分2分。
题目总分:4+3+2=9分
登录后发布评论
暂无评论,来抢沙发