平均调用未输出正确的平均值。有人可以帮助我找出我做错了什么吗?
#include <stdio.h>
void main()
{
int num=0;
int counter=0;
int sum=0;
int i=0;
float avg=0;
printf("Numver of values to be entered: \n");
scanf("%d", &counter);
for (num=1;num<=counter;num++)
{
printf("Please enter value %d :",num);
scanf("%d",&i);
sum +=i;
}
avg=sum/num;//This portion isnt working and I cant figure out why
printf("The average is : %f\n",avg);
}
我得到的输出。
/workspace $ gcc -o AvgFor AvgFor.c
/工作区 $ ./AvgFor
要输入的值的数量: 2 请输入值 1 :10 请输入值 2 :10 平均值为:6.000000
我期望的是 10 + 10 = 20。那么 20/2=10
最佳答案
当您计算 sum/num
时,两个参数都是 int
类型,因此执行整数除法,这意味着任何小数部分都会被截断。这发生在将结果分配给 avg
之前。
您需要将至少一个参数转换为 float
才能执行浮点除法:
avg = (float)sum/num;
关于c - 用 C 编写程序,通过 for 循环查找用户定义的平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53121630/