fortran習題參考答案_第1頁
fortran習題參考答案_第2頁
fortran習題參考答案_第3頁
fortran習題參考答案_第4頁
fortran習題參考答案_第5頁
已閱讀5頁,還剩2頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、工程分析程序設計 上機作業(yè)(五)模塊化編程上機目的:掌握內(nèi)部例程、主程序、外部例程、模塊等功能的使用方法。1、 有一個六邊形,求其面積。為求面積,作了3條輔助線。如圖所示:(提示,三角形面積=,其中,a、b、c為三個邊長)。要求用內(nèi)部函數(shù)來計算每個三角形的面積。program main implicit none real : A(9)=(/10,30,16,13,21,14,20,36,28/) integer 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

2、),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 functionend2、 編寫一個子例程子程序,SUM(S,T,N1,N2)。把整型數(shù)N1到N2進行求和,并把求和的結果放置到S,把整型數(shù)N1到N2進行求積,并把求積的結果放置到T。并用這個子程序來計算:program main implicit none integer A(8) intege

3、r i,b,c,d,e,f,g,m,n,y b=0;d=0;g=1;n=1 do i=1,8 A(i)=iend do call 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

4、 subroutine end 3、 編寫函數(shù)子程序GDC求兩個數(shù)的最大公約數(shù)。求最大公約數(shù)的算法如下:把兩個數(shù)中大的那個數(shù)作為被除數(shù),兩數(shù)相除得到一個余數(shù)。把余數(shù)去除除數(shù)得到新一輪的余數(shù)。不斷重復這一過程直到余數(shù)為0,這時的除數(shù)就是兩個數(shù)的最大公約數(shù)。調用此函數(shù),求1260,198,72三個數(shù)的最大公約數(shù)。program main implicit none integer a,b,c,m,n,temp print*,'請輸入三個數(shù):' print*,'a b c' read*,a,b,c if (a<b) then temp=a a=b b=temp

5、end if call GDC(a,b,m) if (c<m) then temp=c c=m m=temp end if call GDC(m,c,n) print*,'最大公約數(shù)為',n contains subroutine GDC(x,y,z) integer x,y,z,k do while(mod(x,y)/=0) k=mod(x,y)x=yy=k end do z=y end subroutine end4、 編寫一個模塊程序,提供以下服務:定義出常量p、e。定義出子程序,實現(xiàn)求和、求階乘n!。并在主程序中計算如下結果:從鍵盤上輸入整數(shù)n、實型數(shù)A、R、R0

6、,求(實型)和(實型)。 module mytask implicit none real,parameter : PI=3.1415926 real,parameter : e =2.7182818 contains function sub(n) integer i,n,sub sub=0 do i=1,n sub=sub+i*i end do end function sub function fact(n) integer i,n real fact fact=1 do i=1,n fact=fact*i end do end function factend module mytas

7、kprogram main use mytask implicit none integer n real A,R,R0 real x,y print*,'請輸入依次 n,A,R,R0 :' read*,n,A,R,R0 x=fact(n)/sub(n) y=(A*n/(2*PI*R*R)*(R/R0)*n*e*(-(R/R0)*n) print*,'n!/n2(i=1,n)=',x print*,'(A*n/(2*PI*R*R)*(R/R0)*n*e*(-(R/R0)*n)',yend program 5、 編寫外部函數(shù),計算的值,直到最后一項

8、的絕對值小于10-6為止。再編寫主程序,從鍵盤讀入x,調用該外部函數(shù)并輸出sinx的計算結果。注意不能用Fortran的標準函數(shù)SIN(X)。program main implicit none real x,p external sub print*,'請輸入角度 x :' read*,x p=x/180*3.14 call sub(p) end programsubroutine sub(k) implicit none real k,y integer i y=0i=1 do while (abs(k*i/(fact(i)>1.0e-6) y=y+(-1)*(i-1

9、)/2)*k*i/(fact(i) i=i+2 end do print*,'sin(x) = ',y contains function fact(m) integer m,j,factfact=1do j=1,m fact=fact*jend do end function factend subroutine sub6、 編寫程序,用歐拉法數(shù)值求解一階微分方程。數(shù)值解法的基本思想:用差分方程代替微分方程,然后在若干個離散點上逐點求解差分方程,得到各離散點x0, x1, x2, 等處函數(shù)的近似值y0, y1, y2, 。其中各離散點x0, x1, x2, 之間的距離稱為步長

10、h。歐拉法的基本思想是,一階微分可用向前差分代替,即。帶入微分方程,可得因此,其中。當給定x0, y0和步長h后,即可按下面步驟求得數(shù)值解:請按上述方法編寫程序用Euler法求解微分方程,當x0=0時,y0=1.0。取h=0.1,試求出當xi=0.1,0.2,0.3,0.4.,1.0時的yi值。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*

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論