我有一个短程序,它应该将浮点值数组传递给三个不同的函数,以返回总和,平均值和最小值。我无法弄清楚为什么函数返回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);
}
答案 0 :(得分:5)
你的printf
在函数之外有参数:
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);
答案 1 :(得分:5)
正如其他人指出的那样,你的printf
陈述是错误的;你把参数放在括号之外(不经意间,你使用逗号运算符,它评估逗号左边的东西,然后是逗号的右边,并产生最后的结果)。
如果你使用-Wall
编译器标志,你的编译器通常会警告你(例如&#34; %f
&#34;)缺少格式参数。通常,在使用C时应该打开大多数警告,因为它们经常会指出程序中的错误和错误,否则很难捕获。
答案 2 :(得分: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
答案 3 :(得分:3)
快速浏览一下,&#39;括号问题:
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);
答案 4 :(得分: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);