3

我有一个简短的程序,它应该将浮点值数组传递给三个不同的函数,以返回总和、平均值和最小值。我无法弄清楚为什么函数返回 0 值(或者我是否错误地传递了数组?)

我确定我错过了一些简单而基本的东西,但是盯着这个看太久了,真的看不出有什么问题。

感谢任何输入。

#include <stdio.h>
#define NUM 5


float array_sum (float arr[]);
float array_avg (float arr[]);
float array_min (float arr[]);

int main ()
{
    float array_nums[NUM] = {1.23, 4.56, 7.89, 10.1, 2.34};
    float arr_sum;
    float arr_avg;
    float arr_min;

    arr_sum = array_sum(array_nums);
    arr_avg = array_avg(array_nums);
    arr_min = array_min(array_nums);

    printf("\nThe sum of the elements in the array is %f.\n"), arr_sum;
    printf("The average of the elements in the array is %f.\n"), arr_avg;
    printf("The smallest value in the array is %f.\n\n"), arr_min;

return (0);
}

float array_sum (float arr[])
{
    float sum = 0;
    int i;

    for (i = 0; i < NUM; i++)
    {
        sum += arr[i];
    }

return (sum);
}

float array_avg (float arr[])
{

    int i;
    float avg;
    float sum = 0;

    for (i = 0; i < NUM; ++i)
    {
        sum += arr[i];
    }

    avg = sum/NUM;

return (avg);
}

float array_min (float arr[])
{
    int i;
    float min = arr[0];

    for (i=0; i < NUM; ++i)
    {
        if (arr[i] < min)
        {
            min = arr[i];
        }
    }

return (min);
}
4

5 回答 5

5

正如其他人指出的那样,您的printf陈述是错误的;您将参数放在括号外(无意中,您使用了逗号运算符,它计算逗号左边的东西,然后是逗号右边的东西,并产生最后一个结果)。

如果您使用-Wall编译器标志,您的编译器通常会警告您(例如“缺少格式参数%f”)。通常,在使用 C 时,您应该打开大多数警告,因为它们通常会指出程序中的错误和错误,否则这些错误和错误可能很难发现。

于 2013-10-19T01:37:05.043 回答
5

printf的 s 在函数之外有参数:

printf("\nThe sum of the elements in the array is %f.\n"), arr_sum;
                                                        ^ end of arguments

应该

printf("\nThe sum of the elements in the array is %f.\n", arr_sum);
于 2013-10-19T01:33:29.643 回答
3

您的 printf 语句不正确。这是正确的方法:

printf("\nThe sum of the elements in the array is %f.\n", arr_sum);
printf("The average of the elements in the array is %f.\n", arr_avg);
printf("The smallest value in the array is %f.\n\n", arr_min);

您还可以通过执行以下操作来限制要显示的小数位:

printf("\nThe sum of the elements in the array is %0.2f.\n", arr_sum); //this will display 2 decimal places
于 2013-10-19T01:34:49.970 回答
3

快速浏览一下,这是一个括号问题:

printf("\nThe sum of the elements in the array is %f.\n"), arr_sum; 

应该:

printf("\nThe sum of the elements in the array is %f.\n", arr_sum); 
于 2013-10-19T01:36:34.910 回答
2

只是一个小错误。更正的代码在这里,

printf("\nThe sum of the elements in the array is %f.\n", arr_sum);
    printf("The average of the elements in the array is %f.\n",arr_avg) ;
    printf("The smallest value in the array is %f.\n\n", arr_min);
于 2013-10-19T01:36:48.417 回答