这种错误不是第一次,可会死就是不会改!!求助,谢谢!
某次考试结束后,需要分析考试成绩的一些情况,例如,需要分析学生成绩之间相差是否很大,也就是分数偏离平均值的程度如何,偏离得越厉害表示两极分化越严重,此时可利用统计学中“标准差”来进行计算。对于离散的随机变量,方差的计算公式为:Input
第一个正整数给定测试用例的个数k。
对于每个测试用例有2行,第一行有一个正整数表示实验数据的个数n(0<n<=1000)。其后的一行中有n个学生的成绩x(0<=x<=100),成绩可能带有一位小数。
Output
输出按公式计算得到的标准差,结果保留2位小数。
Sample Input
1
10
90 85 73.5 64 90.5 76 82 97 61 83
Sample Output
11.61
代码=======
#include<malloc.h>
#include<math.h>
#include<iostream>
#include<iomanip>
using namespace std;
int *Make1DArray(int line)
{
double *p=NULL;
p=(double *)malloc(sizeof(double *)*line);
if(p==NULL)
//return p;
return 0;
}
void Diliver1DArray(double *p,int line)
{
int i;
for(i=0;i<line;i++)
{
free(p+i);
}
p=NULL;
}
int main()
{
int i,j,line;
double *p,sum=0,everage,all=0;
double dx;//dx表示方差
cin>>line;
p=Make1DArray(line);//就是这句有问题
for(i=0;i<line;i++)
{
cin>>p[i];
sum=sum+p[i];
}
everage=sum/(line*1.0);
for(j=0;j<line;j++)
{
all=all+(everage-p[j])*(everage-p[j]);
}
dx=sqrt(all/(line*1.0));
cout<<setprecision(2)<<dx;
Diliver1DArray(p,line);
return 0;
}