文章
55
粉丝
0
获赞
2
访问
3.8k

评分及理由
(1)得分及理由(满分4分)
学生正确解释了当 n=0 时,由于无符号整数运算导致 n-1 为最大值,使得循环条件 i <= n-1 恒成立,从而出现死循环。同时指出若改为 int 型则不会死循环,因为此时 n-1 = -1,循环条件在 i=0 时不成立。解释基本正确,但“根据无符号数的运算规则,2³² - 1 + 1 = 0”这一句与死循环的直接关系表述稍显冗余,但不影响核心逻辑正确。因此,本题得满分4分。
(2)得分及理由(满分3分)
学生回答“f1(23)和f2(23)的返回值相等”是正确的。但给出的机器数“80000001H”或“8000001H”均错误。标准答案中 f1(23) 的机器数是 00FFFFFFH(即 2^24 - 1),f2(23) 的机器数是 4B7FFFFFH。学生答案的机器数完全不对,属于核心错误。因此,本题只能给部分分数。由于判断返回值相等正确,给1分;机器数错误扣2分。得1分。
(3)得分及理由(满分1分)
学生回答“f2(24)超出了float的表示范围”不准确。f2(24) 的结果并未超出 float 的表示范围(即未发生溢出),而是因为 float 的尾数有效位只有24位,而 f(24) 需要25位精确表示,因此进行了舍入,导致结果增大1。学生解释存在逻辑错误。因此,本题扣1分,得0分。
(4)得分及理由(满分2分)
学生正确解释了 f(31) 超出 int 型表示范围导致 f1(31) 返回 -1,并正确指出使 f1(n) 返回值与 f(n) 相等的最大 n 是 30。答案完全正确。得满分2分。
(5)得分及理由(满分3分)
学生回答 f2(127) 对应的值是“2¹²⁸”错误。标准答案为 +∞。学生给出的“使 f2(n) 的结果不溢出,最大的 n 是 126”和“使 f2(n) 结果精确,最大的 n 是 23”均正确。因此,第一问错误扣1分,后两问正确各得1分。本题得2分。
题目总分:4+1+0+2+2=9分
登录后发布评论
暂无评论,来抢沙发