C程序计算平均值

时间:2016-04-03 11:49:42

标签: c logic

此代码的平均值不正确。如何使用此代码解决平均值。我尝试所有的东西,但每次都相同。它仅显示最后一个数字平均值。

    #include<stdio.h>
void compute(int anumber,int *max,int *min,float *average,int count);

int main ()
{
    int max=0,min=100;
    float average=0;
    int number,i=0;


    printf("\nenter a number:");
    scanf("%d",&number);
    while(number>0){
        i++;
        compute(number,&max,&min,&average,i);
        printf("\nenter a number:");
        scanf("%d",&number);
    }
    printf("\naverage %.2f",average);
    printf("\ncount %d",i);
    printf("\nmin %d",min);
    printf("\nmax %d",max);

    return 0;

}
void compute(int anumber,int *max,int *min,float *average,int count)
{
    float total;
    total=total+anumber;

    *average=total/count;
    ++count;
    if(anumber>*max)
       *max=anumber;
    else if(anumber<*min)
       *min=anumber;
}

2 个答案:

答案 0 :(得分:0)

你的变量&#34;总计&#34;是compute()函数的本地函数,因此它不包含所有输入数字的总和 - 每次调用compute()时它都是新变量,每次都是循环。

如果要一次处理每个数字,如果总计全局变量,则可以在计算函数中找到总数。然后,正确的方法是通过将总数除以值的数量来找到平均值一次。

答案 1 :(得分:0)

问题#1:总数和数字未初始化。

在C中,没有为您完成变量的初始化。总后价值是多少:

float total;

答案:无论在内存中分配的内容是什么。它可以是0,20,44,15,7或-2.3亿,除非给它一个值,它有一个任意值。它的价值是不确定的。

total=total+anumber;

通过在未知数字上添加数字,你不知道会有多少。

问题#2:您不计算总数。

通过获取集合中的所有数字并将它们相加来计算总数。

即。数字为2,4,6,总数为2 + 4 + 6,等于12.首先要注意的是重复的存在。添加是可以抽象的常见方面。我们通常将重复抽象为循环,即

int i;
float total = 0;
for(i = 0; i <= 6; i+=2)
{
     total += i;
}

您的程序中需要一个类似的循环。

您的计算功能无效,无法返回值。有一些方法可以修复总数,以便计算平均值。

  1. 例如,在全局范围内定义总计,可以通过将移动到任何函数体之外来完成。您必须从函数中删除total的定义,因为将使用最近的外部作用域中的变量。

  2. 使总静态,不会在每个函数调用之间自动处理。这允许您传入值并允许总数保留。

  3. 无论您的选择如何,您都必须进行一些更改,截至目前您实际上并未计算平均值。关于你的任务或任务的进一步细节将使每个人受益。 C关键字很少但使用方式很多,为了完全回答你的问题,我们必须知道:

    1. 该计划应该做什么?预期的输入/输出有很大帮助。为了提出解决方案,您必须首先完全理解问题。即使从编写良好的代码中获取预期的功能也是一个挑战,使用破碎的代码几乎不可能这样做。

    2. 您是否给出了规格?你了解他们吗?我从你的评论中看到你不允许更改功能标题/原型,你有什么其他限制?

    3. 最后一点说明。我假设这是一个家庭作业,因为有人参加了很多基于C编程的课程,并且自己教过一些我可以向你保证 - 通过只接受必要的帮助,你将从练习中获得最大的收益,努力尽可能多地考虑问题。