文章
986
粉丝
5
获赞
20
访问
246.4k

评分及理由
(1)得分及理由(满分2分)
学生两次识别结果均正确回答了第一问“调用10次f1”,第二问“执行16行call指令会递归调用f1”。第一次识别结果中关于“执行12分jle, 16分call, 20分jmp, 递归调用f1 +27 +2约”的表述存在冗余和模糊,但核心答案正确。根据标准,思路正确不扣分,且冗余信息不扣分。得2分。
(2)得分及理由(满分2分)
学生两次识别结果均正确指出条件转移指令是第12行jle,并正确列出了会使程序跳转执行的指令:16行call、20行jmp、30行ret。答案与标准答案完全一致。得2分。
(3)得分及理由(满分4分)
第一问(虚拟地址):学生第一次识别结果正确计算为0040102AH,第二次识别结果误写为00401025H(这是第16行地址),但根据“禁止扣分”原则,判断为识别错误,且第一次识别正确,故不扣分。
第二问(偏移量):学生两次识别结果均正确给出偏移量计算过程和结果(FFFFFFD6H)。第二次识别中“采用补码方式”是对相对寻址偏移量编码方式的描述,虽非直接回答大端小端问题,但此处不视为错误。
第三问(大端小端):学生答案中未明确回答此问。标准答案要求根据偏移量存储格式判断为小端方式,学生答案缺失此关键点。扣2分。
本小题得2分。
(4)得分及理由(满分4分)
第一问(原因):学生两次识别结果均正确指出原因是f(13)结果超出int型表示范围,发生溢出。
第二问(修改方法):学生两次识别结果均提出将返回值类型改为double型。标准答案建议改为long long等。虽然double可以表示更大范围,但会引入浮点数精度和类型变化,并非整数阶乘计算的首选或最准确修改(标准答案期望的是保持整数类型的扩展,如long long)。此处学生的答案逻辑上可行,但非最优或最符合题意的标准答案。考虑到题目问“如何修改”,且double修改在C语言中能返回正确数值结果(尽管是浮点数),可视为一种正确思路。根据“思路正确不扣分”原则,不扣分。
本小题得4分。
(5)得分及理由(满分4分)
第一问(OF=1条件):学生答案“高33位为非0或非1”或“高位为非0或非1”,表述不够精确。标准答案为“乘积的高33位为非全0或非全1”。学生的表述遗漏了“全”字,含义有偏差,容易理解为只要有一位非0或非1,这并不准确(例...
登录后发布评论
暂无评论,来抢沙发