Fortran語言基礎 - 圖文 - 下載本文

山東建筑大學

4.3.2 EXIT命令

EXIT的功能是直接跳出當前循環。 例 猜體重

program ex0607 implicit none

real, parameter :: weight=45.0 real, parameter :: error=0.0001 real :: guess = 0.0

do while( .true. ) !循環條件永遠成立 write(*,*) \ read(*,*) guess

if ( abs(guess-weight)

write(*,*) \ stop end

4.3.2 署名的循環

循環署名可以在編寫程序時,明確知道END DO這個描述的位置是否正確。

program ex0609 implicit none integer :: i,j loop1: do i=1,3 loop2: do j=1,3

if ( i==3 ) exit loop1 ! 跳離loop1循環 if ( j==2 ) cycle loop2 ! 重做loop2循環 write(*, \ end do loop2 end do loop1 stop

31

數值分析程序設計——Fortran基礎

end

4.4 循環的應用

循環是程序編寫時不可缺少的工具之一。下面通過幾個實例,說明循環的使用方法。

例1 計算等差數列1+2+3+4+…+99+100 program ex0610 implicit none integer counter integer :: ans = 0 do counter = 1, 100 ans = ans + counter end do write(*,*) ans stop end

執行結果:5050

例2 計算Fibonacci數列。費氏數列的規則為:fn?fn?1?fn?2。

program ex0611 implicit none integer counter integer :: fn_1 = 1 integer :: fn_2 = 0 integer :: fn = 0 write(*,*) fn_2 write(*,*) fn_1 do counter = 3, 10 fn = fn_2 + fn_1 write(*,*) fn

32

f0?0,f1?1,當n?1時

山東建筑大學

fn_2 = fn_1 fn_1 = fn end do stop end

33

數值分析程序設計——Fortran基礎

5 數組(ARRAY)

5.1 基本使用

5.1.1 一維數組

數組聲明方法:

DATATYPE NAME (SIZE) 例如: INTEGER A(10) Integer, dimension(10) :: a 例 記錄5人成績的程序

program ex0701 implicit none

integer, parameter :: students = 5 integer :: student(students) integer i do i=1, students

write(*,\ read(*,*) student(i) end do do while( .true. ) write(*,*) \ read(*,*) i

if ( i<=0 .or. i>students ) exit write(*,*) student(i) end do stop end

執行后會要求按照學生學號一個一個地輸入成績,輸入完成后就可以按照學生學號來查詢成績,輸入一個不存在的學號會結束程序。

34

山東建筑大學

5.1.2 二維數組

聲明數組大小時,時用兩個數字,他就聲明為二維數組。 integer a(10,5) real a(12,3)

二維數組經常被用來當成矩陣使用。 例 二階矩陣加法

program ex0704 implicit none

integer, parameter :: row = 2 integer, parameter :: col = 2 integer :: matrixA(row,col) integer :: matrixB(row,col) integer :: matrixC(row,col) integer r ! 用來指定row integer c ! 用來指定column ! 讀入矩陣A的內容 write(*,*) \ do r=1, row do c=1, col

write(*,\ read(*,*) matrixA(r,c) end do end do

! 讀入矩陣B的內容 write(*,*) \ do r=1, row do c=1, col

write(*,\ read(*,*) matrixB(r,c) end do

35





pk10冠军百期错一 欧洲卡车赚钱mod 重庆时时彩开奖号码冷热 天天棋牌手机版 贵州11选5漏选情况 篮球比分直播 最新pk10技巧万能码 蓝洞棋牌官方网站 广西十一选五前三组最大遗漏 在乡下开一家什么店比较赚钱 自己赚钱出国读博后 贵州11选五开奖结果走势图 重庆时时彩 现在环保油真能赚钱吗 25选5开奖今日开奖 865棋牌最新版本下载 智商快速赚钱