【问题标题】:Calculating the average of integers in an array计算数组中整数的平均值
【发布时间】:2019-08-03 15:15:37
【问题描述】:

我必须计算数组中整数的平均值:

int main(void)
{
    int num;
    printf("How many elements do you want to add in to the array? --> ");
    scanf("%d", &num);
    float array[10];
    float total, average;

    for(int i=0; i<num; i++){
        printf("Insert the element: ");
        scanf("%f", &array[i]);
        total = total + array[i];
    }

    average = total/num;
    printf("The average is: %.2f\n", total);

    return 0;
}

输出:

How many elements do you want to add in to the array?  --> 3
Insert the element: 5
Insert the element: 6
Insert the element: 7
The average is: 18.00

我预计输出是6.00,但它是18.00。我该如何解决这个问题?

【问题讨论】:

  • 首先:在循环之前初始化total: float total = 0; 或简单的total = 0;
  • printf("The average is: %.2f\n", average);
  • 你的编译器应该显示一些关于未使用变量average的警告。听听你的编译器警告。
  • 如果它应该是一个整数数组,为什么你把它变成一个浮点数组呢?
  • 另外,如果用户输入一个大于 10 的数字作为要添加到数组中的元素数怎么办? (提示:你真的需要一个数组吗?)

标签: c arrays average


【解决方案1】:
#include<stdio.h>
int main()
{
    float avg,sum=0;
    int i;
    float marks[3];//array declaration
    for(i=0;i<=2;i++)
    {
        printf("enter marks\n");
        scanf("%f",&marks[i]); //store data in array
        printf("you have entered %f\n",marks[i]);
        sum=sum+marks[i];
    }
    printf("\nou have entered sum=%f\n",sum);
    avg=sum/3;
    printf("average marks=%f\n",avg);
    return 0;
}

【讨论】:

  • 浮点数=0; //你错过了这个,因为 total 最初可能会取一个垃圾值,因此可以改变你的 total=total 是(初始一些垃圾值)+ arr[i];
  • 你必须在循环中存储 total=0+arr[0] //for i=0
  • total=arr[0]+arr[1] //for i=1 in your loop 依此类推...您将获得正确的总计值,正如我在带有变量的程序中显示的那样sum=0
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-05-14
  • 2013-10-25
  • 2014-01-22
  • 1970-01-01
  • 2019-04-08
  • 1970-01-01
相关资源
最近更新 更多