c - 如何在c中找到具有正数和负数的二维数组的总平均值

标签 c arrays

如何找到 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/

相关文章:

c - 传递参数使指针来自整数而不进行强制转换

c++ - bison和lex文法编译慢

Java-像素数组不从另一个类渲染另一个类

javascript - 使用 getImageData 使 Canvas 上的图像边缘褪色

javascript - 将类似字符串的数组替换为带有字符替换的数组

C - 如何将这个非常大/动态数组的代码调整为二维数组?

python - 引用数组的条件随机元素并替换它

c - 当我包含 <sys/ucred.h> 时,为什么 Xcode 4 Preview 5 无法解析 crget() 函数?

c - 如何覆盖二维数组中的第一行?

c - 为什么 GNU configure 将 SIZEOF_INT 等的宏定义为特定的整数值?