本题希望输入 n (0<n<=100)个整数,求n个整数的均方差。若将 n个数的平均值记为 Avg,则均方差计算公式为:
函数接口定义:
double Avg ( int N, int data[] ); double StdDev( int N, int data[] );
函数Avg计算并返回数组的平均值;函数StdDev计算并返回n个数据的均方差。
其中 N
和 data
都是用户传入的参数。 N
是要计算的数据个数; data
是传入的数组。
裁判测试程序样例:
在这里给出函数被调用进行测试的例子。例如:
文章来源:https://www.toymoban.com/news/detail-512855.html
#include <stdio.h>
double Avg ( int N, int data[] );
double StdDev( int N, int data[] );
int main()
{
int N ,i, data[100];
scanf("%d", &N);
for(i=0;i<N;i++)
scanf("%d",&data[i]);
printf("Average = %.4f\n", Avg(N, data));
printf("Standard Deviation = %.4f",StdDev(N,data));
return 0;
}
/* 请在这里填写答案 */
输入样例:
10
6 3 7 1 4 8 2 9 11 5
输出样例:
Average = 5.6000
Standard Deviation = 3.0397
pta的一道题目,乍一看是简单的,但是由于没有提供math的头文件,我们只能自己想个办法实现他了,可以供参考文章来源地址https://www.toymoban.com/news/detail-512855.html
double Avg ( int N, int data[] )
{
double sum=0.0;
for(int i=0;i<N;i++)
{
sum+=data[i];
}
return sum/N;
}
double StdDev( int N, int data[] )
{
double square=0.0;
for(int i=0;i<N;i++)
{
square+=(data[i]-Avg(N,data))*(data[i]-Avg(N,data));
}
square/=N;
double root=square/3, last, diff=1;
if (square <= 0) return 0;
do {
last = root;
root = (root + square / root) / 2;
diff = root - last;
} while (diff > 2.25e-308 || diff < -2.25e-308);
return root;
}
到了这里,关于C语言实现PTA6-3 求集合数据的均方差的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!