

求解第三题,需要用函数,感觉自己好像没什么错误,但就是弄不出来
嗯,有点小问题哈。在你的avg函数里,n应该是表示传入的数组长度的,但是你又打算用它来统计偶数的数量,这样就有问题了哈。你可以试试把"统计偶数数量"的变量,换一个名字,比如m,应该就没问题了哈,不要修改传入的n的值。如果还是不行的话,可以再来找我讨论哈
更新1,你看这样符合你的要求嘛
#include <stdio.h>
#include <stdlib.h>
const int N = 100; //数组长度
const int M = 1000000; // 随机数的最大值,用于取模
int main(){
int a[N];
for(int i = 0; i < N; i++){
a[i] = rand() % M; //随机初始化数组a
}
double esum = 0.0; //偶数之和,初始为0
int ecnt = 0; //偶数的数目,初始为0
for(int i = 0; i < N; i++){
if(a[i] % 2 == 0) { // 如果是偶数
ecnt++; // 偶数数目+1
esum += a[i]; // 偶数的和累加
}
}
if(ecnt > 0){ // 如果偶数数目不是0,则取平均值,否则不用计算平均值,因为初始就是0
esum = esum / ecnt;
}
printf("%.10f\n", esum);
return 0;
}