数组中每三个连续数字的平均值



如何计算数组中每三个连续数字的平均值,然后打印每个结果?(在C中(

我试过这样做。

#include <stdio.h>
int main() {
int n,v[100],i;
float average;
int sum=0;
scanf("%d",&n);
for (i = 0; i < n; ++i) {
scanf("%d",&v[i]);
}

for(i=0;i<n;i+=3) {
sum=v[i]+v[i+1]+v[i+3];
average=sum/3;
printf("%.2f ", average);
}
return 0;
}

sum/3是具有int商的int除法。

若要同时具有小数部分,请使用浮点除法。

// average=sum/3;
average = sum / 3.0f;

for(i=0;i<n;i+=3) { sum=v[i]+v[i+1]+v[i+3];有访问超出v[]范围的数据的风险。CCD_ 6不是连续的。我希望v[i]+v[i+1]+v[i+2]

for (i = 0; i + 2 < n; i += 3) {
sum = v[i] + v[i+1] + v[i+2];

没有充分的理由使用float。使用double,除非空间/速度等需要float

同时避免溢出和精度损失。

for(int i = 0; i+2 < n; i += 3) {
double sum = 0.0 + v[i] + v[i+1] + v[i+2]; // Addition here uses FP math.
double average = sum/3.0;
printf("%.2f ", average);
}

更好的代码在末尾写一个'n',而不是以悬挂的" "结束。

const char *separator = "";
for(int i = 0; i+2 < n; i += 3) {
...
printf("%s%.2f ", separator, average);
separator = " ";
}
printf("n");

最新更新