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

img

img

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)

你代码应该是没问题,是不是运行超时了