《Fortran格式輸入輸》由會員分享,可在線閱讀,更多相關(guān)《Fortran格式輸入輸(19頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、單擊此處編輯母版標(biāo)題樣式,單擊此處編輯母版文本樣式,第二級,第三級,第四級,第五級,*,6.1,輸入輸出概述,第六章 格式輸入輸出,一般應(yīng)在輸入輸出語句中提供三方面的信息:,(1)通過什么設(shè)備來進(jìn)行輸入輸出。,(2)采用什么樣的格式來進(jìn)行輸入輸出。,(3)輸入輸出的具體內(nèi)容。,輸入:從外部設(shè)備將數(shù)據(jù)傳送到計算機(jī)內(nèi)存,輸出:將計算機(jī)內(nèi)部的數(shù)據(jù)傳送到外部設(shè)備,6.2 格式輸入輸出語句,一、格式輸出,(3)格式語句(FORMAT)的,語句標(biāo)號,。例如:,PRINT,100,A,B,C,100,FORMAT(1X,F9.4,2F7.3),1PRINT語句,格式:PRINT f,輸出項,f:格式說明符,
2、,有三種形式:,(1),*,,使用表控格式。,(2),(格式編輯符),,,例:PRINT,(1X,2F7.3),X,Y,輸出項可以是變量、常量、函數(shù)以及表達(dá)式。此外,輸出項還可以是隱含DO循環(huán)。,2.WRITE語句,格式:WRITE(u,f)輸出項,U:設(shè)備號,,用于指明使用的輸入輸出設(shè)備。,可以是一個整型量,也可以是星號,*,,,*,指系統(tǒng)隱含指定的外部設(shè)備,一般為顯示器。,f:格式說明符,,用法與PRINT語句相同。,二、格式輸入,格式:READ f,輸入項,READ(u,f)輸入項,U:設(shè)備號 f:格式說明符,輸入項可以是變量,也可以是隱含DO循環(huán)。,6.3 格式說明語句,格式說明語句可
3、以放在程序單位語句(主程序語句PROGRAM,子程序語句FUNCTION或SUBROUTINE)之后,END語句之前的任何位置。,格式:,語句標(biāo)號 FORMAT(格式編輯符),例如:10 FORMAT(1X,I4,F5.1),格式說明語句是非執(zhí)行語句,它只是給輸入輸出語句提供數(shù)據(jù)的格式描述。,6.4,常用的編輯符,一、,可重復(fù)編輯描述符,可重復(fù)編輯描述符與輸入輸出項相對應(yīng)。不同類型的輸入輸出項使用不同的編輯描述符。,1.整型數(shù)據(jù)編輯描述符(I,B,O,Z),I,編輯符,用于十進(jìn)制整數(shù)的輸入輸出。,r,:重復(fù)系數(shù),為1時可以省略。,w,:字段寬度。,格式:,rIw,輸入,:在輸入記錄中從左往右取
4、w個字符存入對應(yīng)的輸入項。取得的w個字符必須是整數(shù),正負(fù)號也占一個字符位置,空格也占一個字符位置,但不起作用。,例如:,READ(*,10)I,J,K,10 FORMAT(I4,I5,I6),輸入714-346-12345,則 I,J,K 的值分別為:714、-346和-123。,輸出,:數(shù)字在指定的w字段寬度中向右端靠齊,左補(bǔ)空格。當(dāng)w位數(shù)不足時,將輸出w個“*”。,例如:,WRITE(*,10)K,L,10 FORMAT(1X,I5,I4),當(dāng)K=12,L=-7567時,輸出結(jié)果為:12*,(2)B,O,Z,編輯符,。,這是FORTRAN 90新增的編輯符。分別采用二進(jìn)制、八進(jìn)制和十六進(jìn)制
5、形式描述整型量的輸入輸出。其基本用法與I 編輯符相同。,2.實(shí)型數(shù)據(jù)編輯描述符(F,E,EN,ES,G),(1)F 編輯符,用于實(shí)型量的小數(shù)形式輸入輸出。,格式:,rFw.d,r,:重復(fù)系數(shù),w,:字段寬度,d,:輸入輸出的小數(shù)位數(shù),輸入,:,按w指定的字段寬度從輸入記錄中截取數(shù)據(jù),若截取的數(shù)據(jù)中不帶小數(shù)點(diǎn),則系統(tǒng)按d自動加上小數(shù)點(diǎn);若數(shù)據(jù)自帶小數(shù)點(diǎn),此時d不起作用,,自帶小數(shù)點(diǎn)優(yōu)先,。,例如:,READ(*,10)A,B,輸入123456726.89,10 FORMAT(F7.2,F6.1),則A、B的值分別為 1234.56 和 726.89,輸出,:,w,實(shí)際位數(shù)時,,左補(bǔ)空格,w實(shí)際位
6、數(shù)時,輸出w個“*”,實(shí)際位數(shù):整數(shù)位數(shù)+小數(shù)位數(shù)+小數(shù)點(diǎn)+負(fù)號,實(shí)際小數(shù)位,d,保留 d 位,對 d1 位四舍五入,例如:,WRITE(*,10)A,B,C,10 FORMAT(1X,3F8.3),當(dāng)A、B、C的值分別是78.9、-0.00072、12345.678時,,輸出為:78.900-.001*,(2)E,編輯符,用于輸入輸出指數(shù)形式的實(shí)數(shù)。,格式:,rEw.d,d,:數(shù)字部分小數(shù)位數(shù),輸出采取規(guī)格化的指數(shù)形式,即小數(shù)點(diǎn)在第一位為非零數(shù)字的前面。,例如:,WRITE(*,10)A,B,10 FORMAT(1X,E12.4,E13.2),當(dāng)A、B的值為128.433和-0.0008時,
7、輸出為:,.1284E+03-.80E-03,根據(jù)輸出數(shù)據(jù)的大小自動采用,F 或 E,格式,(3)G編輯符,3.復(fù)型數(shù)據(jù)編輯符,對復(fù)型數(shù)據(jù)按實(shí)部和虛部分別輸入輸出。例如,COMPLEX CM,READ(*,10)CM,WRITE(*,20)CM,10 FORMAT(2F5.2),20 FORMAT(1X,2F7.2),輸入1234567890,則輸出為:,123.45678.90,格式:,rGw.d,在輸入時,輸入的數(shù)據(jù)可以是.TRUE.或.FALSE.,也可以是頭一個字母為 T 或 F 的任何字符串(T或F 前面可以接“.”或空格,后面可以是任意字符),4.邏輯型數(shù)據(jù)編輯符 L,格式:,rL
8、w,在輸出時,邏輯值為真輸出T,邏輯值為假輸出F,且在左邊補(bǔ)w-1個空格。例如,10 FORMAT(1X,L3,L4),輸出為:FT,5.字符型數(shù)據(jù)編輯符 A,用于字符型數(shù)據(jù)的輸入輸出,格式:,rAw,首先從輸入記錄中讀取w個字符,再根據(jù)輸入項的長度,L,,決定輸入變量的內(nèi)容:,當(dāng),w=,L,時,w個字符全部送給輸入項。,當(dāng),wL,時,取右邊,L,個字符送給對應(yīng)的輸入項。,當(dāng),wL,時,字符靠右對齊,左補(bǔ),w-L,個空格,當(dāng),wL,時,輸出左邊w個字符,例如:,CHARACTER*5 C1,C2,C3,READ(*,10)C1,C2,C3,10 FORMAT(A5,A2,A7),輸入,abcd
9、e,fg,hijklmn,,則C1、C2、C3的值分別為:abcde、fg、jklmn,例如:,WRITE(*,10)China,China,China,10 FORMAT(1X,A7,A,A3),輸出為:,China,China,Chi,二、非重復(fù)編輯描述符,非重復(fù)編輯描述符直接向當(dāng)前輸出記錄傳遞信息,因此不需要輸入輸出項與其對應(yīng)。,1.X編輯符,用于在輸入輸出的常數(shù)之間插入n個空格,格式:,nX,n:正數(shù),從當(dāng)前位置向右跳過n個字符位置。,例:I=146;A=124.32;B=1247.32,WRITE(*,10)I,A,B,10 FORMAT(1X,I3,2X,F6.2,2X,E11.5
10、),輸出:146,124.32,.12473E+04,例如:,READ(*,10)K,J,A,10 FORMAT(2I3,3X),E5.2),輸入:876-42,193,671E4,則:K=876,J=-42,A=67100.0,其中非重復(fù)編輯符3X,跳過193這三個字符。,格式:,nH,n:正整數(shù),2.H編輯符,用于輸出字符串,例:format(1X,2H,L=,I3,2H,J=,I4),3.撇號編輯符,用于輸出字符串,例:I=123;J=2347,WRITE(*,10)I,J,10 FORMAT(1X,I=,I3,2X,J=,I4),輸出:I=123 J=2347,將輸出記錄中的第一個字符
11、作為縱向走紙控制符,這個字符不輸出,而從輸出記錄的第二個字符開始輸出。,4.縱向走紙控制符,常用的控制字符:,空格,(走紙一行,換行)、,0,(走紙二行,空一行)、,1,(換頁)、,(不走紙,回到本行重迭打印),例如:,WRITE(*,10)I,J,10 FORMAT(1X,I=,I3,2X,J=,I4),應(yīng)輸出:,I=123J=2347,實(shí)際輸出:I=123J=2347,如果:,10 FORMAT(I=,I3,2X,J=,I4),輸出:=123J=2347,5.斜扛編輯符,結(jié)束當(dāng)前正在輸入或輸出的記錄,開始下一個記錄的輸入輸出。,例如:I=246;A=12.36;J=35;B=173.5,WRITE(*,10)I,A,J,B,10 FORMAT(1X,I3,F6.1/1X,I3,F6.1),輸出:24612.4,35173.5,2.如果可重復(fù)編輯符的個數(shù)多于輸入輸出項的個數(shù),則多余的編輯符不起作用。,6.5 輸入輸出項與編輯符的相互作用,1.輸入輸出項與編輯符的順序、類型一一對應(yīng),3.如果可重復(fù)編輯符的個數(shù)少于輸入輸出項的個數(shù),則按順序用完最后一個可重復(fù)編輯符之后,再重復(fù)使用格式說明,但產(chǎn)生一個新記錄。,例如:,WRITE(*,10)I,A,J,B,10 FORMAT(1X,I3,F6.1),輸出:,24612.4,35173.5,