|
发表于 2019-12-1 21:51:31
|
显示全部楼层
本楼为最佳答案
本帖最后由 superbe 于 2019-12-1 22:35 编辑
- #include <stdio.h>
- #include <math.h>
- #define N 30
- #define e 2.71828
- int main(void)
- {
- int nums[N], freq[20] = {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[i]);
- sum += nums[i];
- freq[(nums[i] - 1) / 5]++; //频次加1
- }
- mu = (double)sum / N; //平均值
- for (i = 0; i < 20; i++) { //最大频次
- if (freq[i] > maxf)
- maxf = freq[i];
- }
- for (i = 0; i < 20; i++) { //求s
- g = maxf * pow(e, -pow((i + 1) * 5 - mu, 2));
- result += pow(freq[i] - 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
请按任意键继续. . . |
|