Fortran输入输出格式控制

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Open, Read and Write in Fortran

1:write(*,*)"string";write(unit=*,FMT=*)"string";write(unit=6,FMT=*)"string"。以上等价,6是默认输出位置,即屏幕。

2:print*,"string"。Print只能对屏幕输出。

3:integer(kind=4) a !f90;integer*4 a !f77;integer(4) a !f77。以上等价。

real(kind=4) a !f90;real*4 a !f77;real(4) a !f77。以上等价。

4:f77,变量名长度1~6;f90,变量名长度1~31。

5:read(*,*)"string";write(unit=*,FMT=*)"string";write(unit=5,FMT=*)"string"。以上等价,5是默认输入位置,即键盘。

6:FORMAT

(http://202.118.74.226/fortran/pages/730.htm)

6.1 格式输出

格式输出语句由两部分组成:输出语句和输出格式语句。输出语句的一般形式为:

WRITE(*,L) 输出表列或:PRINT L 输出表列

其中:* 代表隐含的输出设备,L 指输出格式语句的标号。

输出格式语句的一般形式:

L FORMAT(1X,S)

其中:L 输出格式语句的标号,1X 纵向走纸符,S 输出格式,用不同的―格式编辑符‖(简称―编辑符‖)来实现指定的输出格式,各格式间用逗号相隔。

FORMAT语句又叫―格式语句‖,是一个非执行语句,本身不产生任何操作,只是提供输入或输出的格式。FORMAT语句可以出现在程序的任何地方(但必须在PROGRAM语句之后和END语句之前,如果在子程序中用FORMAT语句,则应在子程序定义语句之后)。系统按WRITE语句或PRINT语句中指定的语句标号找到相应的FORMAT语句,并按FORMAT语句所规定的格式对数据进行输出。注意,PRINT语句中不能再用―*‖,PRINT语句中的第一个标识符是语句标号而不是要打印输出的数据。

输出格式分两类基本格式

6.1.1 I格式(又叫整数格式)

一般形式:Iw 或:Iw.m

其中:w 一个数据占的位数宽度(又称―字段宽度‖),m 需要输出的最少数字位数。例1:

WRITE (*,100)M,N

100 FORMAT(1X,I4,I4)

如果M=40,N=-12,则输出如下:

??40 ?-12

例2:

WRITE (* , 100) I,J,K

100 FORMAT(1X,I5.3,I6.3,I4)

若I=1234,J=-24,K=24689 则输出为:

?1234 ???-24 ****

(1)数字在指定的区域内向右端靠齐,如果数字位数比指定的字段宽度w小,则左边补以空格。负数的符号也包含在字段宽度内。

(2)如果数字位数超过了规定的字段宽度w,则不输出有效数据,而在该字段宽度范围内充满―*‖符号。

(3)如果数字位数超过了m,则按实际应输出的位数输出(但条件是不能超过w)。m不包括负号所占的一列。

6.1.2 F格式(又叫小数型格式)

一般形式:Fw.d

w 各数值占的总位数d 输出数据的小数位数(小数点后的位数)。例1:WRITE(*,100)A,B,C

100 FORMAT(1X,F10.2,F9.3,F8.4)

若A=1234.56,B=3456.78,C=234.56789 则输出:

???1234.56 ?3456.780 234.5679

例2:WRITE (* , 100) X,Y

100 FORMAT(1X,F10.4,F10.2)

若X=24680135.7, Y=0.0012345,则输出为:

********** ???????.00

(1)数字在指定区域内向右端靠齐,如果数字位数(含小数点和符号位)比指定的字段宽度w小,则左边补以空格;如果数字的位数超过了规定的字段宽度w,则不输出有效数据,而在该字段宽度范围内充满―*‖符号。

(2)如果数据的小数位数比指定的小数位数d小,则在小数右边补0以凑足d位;如果小数位数大于d位,则输出时多于的小数位数按―四舍五入‖规则舍去。

(3)假设b为数据整数部分的位数,则应使w≥b+d+1(小数点占一列),如果输出负数,则应保证w≥b+d+2(小数点和负号各占一列)。

(4)用F格式输出时应注意,由于难以事先确切估计出数据的大小,输出大的数时容易产生―宽度不够‖的错误(由于w不够大),输出小的数时会出现丢掉有用数字的情况(由于d不够大而将后面的数字截去),这就是―大数印错,小数印丢‖。

6.1.3 E格式(又叫指数型格式)

一般形式:w.d

w 各数值占的总位数,d 输出数据的小数位数(小数点后的位数)。例1:WRITE (*,100)X,Y

100 FORMAT(1X,E12.4,E12.5 )

如:X=3.17 Y=1234.56 则输出结果为:

??0.3170E+01 ?0.12346E+04。

(1)采取标准化的指数形式输出一个实数,d为以指数形式出现的数据的数字部分的小数位数。

(2)指数部分一般占4列,其中字母―E‖和指数的符号各占一列,指数2列。小数部分d列,再加上一个小数点和小数点前的一个―0‖,因此要保证w≥d+6,输出负数时,w≥d+7。

(3)有的计算机系统允许有较大的实数范围,FORTRAN77提供了一种扩充的编辑符,可以输出三位或四位指数。这种编辑符的形式为:Ew.dEe,用e指定指数的位数。有的计算机系统的FORTRAN编译系统已根据其允许的实数范围,自动将指数的位数改为3位或4位,不必在RORMAT语句中用Ew.dEe编辑符单独为某些数据指定所需的指数位数,只需写Ew.d形式即可,输出时系统会给出三位(或四位)指数。

6.1.4 G格式

G格式可以根据输出的实数大小决定用小数形式(F格式)输出或指数形式(E 格式)输出。当输出大数值或小数值时自动按E格式,当输出的数不大不小时用F格式。其一般形式为:Gw.d

(1)凡绝对值小于0.1的数或绝对值大于10d的数用E格式输出;其余的数用F格式输出。

(2)用E格式输出时,最后4列为指数部分,而用F格式输出时最后4列留空。

相关文档
最新文档