[英]Average for each three consecutive numbers in an array
如何計算數組中每三個連續數字的平均值,然后打印每個結果? (在 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[]
范圍的風險。 v[i]+v[i+1]+v[i+3]
不連續。 我希望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
。 除非空間需要float
/可能是速度等,否則請使用double
精度數。
還要避免溢出和精度損失。
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");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.