首页 > 解决方案 > 将生成的数组乘以值 x 并找到平均值

问题描述

这是我正在使用的当前代码:

#include<stdio.h>

int main()
{
   //1
    int NUM[] = {1,2,3,4,5,6,7,8,9,10};
    int i,j,k;
    int len = sizeof NUM / sizeof * NUM;

    //3
    int ODD[len];
    int EVEN[len];

    //4
    j = 0;
    k = 0;

    //5
    int sum = 0;
    int average;

    for(i = 0; i<10 ; i++){
        //5
        if(NUM[i]%2 == 0){
            EVEN[j] = NUM[i];
            j++;
        }else{
            ODD[k] = NUM[i];
            k++;
        }
    }


    //6
    printf("Even numbers : ");
    for(i = 0;i<j; i++){
        printf("%d ",EVEN[i]);
    }

    printf("\nOdd numbers : ");
    for(i = 0;i<k; i++){
        printf("%d ",ODD[i]);
    }

    printf("\nFrequency of EVEN array is :");
    for(i = 0;i<j; i++){
        sum = sum + EVEN[i];
        average = sum / j;
        printf("%d ",average);
    }

    printf("\n");
}

输出:

Even numbers : 2 4 6 8 10 
Odd numbers : 1 3 5 7 9 
Frequency of EVEN array is :0 1 2 4 6

我要做的是将生成的 EVEN[i] 数组乘以 0.02,然后找到该新数组的平均值/平均值并将其反转。在公式中,它将是 1 /mean(EVEN[i]*=0.02)。我坚持使用提到的操作来操作 EVEN[i] 数组。

编辑1:我的平均代码:


    double Arr[i];
    for(i=0;i<j;i++){
    Arr[i] = EVEN[i]*0.02;
    printf("%f ", Arr[i]);
    }

    printf("\nAverage of EVEN array is :");
    size_t n = sizeof(Arr)/ sizeof (Arr[0]);
    for(i = 0;i<j; i++){
        sum = sum + Arr[i];
    }
        average = sum / n;
        // printf("%d ",n);
        printf("%f ",average);
        return 0;
}

输出:

Average of EVEN array is :0.000000 

不知道为什么它显示0。

标签: arrayscaverageelementmultiplication

解决方案


对于由 Even[i]*0.02 项组成的新数组

double Arr[j];
for(let i=0;i<j;j++){
    Arr[i] = Even[i]*0.02;
}

现在对于逆数组,你可以简单地做

double Arr2[j];
for(let i=0;i<j;j++){
    Arr2[i] = 1/Arr[i];
}

或者,如果您想直接执行此操作,您可以执行

double Arr[j];
for(let i=0;i<j;j++){
    Arr[i] = 1/(Even[i]*0.02);
}

还是我从你的问题中遗漏了什么?


推荐阅读