永发信息网

c语言,请问图中的程序哪里有错误? (输入3,4,5,6后,应该得到4.5才对吧。。 我得到的是4

答案:4  悬赏:70  手机版
解决时间 2021-04-05 04:54
  • 提问者网友:几叶到寒
  • 2021-04-05 00:23
c语言,请问图中的程序哪里有错误? (输入3,4,5,6后,应该得到4.5才对吧。。 我得到的是4
最佳答案
  • 五星知识达人网友:春色三分
  • 2021-04-05 00:58
因为ave是浮点数,而a,b,c,d都是整型数,先是进行整型数的计算,然后才会将结果强制类型转换为浮点型赋值给ave,由于整型数计算时会自动忽略小数点后面的数,因此(a+b+c+d)/4的结果虽然逻辑上是4.5,但是系统自动忽略那个0.5,运算结果为4,然后将4强制类型转换为浮点数4.0,赋值给ave,所以结果是4.0。把a,b,c,d改成浮点数,然后把%d改成%f即可
全部回答
  • 1楼网友:患得患失的劫
  • 2021-04-05 03:27
变成(a+b+c+d)*1.0/4;
  • 2楼网友:傲气稳了全场
  • 2021-04-05 02:54
最后第二句,ave=...这个,后面是整数(定义的是int),4.5就取最小的整数是4,所以ave=4
  • 3楼网友:舍身薄凉客
  • 2021-04-05 01:26
请把ave=(a+b+c+d)/4;改成ave=(float)(a+b+c+d)/4;
原因:(a+b+c+d)/4这个表达式分子和分母都是int型的,所以计算机会按照整数的运算规则来计算,结果按整数处理,修改后先强制把分母的运算结果转换成浮点数,那么之后的除法就会按照float型来计算。也可以改成(a+b+c+d)/4f,(a+b+c+d)/4.0
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯