如何找到 c 中具有正数和负数的二维数组的总平均值
int data[4][5] = {
{3,-6,1,-5,7},
{-2,9,-3,5,4},
{7,3,-4,0,-6},
{9,-2,-5,8,3}
};
>Sum of all positive number
>Mean of all positve number
>Sum of all negative number
>Mean of all negative number
我是大学新生,明天有期末考试,请帮我练习。谢谢!
最佳答案
这里是一些适用于一维数组的代码。您可以理解这一点,并将其应用于您的 2D 问题。
我们需要变量来跟踪两个和(正数和负数),这些可以是 int 。我们需要两个变量来计算数组中有多少个正数和负数,它们也可以是 int 。然后我们需要两个变量来存储平均值。这些变量可以是浮点型,但最好只使用 double 型进行此类计算。最后,我们需要一个变量来索引数组。我通常使用 size_t
变量来处理此类事情,但这里我将使用另一个 int
。
循环遍历数组查找总和和计数后,就可以计算平均值了。这里需要注意的一个陷阱是所有参数都是 int 类型,因此如果我们计算:
mean_pos = sum_pos / count_pos;
我们将使用整数除法,并丢失结果的小数部分。我们可以乘以 count_pos * 1.0
将此值转换为 double
并使用浮点除法。
我应该指出,此代码不计算零值,这是您的问题规范所建议的。如果您想计算其中一种方法中的零(既不是正数也不是负数),修改代码应该是一件简单的事情。
祝你测试顺利。
#include <stdio.h>
int main(void)
{
int data[10] = { 3, -6, 1, -5, 7, -2, 9, -3, 5, 4 };
int sum_pos = 0;
int sum_neg = 0;
int count_pos = 0;
int count_neg = 0;
double mean_pos, mean_neg;
int i;
for (i = 0; i < 10; i++) {
if (data[i] > 0) {
sum_pos += data[i];
++count_pos;
} else if (data[i] < 0) {
sum_neg += data[i];
++count_neg;
}
}
mean_pos = sum_pos / (count_pos * 1.0);
mean_neg = sum_neg / (count_neg * 1.0);
printf("Sum of positive numbers: %d\n", sum_pos);
printf("Mean of positive numbers: %f\n", mean_pos);
printf("Sum of negative numbers: %d\n", sum_neg);
printf("Mean of negative numbers: %f\n", mean_neg);
return 0;
}
关于c - 如何在c中找到具有正数和负数的二维数组的总平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41157791/