编写一个函数saver(a,n),其中a是一维整型数组,n是a数组的长度,要求通过全局变量pave和nave将a数组中正数的平均值和负数的平均值传递给调用程序。C语言
时间: 2024-02-23 14:03:20 浏览: 19
下面是一个实现该功能的函数`saver`的例子:
```c
#include <stdio.h>
int pave, nave; // 全局变量
void saver(int a[], int n) {
int sum_p = 0, sum_n = 0;
int count_p = 0, count_n = 0;
// 计算正数和负数的和以及个数
for (int i = 0; i < n; i++) {
if (a[i] > 0) {
sum_p += a[i];
count_p++;
} else if (a[i] < 0) {
sum_n += a[i];
count_n++;
}
}
// 计算平均值
if (count_p > 0) {
pave = sum_p / count_p;
} else {
pave = 0;
}
if (count_n > 0) {
nave = sum_n / count_n;
} else {
nave = 0;
}
}
int main() {
int a[] = {1, 2, -3, 4, -5};
int n = sizeof(a) / sizeof(int);
saver(a, n);
printf("正数平均值: %d\n", pave);
printf("负数平均值: %d\n", nave);
return 0;
}
```
该函数通过遍历数组`a`,统计正数和负数的和以及个数,并计算出平均值。然后将正数平均值和负数平均值存储在全局变量`pave`和`nave`中,使得调用程序可以访问它们。在这个例子中,我们假设平均值为整数,并省略了处理浮点数的情况。
如果您对代码中的任何细节有疑问,请随时提出。