您好,欢迎访问三七文档
钢板厚度测量数据处理程序一、软件功能说明用户通过键盘完成录入数据后可一键求得测量数据列的算术平均值、方均根误差、算术平均值的标准差以及钢板厚度的测量结果。同时在程序中自带有数据输错可更改、自动检查录入数据中是否有σ3Vi的数据,若有系统会自动剔除并重新计算、自动检查是否满足01niiV的条件,若不满足会重新计算。二、软件使用说明用户根据提示逐个录入数据,在录入完成后回车即可看到运算结果。如果您在输入数据过程中发现上一个数据输入有误,您可以在当前数据位置敲入‘0’即可重新录入上一个数据。在录入完毕后,若软件发现您录入的数据不满足01niiV,系统会让您重新录入数据。三、软件代码#includestdio.h#includemath.hvoidmain(){inti,j,n=0,flag=1,flag1=1,flag2=0;//flag为判断残差和是否为零的标记,flag1为判断有无粗大误差的标记,flag2为显示有无舍弃值的标记intch;floata[100],b[100],c[100];//a里存放输入数据,b里存放残差,c里存放残差的平方floatsum=0,svi=0,vi2=0,fg=0;//sum为输入数据之和,svi为残差和,vi2为残差平方和,fg为方均根误差的平方floatrmse=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;i0;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;i0;i--)sum+=a[i];while(flag1)//当无粗大误差或剔除不符合要求数据之后跳出循环{for(i=j;i0;i--){b[i]=a[i]-sum/j;//计算残差c[i]=b[i]*b[i];//计算残差的平方svi+=b[i];//计算残差和vi2+=c[i];//计算残差的平方和}if(svi-0.010)//判断是否满足残差和约等于0{printf(计算有误请重新输入数据!\n);n=0;}elseflag=0;fg=vi2/(j-1);rmse=sqrt(fg);//计算方均根误差rmse3=3*rmse;for(i=j;i0;i--){if(b[i]rmse3)//判断数据是否满足条件,不满足的剔除,并重新计算{for(i=j-1;i0;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(经检查未发现Vi3σ\n);elseprintf(检查发现损坏值,已剔除!\n);armse=rmse/sqrt(j);printf(平均值=%fmm\n,sum/j);printf(残差和=%fmm\n,svi);printf(方均根误差=%fmm\n,rmse);printf(极限误差=%fmm\n,rmse3);printf(算数平均值的标准差=%fmm\n,armse);printf(钢板厚度=%fmm+/-%fmm\n,sum/j,3*armse);printf(========================================\n);printf(*******************祝您生活愉快********************\n);}四、运行结果图图片说明:录入的数据为书上例题,16个数据中无偏离值,残差和满足近似为0的要求。
本文标题:C语言作业
链接地址:https://www.777doc.com/doc-2908812 .html