我有一个代码,它计算一个由 10 个数字组成的数组的平均值,然后计算平均值与每个数字之间的差值。现在我需要把所有的差异加起来,但我不知道怎么做。这是我目前所拥有的:
#include <stdio.h>
#include<math.h>
int sum,mean,difference;
int main(void) {
int i,j;
int n[10] = {1,7,5,8,3,5,6,8,2,15};
for(j = 0; j < 10; j++ ){
sum = sum + n[j];
}
mean = sum/10;
printf("mean = %d\n",mean);
for(i = 0; i < 10; i++){
difference = mean - n[i];
printf("difference = %d\n",difference);
}
return 0;
}
答案 0 :(得分:1)
您需要为差值总和取一个新变量,并像计算平均值一样执行相同的操作。
#include <stdio.h>
#include<math.h>
int sum,mean,difference,sum_difference;
int main(void) {
int i,j;
int n[10] = {1,7,5,8,3,5,6,8,2,15};
for(j = 0; j < 10; j++ ){
sum = sum + n[j];
}
mean = sum/10;
printf("mean = %d\n",mean);
sum_difference = 0;
for(i = 0; i < 10; i++){
difference = mean - n[i];
printf("difference = %d\n",difference);
if(difference < 0) difference = -difference; // if difference is considered positive
sum_difference += difference;
}
printf("sum_difference = %d\n",sum_difference);
}
答案 1 :(得分:0)
根据您的描述,这似乎并不难。但是有一些陷阱。 例如,您应该考虑值溢出(决定是 int 还是 long)和数据类型等。 有一些 abs(绝对)函数,我现在不知道如何调用,所以我通过 if 做了绝对。
int sumOfDifference = 0;
for(i = 0; i < 10; i++){
int localDifference = mean - n[i];
if (localDifference < 0)
localDifference = 0 - localDifference;
sumOfDifference += localDifference;
}
printf("sum of difference = %d\n",sumOfDifference);
答案 2 :(得分:0)
您需要在代码中查看一些要点。
math.h
库吗?看到你提的问题,这里好像不需要这个库了。0
)。请参阅 here 以详细了解这可能如何为您的代码提供垃圾答案(尽管该语言是 c++
,但它对几乎所有编程语言都有效)。mean
变量不应是整数。你在这里很幸运,因为数组中的所有值加起来是一个可以被 10
整除的数字。假设 sum
的结果是 49,那么您就会遇到麻烦。同样,您还需要将变量 difference
定义为 float
。说了这么多,回到你的问题,把所有的差异加起来,在开始时将一个 float
变量(比如 sum_diff
)初始化为 0。然后在第二个 for
循环中,将代码修改为如下所示:
for(i = 0; i < 10; i++){
difference = mean - n[i];
sum_diff+=difference;
}
现在只需在循环外打印 sum_diff
即可查看您的答案。