救急!!!
请帮我看一下,需要尽快谢谢本帖最后由 superbe 于 2019-12-1 22:35 编辑
#include <stdio.h>
#include <math.h>
#define N 30
#define e 2.71828
int main(void)
{
int nums, freq = {0};
int i, maxf = 0, sum = 0;
double mu, g, result = 0;
printf("输入%d个1-100之间的整数:\n", N);
for (i = 0; i < N; i++) { //输入整数
scanf("%d", &nums);
sum += nums;
freq[(nums - 1) / 5]++; //频次加1
}
mu = (double)sum / N; //平均值
for (i = 0; i < 20; i++) { //最大频次
if (freq > maxf)
maxf = freq;
}
for (i = 0; i < 20; i++) { //求s
g = maxf * pow(e, -pow((i + 1) * 5 - mu, 2));
result += pow(freq - g, 2);
}
printf("result = %f\n", result);
return 0;
}
-----------------------------------------------------------------------------------
输入30个1-100之间的整数:
23 19 90 43 12 87 45 94 38 44
34 65 76 99 100 28 33 50 43 68
22 34 87 62 71 60 51 77 99 39
result = 67.237480
请按任意键继续. . . 可以 讲解一下吗!?(?_?) superbe 发表于 2019-12-1 21:51
-----------------------------------------------------------------------------------
输入30个1-100 ...
我问题没看懂。。
本帖最后由 bin554385863 于 2019-12-3 03:54 编辑
{:10_258:}{:10_258:}{:10_258:}
……… 本帖最后由 superbe 于 2019-12-3 20:58 编辑
把1--100按每5个划分一段:
1--5为第1段,
6--10为第2段,
11-15为第3段,
......
96--100为最后一段,共20段
输入整数时看它落在哪一段就给对应的频次(代表这一段内数的数目)加1。频次数组有20个元素,对应20个段。
然后对20个段每段求出一个s(x)=(f(x)-g(x))2,其中:
x是该段的右边界值,第1段为5,第2段为10,第3段为15......。
f(x)等于该段的频次
g(x)按照题目给的公式计算
最后将所有段的s(x)加起来就是结果。
大致是这样的。
页:
[1]