C语言作业

  • 格式:doc
  • 大小:53.00 KB
  • 文档页数:4

钢板厚度测量数据处理程序
一、软件功能说明
用户通过键盘完成录入数据后可一键求得测量数据列的算术平均值、方均根误差、算术平均值的标准差以及钢板厚度的测量结果。

同时在程序中自带有数据输错可更改、自动检查录入数据中是否有σ3V >i 的数据,若有系统会自动剔除并重新计算、自动检查是否满足01=∑=n i i V
的条件,若不满足会重新计算。

二、软件使用说明
用户根据提示逐个录入数据,在录入完成后回车即可看到运算结果。

如果您在输入数据过程中发现上一个数据输入有误,您可以在当前数据位置敲入‘0’即可重新录入上一个数据。

在录入完毕后,若软件发现您录入的数据不满足01=∑=n i i V
,系统会让您重新录入数据。

三、软件代码
#include<stdio.h>
#include<math.h>
void main()
{
int i,j,n=0,flag=1,flag1=1,flag2=0; //flag 为判断残差和是否为零的标记,flag1为判断有无粗大误差的标记,flag2为显示有无舍弃值的标记
int ch;
float a[100],b[100],c[100]; //a 里存放输入数据,b 里存放残差,c 里存放残差的平方 float sum=0,svi=0,vi2=0,fg=0; //sum 为输入数据之和,svi 为残差和,vi2为残差平方和,fg 为方均根误差的平方
float rmse=0,rmse3=0,armse=0; //rmse 为方均根误差,rmse3是3倍的方均根误差,armse 为算数平均值的标准差
printf("\n");
printf("******************欢迎使用************************\n"); printf("============================================\n"); printf("请输入数据总量:");
scanf("%d",&j);
printf("================\n");
printf("¥数据总数=%d ¥\n",j);
printf("================\n");
while(flag) //当满足残差和为0条件时跳出循环
{
for(i=j;i>0;i--)
{
n++;
printf("请输入第%d个数据:",n);
scanf("%f",&a[i]);
if(a[i]==0) //判断用户是否要修改数据,当输入0时重新输入上一个数据
{
printf("修改命令准备重新录入数据!\n");
i=i+2;
n=n-2;
}
}
printf("\n");
for(i=j;i>0;i--)
sum+=a[i];
while(flag1) //当无粗大误差或剔除不符合要求数据之后跳出循环
{
for(i=j;i>0;i--)
{
b[i]=a[i]-sum/j; //计算残差
c[i]=b[i]*b[i]; //计算残差的平方
svi+=b[i]; //计算残差和
vi2+=c[i]; //计算残差的平方和
}
if(svi-0.01>0) //判断是否满足残差和约等于0
{
printf("计算有误请重新输入数据!\n");
n=0;
}
else
flag=0;
fg=vi2/(j-1);
rmse=sqrt(fg); //计算方均根误差
rmse3=3*rmse;
for(i=j;i>0;i--)
{
if(b[i]>rmse3) //判断数据是否满足条件,不满足的剔除,并重新计算
{
for(i=j-1;i>0;i--)
{
b[i]=b[i+1];
b[i+1]=0;
}
i++;
j=j-1;
sum=sum-a[i];
flag2=1;
}
else
{
flag1=0;
}
}
}
}
if(flag2==0)
printf("经检查未发现Vi>3σ\n");
else
printf("检查发现损坏值,已剔除!\n");
armse=rmse/sqrt(j);
printf("平均值=%f mm\n",sum/j);
printf("残差和=%f mm\n",svi);
printf("方均根误差=%f mm\n",rmse);
printf("极限误差=%f mm\n",rmse3);
printf("算数平均值的标准差=%f mm\n",armse);
printf("钢板厚度=%f mm+/-%f mm\n",sum/j,3*armse);
printf("========================================\n");
printf("*******************祝您生活愉快********************\n");
}
四、运行结果图
图片说明:录入的数据为书上例题,16个数据中无偏离值,残差和满足近似为0的要求。