为什么我的用户定义数组的平均值不正确? C

时间:2016-03-08 18:23:59

标签: c arrays function-prototypes

当这个程序返回平均值时,每次都为零,我没有正确地将值传递给average()函数吗?我不知道要修复什么,因为我已经尝试过切换数据类型并输出%f 我不希望代码为我完成,只需要一些指导。谢谢任何可以提供帮助的人。

    #include <stdio.h>



float average(float arr[], float num) {

for (z = 0; z < num; ++z) {
    sum = arr[z]+1;
}

    avg = sum / num;

    return avg;

}

int main(){
    int count;
    int a;
    float initial[a];
    float avg;
    avg = average( initial, a);
    printf("enter number of values you'd like averaged.\n ");
    scanf("%i",&a);
    count = a;
    printf("enter numbers you'd like averaged\n");
    for(a= 0; a < count; a++)
    {
        scanf("%f",&initial[a]);
    }
    printf("The average is %d",avg);
    return 0; 
}

4 个答案:

答案 0 :(得分:2)

有很多问题。在代码的这一部分:

DECLARE @return_value int

EXEC    @return_value = [dbo].[PostScheduledTasks]
        @actualStart = N'08-03-2016 8:00:00 AM',
        @actualFinish = N'08-03-2016 4:00:00 PM',
        @actualEndDate = N'08-03-2016 4:00:00 PM',
        @UserDate1 = N'27-01-2016 8:00:00 AM',
        @IsCompleted = 1,
        @PercentComplete = 1,
        @UStmp = N'jsuske',
        @SchedukeTaskID = 597295,
        @SortOrder = 19

SELECT  'Return Value' = @return_value
GO

您没有计算或初始化总和,而是计算最后一个元素加1.使用:

for (z = 0; z < num; ++z) {
   sum = arr[z]+1;
}

除此之外,在计算平均值之前,您还没有填充数组。还有其他各种问题。这是一个有效的实例。 http://ideone.com/5nOV81

答案 1 :(得分:2)

main中将数值输入数组后调用函数(现在的数组未初始化) -

for(a= 0; a < count; a++)
{
   scanf("%f",&initial[a]);
}
avg = average( initial, a); 
printf("The average is %f",avg); 
                       ^^ note specifier is %f not %d as you used

在您的函数average中代替此 -

sum = arr[z]+1;

做 -

sum+= arr[z];  //initliaze sum to 0 before loop 

答案 2 :(得分:1)

您的结果始终为零,因为您在读取变量WHERE date_format(o.orderdate, '%Y-%m') = '2014-10' 和数组a之前调用平均方法...

initial

答案 3 :(得分:0)

你有几个错误

将是sum + = arr [z];
你必须将sum初始化为0

sum=0;

for (z = 0; z < num; ++z) {
 sum += arr[z];
}

你必须在读完所有数字后调用函数平均值

for(a= 0; a < count; a++)
{
scanf("%f",&initial[a]);
}
avg = average(initial, a);

虽然平均值的返回类型是浮点数,因此您必须在printf中使用%f

printf("The average is %f",avg);