weoopd 2021-11-03 22:56 采纳率: 40%
浏览 62

哪里出错了啊 。 最好给我讲解一下

img

img

  • 写回答

2条回答 默认 最新

  • 关注

    xiao只能取偶数。另外 xiao/2和xiao * 0.5是不一样的,xiao/2的结果是int类型,而xiao *0.5的结果是float类型,float类型存在精度问题,float值在系统中存储的时候有误差,比如4.5在系统中存储的可能是4.499999,所以,你的代码中if用xiao * 0.5会把if中的数据都转成float类型,这时候去判断与n是否相等就会出问题。
    修改方法如下:

    for(xiao = 0;xiao <=n;xiao++) 改成 for(xiao = 0;xiao <=n;xiao+=2)
    if(da+zhong+xiao==n && da*3 +zhong*2+xiao*0.5 == n)改成if(da+zhong+xiao==n && da*3 +zhong*2+xiao/2 == n)
    
    
    评论

报告相同问题?

问题事件

  • 创建了问题 11月3日