C 用于添加和获取用户定义的一维数组的平均值的函数
这是一个问题“编写一个函数,获取整数数组和元素数作为参数,并用C语言计算和显示数组中所有整数的总和和平均值” 下面是我所做的代码,它正在运行,但包含错误的答案C 用于添加和获取用户定义的一维数组的平均值的函数,c,arrays,function-call,function-definition,C,Arrays,Function Call,Function Definition,这是一个问题“编写一个函数,获取整数数组和元素数作为参数,并用C语言计算和显示数组中所有整数的总和和平均值” 下面是我所做的代码,它正在运行,但包含错误的答案 #包括 无效SumAvg(整数x,整数arr[x]){ int i,和=0; 浮动平均值=0; 对于(i=0;i
#包括
无效SumAvg(整数x,整数arr[x]){
int i,和=0;
浮动平均值=0;
对于(i=0;i
首先,您的函数调用是错误的。它应该是SumAvg(x,arr)
而不是SumAvg(x,arr[x])代码>
同样在函数声明中,在某些编译器中,void SumAvg(int x,int arr[x])
可能会有问题。对于初学者,函数应该按照以下方式声明
void SumAvg( const int arr[], size_t n );
void SumAvg( const int arr[], size_t n )
{
long long int sum = 0;
for ( size_t i = 0; i < n; i++ )
{
sum += arr[i];
}
double avg = n == 0 ? 0 : ( double )sum / n;
printf( "The sum is %lld\n", sum );
printf( "The average is %.2f\n", avg );
}
这是声明数组应具有限定符const
的参数,因为数组在函数中没有更改
数组的元素数应具有类型size\t
函数定义可以如下所示
void SumAvg( const int arr[], size_t n );
void SumAvg( const int arr[], size_t n )
{
long long int sum = 0;
for ( size_t i = 0; i < n; i++ )
{
sum += arr[i];
}
double avg = n == 0 ? 0 : ( double )sum / n;
printf( "The sum is %lld\n", sum );
printf( "The average is %.2f\n", avg );
}
无效,因为您传递的不是数组,而是索引为x
的不存在元素
考虑到上面提供的函数定义,函数的有效调用如下
SumAvg( arr, x );
启用编译器警告。应该这样调用它:
SumAvg(x,arr)
函数的声明非常好。此语法用于自记录目的(很明显,它需要传递的数组大小)。@EugeneSh。我知道这很奇怪,但我收到了此错误不允许使用参数hane,您使用的是现代C编译器吗void SumAvg(int x,int arr[x])
在C99和C11或更高版本中是允许的。@chux VS.2019,实际上我使用的是VS.Research的最新版本。