无法计算C中5个数字的平均值

时间:2017-01-27 03:24:10

标签: c numbers average

我是C和编程的新手,我遇到了获得5个数字的平均值的问题。我已经尝试了我能想到的一切,我不知道为什么我没有得到除了0之外的数字。我的代码是:

#include <stdio.h>

int main (void)
{    
  long int first,second,third,fourth,fifth, sum;   
  float avg = (first+second+third+fourth+fifth)/5;     
  printf("Please put in five numbers\n");    
  scanf("%d%d%d%d%d", &first, &second, &third, &fourth, &fifth);    
  printf("You entered: %d %d %d %d %d\n" , first, second, third, fourth, fifth);    
  sum = first+second+third+fourth+fifth;    
  printf("The sum of the numbers you entered is %d\n",
            sum);    
  printf("The average is %d\n", avg);    

  return 0;
}

3 个答案:

答案 0 :(得分:1)

主要问题是您在获取数字之前计算平均。未初始化变量的值恰好为0,五个零的平均值也为零。

第二个问题是你将整数之和除以另一个整数。整数除法丢弃商的小数部分。

该行:

https://www.example.com/165/foo
必须在float avg = (first+second+third+fourth+fifth)/5; 之后移动

scanf必须变为5。结果应显示为5.0的浮点数,而不是%f

答案 1 :(得分:1)

我认为问题在于你用计算平均值后给出的变量初始化平均值。尝试计算变量后的平均值,即第一,第二,第三,第四和第五。

答案 2 :(得分:1)

您的代码中存在四个问题:

  1. 您在接受变量之前计算平均值。
  2. 您正在将整数之和除以其他整数,因此,小数部分将截断.Integer除法截断小数部分。
  3. 您正在使用格式说明符avg打印您定义为float的{​​{1}},因此会导致未定义的行为。
  4. 您正在%d使用%d说明符,它应long int
  5. 考虑到所有这些问题你的代码变成了。

    %ld

    提示
    始终尝试在寻求帮助之前自己解决问题,这将使您受益更多 并且首先在纸张上准备好它在编码之前,它将减少许多错误。