你的意思是要讓數(shù)組長度可變嗎?也可以:
//計(jì)算平均數(shù),方差,標(biāo)準(zhǔn)差。不是,我是指我可以自己輸入一組數(shù)據(jù)。比如,我要輸入一組學(xué)生的成績,求其平均值,方差,標(biāo)準(zhǔn)差。刪除語句
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>
void TongJi(double a[],int n,double *aver,double *vari,double *stdDev){
//對長度為n的數(shù)組a進(jìn)行統(tǒng)計(jì),統(tǒng)計(jì)其平均值aver、方差vari、標(biāo)準(zhǔn)差stdDev
int i;
double *p,aver2;
*aver=0.0;
for(p=a+(n-1);p>=a;--p){
*aver+=*p;//累加各元素
aver2+=(*p)*(*p);//累加各元素的平方
}
*aver/=n;//求平均值
aver2/=n;//求平方的平均值
*vari=aver2-(*aver)*(*aver);//計(jì)算方差
*stdDev=sqrt(*vari);//計(jì)算標(biāo)準(zhǔn)差
}
int main(){
double *a,pj,fc,bzc;
int i,N;
printf("Input N:"); scanf("%d",&N);
a=(double *)malloc(sizeof(double)*N);//為a分配數(shù)組內(nèi)存空間
if(!a)return 0;//如果分配失敗,退出
srand(time(NULL));
for(i=0;i<N;++i){
a[i]=rand()/(RAND_MAX+1.0); //產(chǎn)生隨機(jī)小數(shù)[0,1)
printf("%lg ",a[i]);
}
TongJi(a,N,&pj,&fc,&bzc);
printf("\nPingJun=%lg, FangCha=%lg, BiaoZhunCha=%lg",pj,fc,bzc);
free(a);//釋放a數(shù)組所占空間
printf("\nFinished!\n");
getch();
return 0;
}
srand(time(NULL));
將語句:
a[i]=rand()/(1.0+RAND_MAX);
修改為:
scanf("%lf",&a[i]);
OK了。這種簡單的修改應(yīng)該要自己學(xué)著做,不能太依賴哦!