Fortran基礎(chǔ)編程(3)——格式化輸出
以下內(nèi)容轉(zhuǎn)載木木公眾號:易木木響叮當(dāng)
本篇推文將進(jìn)一步講解Fortran基礎(chǔ)語法中格式化輸出與聲明部分,讓我們的代碼更加美觀起來吧~
概論
1??????program?main
2??????integer?a
3??????a?=100
4??????write(*,100)?a?
5??????100?format?(I4)
6??????end
注意:
1.第五行有個100,表示行代碼,也就是說第4行的write(*,100)
執(zhí)行的是第五行的內(nèi)容。format(I4)
是格式的意思,稍后會詳細(xì)講解;
2.自由格式中可以在行的最前面寫行代碼,固定格式寫行代碼時必須放在每一行的最前面5個字符文本框中;
3.盡量少用行代碼,表示跳行,帶來閱讀不便。
Format命令可以使用很多格式控制描述,接下來木木帶著大家溫習(xí)一下比較常用的格式命令,遇到自己沒見過的可以單獨去網(wǎng)上查找,沒必要全部記住。
Aw以w個字符寬度來輸出字符串Dw.d以w個字符寬來輸出指數(shù)類型的浮點數(shù),小數(shù)部分占d個字符寬Ew.d[Ee]以w個字符寬來輸出指數(shù)類型的浮點數(shù),小數(shù)部分占d個字符寬,指數(shù)部分占e個字符寬Fw.d以w個字符寬來輸出浮點數(shù),小數(shù)部分占d個字符寬Gw.d以w個字符寬來輸出任何類型的數(shù)據(jù)Iw[.m]以w個字符寬來輸出整數(shù),最少輸出m個數(shù)字nX把輸出的位置向右跳n個位置/表示換行kpk值控制輸入輸出的scale
接下來通過一個實例,展示一下格式化輸出~
1??????program?main
2??????integer?a
3??????real?b?
4??????character(len=20)?c
5??????a?=?10?
6??????b?=?12.34
7??????c?=?"Fortran"
8??????write(*,"(1X,I5)")?a?
9??????write(*,"(1X,F5.2)")?b?
10??????write(*,"(1X,A10)")?c
11??????end
結(jié)果如下:
1????10
2?12.34
3?Fortran???
注意:該程序用"()"代替format(), 可以減少代碼的行數(shù)。
詳論
“I F E A X”最為常用,熟悉即可,其他的遇到再上網(wǎng)查閱。
【Iw】
以w個字符的寬度來輸出整數(shù)。
1write(*,"(I5)")?????100
2··100
輸出樣式固定了5個字符大小,所以100前面會補(bǔ)上兩個空白
1write(*,"(I3)")????????10000
2***
設(shè)置輸出文本框不足時,會出現(xiàn)*
1write(*,"(I5.3)")????10
2···010
固定使用5個字符字段,至少輸出3個
【Fw.d】
以w個字符寬來輸出浮點數(shù),小數(shù)部分占d個字符寬
1write(*,"(9.3)")????123.45
2..123.450
不足9個字符部分會填上空白,小數(shù)不足3位會補(bǔ)0
【Ew.d】
以w個字符寬來輸出指數(shù)類型的浮點數(shù),小數(shù)部分占d個字符寬,指數(shù)部分占e個字符寬
1write(*,"(E15.7)")????123.45
2..0.1234500E+03
使用15個字符字段,小數(shù)部分占7位
1write(*,"(E9.2E3)")????12.34
2.0.12E002
設(shè)定輸出9個字符寬度,小數(shù)占兩位,指數(shù)部分占3位
【Aw】
以w個字符寬來輸出字符串
1write(*,"(A10)")?????"Hello"
2write(*,"(A3)")?????"Hello"
3.....Hello
4Hel
【nX】
輸出位置向右跳n位
1write(*,"(5X,I3)")?????100
2.....100
【\】
換行輸出
1write(*,"(I3\\I3)")????????10,100
210
3
4
5100
【小技巧】
1??????program?main
2??????real?a?b?c?
3??????a?=?1.0
4??????b?=?2.0
5??????c?=?3.0
6??????write(*,"(3(1XF5.2))")?A?B?C?
7??????end
輸出結(jié)果如下:
11.00??2.00??3.00
代表連續(xù)重復(fù)輸出1XF5.2三次
好啦,今天的分享就結(jié)束啦~我們下期再見咯