当前位置:编程学习 > C#/ASP.NET >>

菜鸟求教

这是我的电子测量C语言程序“测量误差自动数据处理程序的设计”实验程序,为什么老是出错?


#  include  "stdio.h"
#  include  "math.h"
# define  N  100
float    Data[N],  vi[N]; 
 /*定义常用变量为全局变量*/
float    ave,  sumxi,   sumvi,  sums2,  s,  s2;
int     n,  h;  /*h用来判断是否存在系统误差*/
/************************
函数名:main( )
函数功能:主系统流程,输入数据、显示测量结果
*************************/
void fun( );
void deline( );
void delcyc( );
void main( )
{int I,c=2;
double t=2.26;
float aves,aves2,u;
printf("请输入要输入得数的个数:");
scanf("%d",&n);
printf("请输入%d个数",n);
for(I=0;I<n;I++)
scanf("%f",&Data[I]);
printf("/n输入的%d个数为:",n);
for(I=0;I<n;I++)
printf("%f",Data[I]);
printf("剔除坏值并求测量值的方差与标准差");
fun( );         /*Data[M]及n都定义为全局变量,所以只调用函数,不传递参数*/
printf("判断有无线形系统误差:");
deline( );       /*调用函数*/
printf("判断有无周期性系统误差:");
delcyc( );      /*调用函数*/
if(h=1)       /* h=1说明存在系统误差*/
c=sumvi/(float)n;     /* 消除系统误差*/
for(I=0;I<n;I++)
Data[I]=Data[I]+c;
printf("修正后的数据为:");
for(I=0;I<n;I++)
printf("%f",Data[I]);
printf("计算样本平均值的方差与标准差:");
aves2=s2/(float)n;
aves =sqrt(aves2);
printf("/n样本平均值的方差为:%f",aves2);
printf("/n样本平均值的标准差为:%f",aves);
if(n>20) u=c*aves;
else u=t*aves;
printf("测量结果的不准确度为:%f",u);
printf("测量的最终结果为:A=%f+-%f",ave,u);  
/*****************************************
函数名:fun( )
函数功能:剔除坏值并求测量值的方差与标准差的估计值
******************************************/
void    fun( )
{int    I,  j,  k;
 float  sumxi=0.0,  sumvi=0.0,  sums2=0.0;
 float  Ar[n],  t;
 for (I=0; I<n;I++)
  {sumxi=sumxi+Data[I];
  sums2=sums2+Data[I]*Data[I];}
  ave=sumxi/(float)n;
  for (I=0;I<n;I++)
  {vi[I]=Data[I]-ave;
  sumvi=sumvi+vi[I];}
s2=(sums2-n*ave*ave)/(float)(n-1);
s=sqrts2;
for(I=0;I<n;I++)
Ar[I]=fabs(vi[I]);
t=Ar[0];j=0;
for(I=0;I<n;I++)
 if(Ar[I]>t)
{t=Ar[I];j=I;}
 if((t-3*s)>=0)
{printf("第%d个数据是坏值",j++);
 printf("坏值=%f",Data[I])
for(k=j+1;k<n;k++)
 {Data[j]=Data[k];n=n-1;}
  fun( );}
  else {printf("平均值为:%f",ave);
  printf("样本方差为:%f",s2);
  printf("样本方差为:%f",s);}
}
/********************************
函数名:deline( )
函数功能:判断是否存在线性系统误差
*********************************/
void  deline( )
{int I;
float P=0.0,Q=0.0,M;
if (n%2=0)
{for (I=0;I<n/2;I++)
P=P+vi[I];
For (I=n/2;I<n;I++)
Q=Q+vi[I];}
else {for (I=0;I<(n-1)/2;I++)
P=P+vi[I];
for(I=(n-1)/2;I<n;I++)
Q=Q+vi[I];}
M=P-Q;
If(M=e^-3)
Printf("不存在线形系统误差");
else
printf("/n存在线形系统误差" );n=1;}}
/********************************
函数名:delcyc( )
函数功能:判断是否存在周期性系统误差
*********************************/
void delcyc( )
{int I; float sum=0.0;
for(I=0;I<n-1;I++)
sum=sum+vi[I]*vi[I+1];
if(fabs(sum)>sqrt(n-1)*s2)
printf("存在周期误差");h=1;}; --------------------编程问答-------------------- 这里是C#板块~撸主可以发到开发语言/框架 目录下的C语言板块求解答哦~~~~

--------------------编程问答--------------------
补充:.NET技术 ,  其他语言
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,