如何使用一组用户输入计算多种方法?

时间:2013-09-15 21:43:38

标签: c mean

在提示用户输入5个整数后,我试图计算算术,几何和调和平均值以及标准偏差。

我的算术平均值很好。它之后的其他人很麻烦..我几乎是积极的,因为我的结构,但我不确定在网上和我的教科书中进行研究后会发生什么变化...并且对此有任何帮助!

以下是代码:

#include <math.h>
#include <stdio.h>
#include <stdlib.h>

float a_mean;
float g_mean;
float h_mean;
float st_dev;
sum1 = 0; sum2 = 0; sum3 = 0;
float data[100];
n = 5;
int i;

int main()
{

    printf("Please Enter Five Integers:\n"); /* Prompts user input */

            for ( i = 0; i < n; ++i)
                {
                    scanf("%f", &data[i]);
                    sum1 = sum1 + data[i];
                }
            a_mean = sum1 / n;

                {
                    sum2 = sum2 * data[i];
                }
            g_mean = pow(sum2, 1 / n);

                {
                    sum3 = sum3 + ( 1 / data[i] );
                }
            h_mean = n / sum3;

    printf("Arithmetic mean: %0.2f\n", a_mean);
    printf("Geometric mean: %0.2f\n", g_mean);
    printf("Harmonic mean: %0.2f\n", h_mean);

    return 0;
}

我知道它可能是我的结构基本的东西,但我对这些东西还不太了解,所以提前谢谢

**另外,请忽略我尚未尝试为标准偏差形成计算/输出的事实。感谢

3 个答案:

答案 0 :(得分:1)

要么在一个for循环中进行所有求和 或做三个for循环。

既然你开始尝试两个!

Here is the code:
#include <math.h>
#include <stdio.h>
#include <stdlib.h>

float a_mean;
float g_mean;
float h_mean;
float st_dev;
sum1 = 0; sum2 = 0; sum3 = 0;
float data[100];
n = 5;
int i;

int main()
{

    printf("Please Enter Five Integers:\n"); /* Prompts user input */

            for ( i = 0; i < n; ++i)
                {
                    scanf("%f", &data[i]);
                    sum1 = sum1 + data[i];
                    sum2 = sum2 * data[i];
                    sum3 = sum3 + ( 1 / data[i] );
                }

            a_mean = sum1 / n;
            g_mean = pow(sum2, 1 / n);
            h_mean = n / sum3;

           printf("Arithmetic mean: %0.2f\n", a_mean);
           printf("Geometric mean: %0.2f\n", g_mean);
           printf("Harmonic mean: %0.2f\n", h_mean);

    return 0;
}

答案 1 :(得分:0)

你的问题是for循环只运行scanf,然后改变sum1。您需要将sum2 = sum2 * data[i]sum3 = sum3 + (1 / data[i])移动到for循环的主体中(在for循环之后的{}内部。)

答案 2 :(得分:0)

首先 - 你的代码没有编译,你在全局变量中缺少一堆类型。第二 - 你不能分解循环并继续使用大括号,你在第一个循环之后拥有的几个集合将只作为普通代码执行一次,因此其他总和不能正确收集。

至于风格 - 尝试使用较少的全局,这是一个坏习惯