为什么此代码中的输出等于零? 数字1的权重为2,数字2的权重为3,数字3的权重为5.我无法理解为什么输出= 0。
#include <stdio.h>
int main ()
{
float A ,B, C ,MEDIA=0 ;
scanf("%f%f%f",&A ,&B,&C);
MEDIA+=1/2*A + 1/3*B + 1/5*C;
printf("MEDIA = %.1f", MEDIA );
return 0;
}
答案 0 :(得分:3)
MEDIA + = 1/2 * A + 1/3 * B + 1/5 * C;
因为1/2
,1/3
和1/5
将被评估为0.因为它们是整数。
写下
1.0/2
,1.0/3
和1.0/5
代替。因此编译器会知道将结果视为float
。
或者
MEDIA+=A/2 + B/3 + C/5;
P.S。
也许我错了,但如果我理解你在描述中所写的内容,那么我认为你加权平均的计算是不正确的。它应该像
(A * 2 + B * 3 + C * 5)/ 10