《2022年fortran习题参考答案.pdf》由会员分享,可在线阅读,更多相关《2022年fortran习题参考答案.pdf(6页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、fortran习题参考答案工程分析程序设计上机作业 (五)模块化编程上机目的 :掌握内部例程、主程序、外部例程、模块等功能的使用方法。1、 有一个六边形,求其面积。为求面积,作了3 条辅助线。如图所示:(提示 ,三角形面积=()()()s sa sb sc,其中2abcs,a、b、c 为三个边长 )。要求 用内部函数来计算每个三角形的面积。l1=10 l2=30 l3=16 l4=13 l5=21 l6=14 l7=20 l8=36 l9=28 program main implicit none real : A(9)=(/10,30,16,13,21,14,20,36,28/) integ
2、er i real s s=area(A(3),A(4),A(7)+area(A(2),A(7),A(8)+ & area(A(1),A(8),A(9)+area(A(5),A(6),A(9) print*,The area is,s contains function area(x,y,z) implicit none real x,y,z real p,area p=(x+y+z)/2 area=sqrt(p*(p-x)*(p-y)*(p-z) end function end 2、 编写一个子例程子程序,SUM(S,T,N1,N2) 。把整型数 N1 到 N2 进行求与 ,并把求与的结果
3、放置到 S,把整型数N1 到 N2 进行求积 ,并把求积的结果放置到T。并用这个子程序来计精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 1 页,共 6 页 - - - - - - - - - - fortran习题参考答案算: (1234)(345678)(3*4*5*6)(1*2*3)yprogram main implicit none integer A(8) integer i,b,c,d,e,f,g,m,n,y b=0;d=0;g=1;n=1 do i=1,8 A(i)=i end do ca
4、ll sum(b,c,1,4) call sum(d,e,3,8) call sum(f,g,3,6) call sum(m,n,1,3) y=b+d+g-n print*,y=(1+2+3+4)+(3+4+5+6+7+8)+(3*4*5*6)-(1*2*3)=,y contains subroutine sum(s,t,N1,N2) integer s,t,N1,N2,i do i=N1,N2 s=s+A(i) t=t*A(i) end do end subroutine end 3、 编写函数子程序GDC 求两个数的最大公约数。求最大公约数的算法如下:把两个数中大的那个数作为被除数,两数相
5、除得到一个余数。把余数去除除数得到新一轮的余数。不断重复这一过程直到余数为0,这时的除数就就是两个数的最大公约数。调用此函数 ,求 1260,198,72 三个数的最大公约数。program main implicit none integer a,b,c,m,n,temp print*, 请输入三个数 : print*,a b c read*,a,b,c if (ab) then temp=a a=b b=temp end if 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 2 页,共 6 页 - -
6、 - - - - - - - - fortran习题参考答案call GDC(a,b,m) if (c1、0e-6) y=y+(-1)*(i-1)/2)*k*i/(fact(i) i=i+2 end do print*,sin(x) = ,y contains function fact(m) integer m,j,fact fact=1 do j=1,m fact=fact*j end do end function fact end subroutine sub 6、 编写程序 ,用欧拉法数值求解一阶微分方程。数值解法的基本思想:用差分方程代替微分方程,然后在若干个离散点上逐点求解差分方
7、程,得到各离散点x0, x1, x2, 等处函数, ( )dyfx y xdx的近似值y0, y1, y2, 。其中各离散点 x0, x1, x2, 之间的距离称为步长h。欧拉法的基本思想就是,一阶微分dydx可用向前差分代替,即11()nnyyyh。带入微分方程 ,可得1(,)nnnnyyf xyh因此 ,1*(,)nnnnyyhf xy,其中nnxxh1。当给定 x0, y0与步长 h 后,即可按下面步骤求得数值解: 0000(,)xfxyy1111,(,)yf xyx2222,nyfxyyx请按上述方法编写程序用Euler 法求解微分方程22dyyxdx,当 x0=0 时,y0=1、 0
8、。 取 h=0、1,试求出当 xi=0、1,0、2,0、3,0、4、,1、0 时的 yi值。精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 5 页,共 6 页 - - - - - - - - - - fortran习题参考答案program main implicit none real x(0:10) real y(0:10) real p(0:10) integer(2) i,j y(0)=1 、0; x(0)=0 、0 p(0)=f(x(0),y(0) do i=1,10 x(i)=x(i-1)+0 、1 end do do j=1,10 y(j)=y(j-1)+0 、1*p(j-1) p(j)=f(x(j),y(j) print*,x(,j,)=,x(j),y(,j,)=,y(j) end do contains function f(a,b) real a,b,f f=b*b-a*a end function end 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 6 页,共 6 页 - - - - - - - - - -