文章
63
粉丝
0
获赞
0
访问
3.2k
1.因为无符号数0-1=FFFFFFFFH,这不小于任何int类型无符号数,不会,因为有0-1=FFFFFFFFH在有符号数int类型中表示的是负一,初始int为0不会进入for循环
2.相等,f1(23)的返回值为00FFFFFFH,f2(23)的返回值为4B7FFFFFH
3.因为float单精度的尾数只有23位,f2(24)=2^25-1,需要的尾数精度为24位,尾数不够所以舍入了
4.因为超出了int类型的表示范围,最大的n为30
5.正无穷,不溢出最大的n为127,结果精确最大的n为23
评分及理由
(1)得分及理由(满分4分)
学生正确解释了n=0时出现死循环的原因:无符号数n-1=FFFFFFFFH(即2³²-1),条件i<=n-1永真。同时正确回答了若改为int型则不会死循环,因为n-1=-1,i=0时不满足条件。但表述中“这不小于任何int类型无符号数”存在逻辑错误,应改为“无符号数比较时0≤2³²-1永真”。扣1分。得3分。
(2)得分及理由(满分3分)
学生正确指出f1(23)和f2(23)返回值相等,且给出了正确的机器数:f1(23)=00FFFFFFH,f2(23)=4B7FFFFFH。答案完整正确。得3分。
(3)得分及理由(满分1分)
学生正确指出float尾数只有23位,f(24)需要24位精度导致舍入,但错误写成了“f2(24)=2^25-1”(应为2^25-1对应n=24?实际f(24)=2²⁵-1)。虽然计算表达式有误,但核心原因(尾数不够需舍入)正确。得1分。
(4)得分及理由(满分2分)
学生正确说明f(31)超出int表示范围(机器数全1解释为-1),并给出最大n=30。答案正确。得2分。
(5)得分及理由(满分3分)
学生正确指出7F800000H表示正无穷。但后两问答案错误:不溢出最大n应为126(学生答127),精确结果最大n应为23(学生答23正确)。第二问错误扣1分。得2分。
题目总分:3+3+1+2+2=11分
登录后发布评论
暂无评论,来抢沙发