用于添加和获取用户定义的一维数组的平均值的函数
Function for addition and getting average of a user defined single dimensional array
这就是问题"Write a function which gets an integer array and number of elements as parameters and calculates and displays sum and average of all the integers of the array in C language"
下面是我完成的代码,它是 运行 但包含给出错误答案的错误
#include <stdio.h>
void SumAvg(int x, int arr[x]) {
int i, sum = 0;
float avg = 0;
for (i = 0; i < x; ++i) {
sum += arr[i];
}
avg = (float)sum / x;
printf("The sum is %d", sum);
printf("\nThe average is %.2f", avg);
}
int main() {
int x, i;
printf("Enter number of elements");
scanf("%d", &x);
int arr[x];
for (i = 0; i < x; ++i) {
printf("Enter integers for array[%d]", i + 1);
scanf("%d", &arr[i]);
}
SumAvg(x, arr[x]);
return 0;
}
首先,你的函数调用是错误的。应该是SumAvg(x,arr)
而不是SumAvg(x, arr[x]);
。
同样在函数声明中,在某些编译器中 void SumAvg(int x, int arr[x])
可能有问题。
对于初学者,函数应该按以下方式声明
void SumAvg( const int arr[], size_t n );
声明数组的参数应具有限定符const
,因为数组在函数中未更改。
数组元素的数量应具有 size_t
.
类型
函数定义如下所示
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 );
}
即在函数内,变量 sum 的类型应为 long long int
以减少溢出的风险。
一般情况下,用户可以将等于 0 的元素数传递给函数。在这种情况下,如果不检查此值,函数将具有未定义的行为。
本次函数调用
SumAvg(x, arr[x]);
无效,因为您没有传递数组,而是传递了索引为 x
.
的不存在的元素
考虑到上面提供的函数定义,函数的有效调用如下所示
SumAvg( arr, x );
这就是问题"Write a function which gets an integer array and number of elements as parameters and calculates and displays sum and average of all the integers of the array in C language"
下面是我完成的代码,它是 运行 但包含给出错误答案的错误
#include <stdio.h>
void SumAvg(int x, int arr[x]) {
int i, sum = 0;
float avg = 0;
for (i = 0; i < x; ++i) {
sum += arr[i];
}
avg = (float)sum / x;
printf("The sum is %d", sum);
printf("\nThe average is %.2f", avg);
}
int main() {
int x, i;
printf("Enter number of elements");
scanf("%d", &x);
int arr[x];
for (i = 0; i < x; ++i) {
printf("Enter integers for array[%d]", i + 1);
scanf("%d", &arr[i]);
}
SumAvg(x, arr[x]);
return 0;
}
首先,你的函数调用是错误的。应该是SumAvg(x,arr)
而不是SumAvg(x, arr[x]);
。
同样在函数声明中,在某些编译器中 void SumAvg(int x, int arr[x])
可能有问题。
对于初学者,函数应该按以下方式声明
void SumAvg( const int arr[], size_t n );
声明数组的参数应具有限定符const
,因为数组在函数中未更改。
数组元素的数量应具有 size_t
.
函数定义如下所示
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 );
}
即在函数内,变量 sum 的类型应为 long long int
以减少溢出的风险。
一般情况下,用户可以将等于 0 的元素数传递给函数。在这种情况下,如果不检查此值,函数将具有未定义的行为。
本次函数调用
SumAvg(x, arr[x]);
无效,因为您没有传递数组,而是传递了索引为 x
.
考虑到上面提供的函数定义,函数的有效调用如下所示
SumAvg( arr, x );