给大学物理实验一点小小的震撼吧
大学物理实验中经常要进行数据处理 , 而处理的过程又如此的相似
因此直接写出一个计算大学物理数据处理的代码 , 要方便得很多
同时也欢迎各位提出改进意见
#include<stdio.h>
#include<math.h>
//Designed by JiangTang
//count这个函数使用来取小数位数并且自动四舍六入五取整的
//参数:raw原始数据 , wei需要取的位数
//返回值:已经按照输入的要求而进行取小数位的数据
double count(double raw,int wei);
int main()
{
int n,i;
float D,DA,DA_Front,DB,DB_Front,RLT_UN,UN,Error_instrument;
float Sum_Minor=0,Sum_Raw=0,Sum_Relative=0;
float Data[n];
printf("please enter the number of data");//数据个数
scanf("%d",&n);
printf("Please Enter the Error_instrument");//仪器误差
scanf("%f",&Error_instrument);
for(i=0;i<n;i++)
{
scanf("%f",&Data[i]);
}
for(i=0;i<n;i++)
{
Sum_Raw+=Data[i];//原始数据之和
}
printf("D的算数平均值为");
D = Sum_Raw/n; //得到原始数据累加平均值
printf("%f\n",D);
for(int i=0;i<n;i++)
{
float Temp = Data[i]-D;//中间变量
float zhongjian=pow(Temp,2);
printf("%f\n",zhongjian);
Sum_Minor+=zhongjian;//减去平均值之后的数组的平均值
}
printf("%f\n",Sum_Minor);
DA_Front = Sum_Minor/(n-1);
printf("%f\n",DA_Front);
printf("A类不确定度为");
DA = sqrt(DA_Front);
printf("%f\n",DA);
printf("B类不确定度为");
DB_Front = pow(Error_instrument,2)/3;
DB = sqrt(DB_Front);
printf("%f\n",DB);
Sum_Relative = pow(DA,2) + pow(DB,2);
//printf("%f",Sum_Relative);
printf("不确定度为");
UN = sqrt(Sum_Relative);
printf("%f\n",UN);
printf("相对不确定度为");
RLT_UN = UN/D;
printf("%f\n",RLT_UN);
return 0;
}
//四舍六入五取整
double count(double raw,int wei)//保存的位数
{
double copy=raw;
double point;
int front,back;
copy *= pow(10,wei+1);
raw *=pow(10,wei+1);
copy=(int)copy;//得到整数部分
printf("raw=%fn",raw);
point=raw-copy;
raw-=point;
printf("raw=%f\n",raw);
//raw/=pow(10,wei+1);
//printf("raw=%f",raw);
front=(int)raw/10%10;
back=(int)raw%10;
printf("front=%d,back=%d\n",front,back);
if(back>=6)
{
raw+=10;
}
else if(back ==5)
{
if(front == 1||front == 3||front == 5||front == 7||front == 9)
{
raw += 10;
}
}
else
{
raw = raw;
}
for (int k=0;k<wei+1;k++)
{
raw/=10.0;
}
printf("%lf",raw);
return raw;

浙公网安备 33010602011771号