密立根油滴实验数据处理C程序.docx
密立根油滴实验数据处理C程序#include "stdio.h" #include "math.h" #define b 0.00822/修正常数 #define p 101300/大气压强 #define q 981/油滴密度 #define g 9.8/重力加速度 #define Pi 3.1415926/圆周率 #define d 0.005/极板距离 #define j 0.0000183/空气粘滞系数 #define l 0.0015/下落距离 #define e 1.602*0.0000000001*0.000000001/单位电荷量10E-19 long double ex6,sume=0;/用于存储各个油滴的计算电荷量和所有油滴电荷量总和的存储 double Q=0,a=0,U=0,t=0,tp=0,sumt=0,tx6;/Q-油滴计算带电量、a-中间量 long double e0=1.602*0.0000000001*0.000000001; int i,N=0,k; int flag=0; char z; void main e0=e; printf("是否需要计算平均下落时间(y or n)?n"); z=getchar; if(z='y') for(i=1;i<=6;i+) sumt=0; printf(" *第%d滴油滴* n",i); for(k=1;k<=4;k+) printf("请输入第%d次下落时间nt=",k); scanf("%lf",&tp); sumt=sumt+tp; txi=sumt/4; printf("平均下落时间:t=%lfn",txi); flag=1; if(z='n')|flag=1) for(i=1;i<=6;i+) printf(" *第%d滴油滴* n",i); printf("请输入电压平均值U:nU="); scanf("%lf",&U); if(flag=0) printf("请输入下落时间平均值t:nt="); scanf("%lf",&t); if(flag=1)t=tx1; a=sqrt(9*j*l/2/q/g/t); printf("中间量a=%En",a); Q=18*Pi/sqrt(2*q*g)*d/U; Q=Q*pow(j*l/t/(1+b/p/a),1.5); N=(int)(long double)Q/(long double)e0); if(long double)Q/(long double)e0)-N>=0.5)N+;/四舍五入 exi=(long double)Q/N; sume=sume+exi; printf("电荷量q=%E 电荷个数N=%d 计算单位电荷量ei=%en",Q,N,exi); printf("nnn平均电子电荷e=%en相对误差E=%e",sume/6,(sume/6-e0)/e0);