大物实验双棱镜测波长的程序.docx
- 文档编号:11434610
- 上传时间:2023-03-01
- 格式:DOCX
- 页数:16
- 大小:701.94KB
大物实验双棱镜测波长的程序.docx
《大物实验双棱镜测波长的程序.docx》由会员分享,可在线阅读,更多相关《大物实验双棱镜测波长的程序.docx(16页珍藏版)》请在冰豆网上搜索。
大物实验双棱镜测波长的程序
双棱镜干涉实验
这个程序是我用C语言程序编写的,经过反复的验证与修改,终于得到更精确的结果,实验用的是He-Ne激光器,如果光源不同,部分内容应做适当修改,程序内部,修改的部分我做了提示!
另一个程序是计算任何一个确定三角形面积的程序,我也经反复的验证与修改,使其运行结果进一步提高,别且能够判断操作员操作失误的情况!
#include
doublemax(doublef)
{
doublek,l,g;
k=f;
l=(int)f;
l=k-l;
l=l*10;
g=l;
l=(int)l;
g=g-l;
g=g/10;
if(g>=0.05)
f=f;
else
f=f+0.1;
returnf;
}
voidmain()
{
floatx1,x2,x3,x4,x5,x6,x7,x8,x9,x10,fabs(),sqrt();
floatA1,d11,d12,A2,d21,d22,A,d1,d2;
doubleq,m,n,d,D,x,y,f,e,k,l,h,cd,ab,ef;
printf("\t\t\t\t双棱镜干涉测波长\n\n");
printf("温馨提示:
所测数据的单位必须全化为mm\n");
printf("请依次输入x1x2x3x4x5x6x7x8x9x10的值:
\n");
scanf("%f%f%f%f%f%f%f%f%f%f",&x1,&x2,&x3,&x4,&x5,&x6,&x7,&x8,&x9,&x10);
printf("请依次输入A1,d11,d12\n");
scanf("%f%f%f",&A1,&d11,&d12);
printf("请依次输入A2,d21,d22\n");
scanf("%f%f%f",&A2,&d21,&d22);
if
(x1>0.0&&x2>0.0&&x3>0.0&&x4>0.0&&x5>0.0&&x6>0.0&&x7>0.0&&x8>0.0&&x9>0.0&&x10>0.0&&A1>0.0
&&d11>0.0&&d12>0.0&&A2>0.0&&d21>0.0&&d22>0.0)
{
A=A1-A2;
A=fabs(A);
d1=d11-d12;
d1=fabs(d1);
m=sqrt(d1);
d2=d21-d22;
d2=fabs(d2);
n=sqrt(d2);
d=d1*d2;
d=sqrt(d);
D=A*(m+n)/(m-n);
x=(x6+x7+x8+x9+x10-x1-x2-x3-x4-x5);
x=x/25;
y=d*x/D;
y=y*1000000;
ef=y/100;
e=y-632.8;
e=fabs(e);
e=e/632.8;
k=y*e;
e=e*100;
f=y*e/100;
ab=f/100;
cd=max(ab);
if(y>601.16&&y<664.44)/*此处为He-Ne激光器所测结果,如果光源不同,此处可进行适量修改*/
{
printf("\n波长λ=%4.1fe+002nm\n\n相对误差:
e=%4.1f%s\n\n绝对误差k=%4.1fnm\n\n",ef,e,"%",k);
printf("\n\n测量结果:
\n波长λ=(%3.1f±%3.1f)e+002nm\n\n相对误差e=%4.1f%s\n",ef,cd,e,"%");
}
else
printf("所测数据误差太大\n");
}
else
printf("输入有误\n");
}/*温馨提示下页有我操作过程的截图并且附有操作注意事项*/
求解任何三角形面积的程序
#include
#include
#definePI3.14159265358979323846264
doubleqiqihaerdaxue()
{
floata,b,c,area,s;
printf("请输入三角形的三条边a,b,c\n");
scanf("%f%f%f",&a,&b,&c);
if(a>0&&b>0&&c>0)
{
if((a+b)>c&&fabs(a-b) { s=(a+b+c)/2; area=sqrt(s*(s-a)*(s-b)*(s-c)); printf("三角形的面积为area=%f\n",area); } else printf("a,b,c不能构成三角形\n"); } else printf("对不起,三角形三边应为正数\n"); } doublejikong() { floata,b,c,s; printf("请按顺序输入三角形两边a,b及其夹角(角度制)θ\n"); scanf("%f%f%f",&a,&b,&c); if(c<0||c>180) printf("三角形内角必须在θ>0并且θ<180度之间\n"); else { if(a>0&&b>0) { c=c*PI/180; s=a*b*sin(c)/2; printf("三角形面积s=%f\n",s); } printf("三角形边必须为正数\n"); } } doublefcj1(doubler1,doublep1,doublek1) {doubleyx1,cx1,sjxm,a1,m1; yx1=-2*r1*cos(k1);/*r=bp=ck=h*/ cx1=r1*r1-p1*p1; m1=yx1*yx1-4*cx1; if(m1<0.0001) m1=0; a1=(-yx1+sqrt(m1))/2; sjxm=a1*p1/2; printf("三角形面积s=%f\n",sjxm); } doublefcj2(doubler2,doublep2,doublek2) {floatyx2,cx2,u1,u2,m2,a21,a22,area1,area2; yx2=-2*r2*cos(k2);/*r=bp=ck=h*/ cx2=r2*r2-p2*p2; m2=yx2*yx2-4*cx2; a21=(-yx2+sqrt(m2))/2; a22=(-yx2-sqrt(m2))/2; u1=(a21+r2+p2)/2; u2=(a22+r2+p2)/2; area1=sqrt(u1*(u1-a21)*(u1-r2)*(u1-p2)); area2=sqrt(u2*(u2-a22)*(u2-r2)*(u2-p2)); printf("三角形面积s1=%f\ts2==%f\n",area1,area2); } floatfcj3(floatr3,floatp3,floatk3) {floatyx3,cx3,u3,m3,a31,area3; yx3=-2*r3*cos(k3);/*r=bp=ck=h*/ cx3=r3*r3-p3*p3; m3=yx3*yx3-4*cx3; a31=(-yx3+sqrt(m3))/2; u3=(a31+r3+p3)/2; area3=sqrt(u3*(u3-a31)*(u3-r3)*(u3-p3)); printf("三角形面积s=%f\n",area3); } doublexueyuan() { floata,b,c,h,s,yx,cx,m,kw; printf("请输入角所对的边c\n"); scanf("%f",&c); printf("请输入另一边b\n"); scanf("%f",&b); printf("请输入角θ(角度制)\n"); scanf("%f",&h); if(h>0&&h<180) { h=h*PI/180; kw=b*sin(h); if(b>0&&c>0) { if(fabs(c-kw)<0.0001) c=kw; if(c==kw) { fcj1(b,c,h); } else { if(c { printf("所给值不能构成三角形\n"); } else { if(c>kw&&c { fcj2(b,c,h); } else { fcj3(b,c,h); } } } } else printf("三角形边必须为正数\n"); } else printf("三角形内角必须在θ>0并且θ<180度之间\n"); } doubledianqi() { floata,h; doubles; printf("请依次输入三角形的一条边a和此边上的高h\n"); scanf("%f%f",&a,&h); if(a>0&&h>0) { s=a*h/2; printf("三角形面积s=%f\n",s); } else printf("三角形底和高必须为正数\n"); } hehe() { floatah,bh,ch,mh,jk; doubles; printf("请入三角形的边a\n"); scanf("%f",&ah); printf("请输入边所对的角(角度制)α\n"); scanf("%f",&bh); printf("请输入另一个角(角度制)β\n"); scanf("%f",&ch); if(ch+bh>180) { printf("三角形内角和不能大于180度\n"); } else { if(ch<0||bh<0) { printf("三角形内角必须大于零\n"); } else { if(ah<0) { printf("三角形边必须为正数\n"); } else { mh=(180-ch-bh)*PI/180; bh=bh*PI/180; ch=ch*PI/180; s=(ah*ah*sin(ch)*sin(mh))/(2*sin(bh)); printf("三角形的面积s=%f\n",s); } } } } main() {intg; printf("1.已知三边求三角形面积请输入1\n"); printf("2.已知两边及其夹角求三角形面积请输入2\n"); printf("3.已知两边及其1对角求三角形面积请输入3\n"); printf("4.已知底和高求三角形面积请输入4\n"); printf("5.已知两角和一条边求三角形面积请输入5\n"); printf("请选择: "); scanf("%d",&g); switch(g) { case1: qiqihaerdaxue();break; case2: jikong();break; case3: xueyuan();break; case4: dianqi();break; case5: hehe();break; default: printf("选择有误: \n"); }/*别忘记下面还有一个大括号*/ }/*下页有我运行的结果,并且有运行时的注意事项*/
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验 棱镜 波长 程序
![提示](https://static.bdocx.com/images/bang_tan.gif)