如何使用双参数调用以下 void 函数?
How can I call the following void function with double parameters?
这就是我目前拥有的,我不知道该怎么做才能做到这一点运行:
void avg_sum(double a[], int n, double *avg, double *sum) {
int i;
*sum = 0.0;
for (i = 0; i < n; i++)
*sum += a[i];
*avg = *sum / n;
}
int main () {
int array[5] = {1, 2, 3, 4, 5};
int avg = 3;
int sum = 2;
avg_sum(array, 5, avg, sum);
}
我尝试操纵 运行 函数的参数,但我不知道如何让它工作。可以很简单,我只需要编写一个程序来测试 avg_sum
函数。该部分必须保持不变。
你想要这个:
int main () {
double array[5] = {1, 2, 3, 4, 5}; // use double
double avg = 3;
double sum = 2;
avg_sum(array, 5, &avg, &sum); // call with &
}
avg_sum
在 double
上运行,因此您需要提供双打。
- 参数3和4必须指针加倍,因此需要使用地址运算符
&
.
所有这些都包含在您的初学者 C txt 书的第一章中。
对于初学者这些初始化
int avg = 3;
int sum = 2;
没有意义。
至少将这些变量初始化为零更有意义
int avg = 0;
int sum = 0;
函数 avg_sum
期望第三个和第四个参数通过指向它们的指针的引用被接受。
void avg_sum(double a[], int n, double *avg, double *sum) {
所以函数必须这样调用
avg_sum(array, 5, &avg, &sum);
该函数还期望使用类型说明符 double
声明的第一个、第三个和第四个参数,但您正在传递使用类型说明符 int
.
声明的参数
函数本身应按以下方式声明和定义
void avg_sum( const int a[], size_t n, double *avg, int *sum )
{
*sum = 0;
for ( size_t i = 0; i < n; i++ )
{
*sum += a[i];
}
*avg = n == 0 ? 0.0 : *sum / n;
}
因此在 main 中,变量 avg
和 sum
必须声明为
double avg = 0.0;
int sum = 0;
同样在函数调用后
avg_sum(array, 5, &avg, &sum);
看来你应该输出获得的值,例如
printf( "sum = %d, average = %.2f\n", sum, avg );
这就是我目前拥有的,我不知道该怎么做才能做到这一点运行:
void avg_sum(double a[], int n, double *avg, double *sum) {
int i;
*sum = 0.0;
for (i = 0; i < n; i++)
*sum += a[i];
*avg = *sum / n;
}
int main () {
int array[5] = {1, 2, 3, 4, 5};
int avg = 3;
int sum = 2;
avg_sum(array, 5, avg, sum);
}
我尝试操纵 运行 函数的参数,但我不知道如何让它工作。可以很简单,我只需要编写一个程序来测试 avg_sum
函数。该部分必须保持不变。
你想要这个:
int main () {
double array[5] = {1, 2, 3, 4, 5}; // use double
double avg = 3;
double sum = 2;
avg_sum(array, 5, &avg, &sum); // call with &
}
avg_sum
在double
上运行,因此您需要提供双打。- 参数3和4必须指针加倍,因此需要使用地址运算符
&
.
所有这些都包含在您的初学者 C txt 书的第一章中。
对于初学者这些初始化
int avg = 3;
int sum = 2;
没有意义。
至少将这些变量初始化为零更有意义
int avg = 0;
int sum = 0;
函数 avg_sum
期望第三个和第四个参数通过指向它们的指针的引用被接受。
void avg_sum(double a[], int n, double *avg, double *sum) {
所以函数必须这样调用
avg_sum(array, 5, &avg, &sum);
该函数还期望使用类型说明符 double
声明的第一个、第三个和第四个参数,但您正在传递使用类型说明符 int
.
函数本身应按以下方式声明和定义
void avg_sum( const int a[], size_t n, double *avg, int *sum )
{
*sum = 0;
for ( size_t i = 0; i < n; i++ )
{
*sum += a[i];
}
*avg = n == 0 ? 0.0 : *sum / n;
}
因此在 main 中,变量 avg
和 sum
必须声明为
double avg = 0.0;
int sum = 0;
同样在函数调用后
avg_sum(array, 5, &avg, &sum);
看来你应该输出获得的值,例如
printf( "sum = %d, average = %.2f\n", sum, avg );