【发布时间】:2017-10-08 06:30:32
【问题描述】:
这里是初学者 C 编码器,我正试图找出我的代码到底出了什么问题。我正在使用两个函数来计算用户输入的数组的总和和平均值。数组的大小由用户决定。我尝试查找示例,但没有找到很多有用的提示。我更有可能只是不明白我做错了什么。谁能给我一些建设性的批评和指导。谢谢!
#include<stdio.h>
/*function declarations*/
int addNumbers(int number[]);
float avgNumbers(int sum, int n);
int main(){
int i, n, number[100], sum, result;
float average;
printf("How many numbers do you want to enter?\n");
scanf("%d",&n);
for (i = 0; i < n ; i++)
{
printf("Enter the numbers %d:\n", i+1);
scanf("%d",&number[i]);
}
for (i = 0; i < n ; i++)
{
sum = 0;
sum = addNumbers(&number);
average = avgNumbers(sum,n);
}
printf("Sum: %d\n",sum);
printf("Average: %f\n",average);
return 0;
}
/*function returning the sum of the numbers*/
int addNumbers(int number[])
{
int i, n, sum;
for (i = 0; i < n ; i++)
sum += number[i];
return sum;
}
/*function returning the average of the numbers*/
float avgNumbers(int sum, int n)
{
average = sum/n
return average;
}
【问题讨论】:
-
问题很可能是当参数
sum和n都是ints 时,avgNumbers 进行整数除法,向下舍入。您必须将任一参数转换为float,即(float)sum/n,而不是使用double作为平均值,因为并非所有ints 范围都被float 覆盖。 -
而且,您没有将
n作为参数传递给addNumbers。您遇到了一些编译错误 - 需要将错误添加到问题中