在提示用户输入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;
}
我知道它可能是我的结构基本的东西,但我对这些东西还不太了解,所以提前谢谢
**另外,请忽略我尚未尝试为标准偏差形成计算/输出的事实。感谢
答案 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)
首先 - 你的代码没有编译,你在全局变量中缺少一堆类型。第二 - 你不能分解循环并继续使用大括号,你在第一个循环之后拥有的几个集合将只作为普通代码执行一次,因此其他总和不能正确收集。
至于风格 - 尝试使用较少的全局,这是一个坏习惯