我有一个20位长的数组;我想找到数组中所有负数的算术平均值,然后从该数组的每个元素中减去该数。 问题是,当我尝试将负数的值之和除以负数(以求平均值)时,它会自动四舍五入为最接近的整数
这是代码:
int main()
{
double a1 = 0.0;
double b2 = 0.0; // arth mean
int arr[20] = {12, -30, 23, -43, 51, 26, 0, 88, 19, -10, 11, 2, 23, -14, 15, 6, -7, 1, -19, 120};
for(int i = 0; i < 20; i++) {
if(arr[i] < 0) {
a1 += arr[i]; // sum of negative numbers
}
}
b2 = a1 / 6;
cout << b2;
for(int i = 0; i < 20; i++) {
arr[i] = arr[i] - b2;
}
for(int i = 0; i < 20; i++) {
cout << arr[i] << " ";
}
return 0;
}
答案 0 :(得分:1)
您正在arr
中进行更改,int
是类型为int
的数组,因此每种浮动数据类型都将自动更改为忽略小数点,其余数字为int 5 = 5.9;
,即{{1 }}等于5
,这是最后一行的答案。因此,将数组arr
转换为float或double数据类型。
float arr[20] = {12, -30, 23, -43, 51, 26, 0, 88, 19, -10, 11, 2, 23, -14, 15, 6, -7, 1, -19, 120};
for(int i = 0; i < 20; i++) {
if(arr[i] < 0) {
a1 += arr[i]; // sum of negative numbers
}
}
答案 1 :(得分:-1)
我只是在本地运行代码,它确实吐出-20.5。完整的输出是这样的:
-20.532 -9 43 -22 71 46 20 108 39 10 31 22 43 6 35 26 13 21 1 140
也许您感到困惑的是,您不是在第一个数字之后添加空格?试试
cout << b2 << " ";
相反,也许它将更加清晰。另请注意,这样做时:
arr[i] = arr[i] - b2;
RHS是浮点型,存储在arr[i]
中会被截断。为避免这种情况,请将arr
设置为浮点数而不是整数。