Fortran

您所在的位置:网站首页 默认字符格式 Fortran

Fortran

2024-07-07 07:36:29| 来源: 网络整理| 查看: 265

本章主要介绍了Fortran中如何进行格式化的输入输出,以及使用格式化控制的相关技巧。 参考书籍:彭国论.Fortran 95程序设计

文章目录 什么是格式化控制格式控制描述具体示例1)Iw[.m]2)Fw.d3)Ew.d[Ee]和Dw.d[Ee]4)Aw5)nX6)Lw7)Gw.d[Ee]8)/9)Tc10)TLn和TRn11)字符串12)SP和SS13)BN和BZ14)kP15)Bw[.m]、Ow[.m]和Zw[.m] 格式化输出特殊技巧1)格式重复输出2)将格式放入字符串变量中3)不同格式之间的逗号可以省略 IMPLICIT命令

什么是格式化控制

通过format可以设置输出的格式,format在英文中也对应着“格式”的意思。

program test1 implicit none integer a a=10 write(*,*)a write(*,100)a 100 format(I4) !fortran 77中 行代码号需要在前5个字符中,90则可以在任意位置 pause end program test1

打印结果如下:

​ 10

10

上述代码中:

write(*,*)使用默认格式进行打印。write(*,100),使用行代码为100的命令来控制格式。100 format(I4)其中,100为行代码号,I4表示用4位数表示,位数不足将会以空格补齐。 格式控制描述 描述符说明AW以w个字符宽输出字符串BN定义文本框中的空位为NULL,输入时才需要使用BZ定义文本框中的空位为0,输入时才使用Dw.d以w个字符宽输出指数类型的浮点数,小数部分占d个字符Ew.d[Ee]以w个字符宽输出指数类型的浮点数,小数部分占d个字符宽ENw.d[Ee]以指数类型来输出浮点数Fw.d以w个字符宽来输出浮点数,小数部分占d个字符宽Gw.d[Ee]以w个字符宽来输出任何种类的数据Iw[.m]以w个字符宽来输出整数,最少输出m个数字Lw以w个字符宽来输出T或FnX把输出位置向右跳过n个位置/换行:没有更多数据时结束输出kPk值控制输入输出的SCALETn输出的位置移动到本行第n列TLn输出的位置向左相对移动n列TRn输出的位置向右相对移动n列SP在数值为正时加上“正号”SS取消SPFortran 90添加格式Bw[.m]把整数转换成二进制来输出,输出会占w个字符宽,固定输出m个数字,m值可以不给定Qw[.m]把整数转换成八进制来输出,输出会占w个字符宽,固定输出m个数字,m值可以不给定Zw[.m]把整数转换成十六进制输出,输出会占w个字符宽,固定输出m个数字,m值可以不给定

利用上面的格式控制符,来进行一些简单的打印:

program test2 implicit none integer a real b complex c logical d character(len=20) e a=10 b=10.01 c=(10,5) d=.true. e="Hello World!" write(*,"(2X,I2)")a write(*,"(2X,F5.2)")b write(*,"(2X,F4.1,F4.1)")c !复数用两个浮点数来控制 write(*,"(2X,L2)")d write(*,"(2X, A15)")e pause end program test2

10 10.01 10.0 5.0 T Hello World!

上面的写法是直接在write中直接加入代码控制。

将上述代码改为format格式::

program test2 implicit none integer a real b complex c logical d character(len=20) e a=10 b=10.01 c=(10,5) d=.true. e="Hello World!" write(*,100)a write(*,200)b write(*,300)c !复数用两个浮点数来控制 write(*,400)d write(*,500)e 100 format(2X,I2) 200 format(2X,F5.2) 300 format(2X,F4.1,F4.1) 400 format(2X,L2) 500 format(2X, A15) pause end program test2

不难看出,write和format各有优劣势:

优势劣势write减少程序行数,不需要找format,增加代码可读性输出格式复杂时,编写较为麻烦,且不利于重复使用format书写较为复杂的格式控制时更加清晰,可以重复使用需要找到对应的行代码,不利于阅读 具体示例

上述格式控制中,I,F,E,A,X是最常用的几个格式,最好能熟记于心。

1)Iw[.m]

write(*,"(I5)") 100:固定以5个字符输出数字100,前面两个空位会以空格补齐,结果如下:

100

如果所设置的文本框太小,足以打印全部数字, 例如:write(*,""(I3))10000,输出结果如

***

显然,上述情况不会正常打印结果。

write(*,"(I5.4)") 100:固定以5个字符打印,并且必须打印4个数字,效果如下:

0100

因为100不足四位,而又必须打印4个数字,因此会在前方进行补0。这种打印并不推荐,因为以通常默认八进制数是以0开头的。

2)Fw.d

write(*,"(F5.2)") 10.32:以5个字符打印数字,其中小数部分保留2位。(注意:.也算一位)

10.32

同理,超出文本框显示会打印*。

3)Ew.d[Ee]和Dw.d[Ee]

write(*,"(E11.5)")100.01:以科学计数法输出小数,总共打印11个字符,其中保留5位小数。

0.10001E+03

如果将上述代码中的11改为10,整数部分的0会被省略。

.10001E+03

write(*,"(E11.5E2)"):以科学计数法输出小数,总共打印11个字符,其中保留5位小数,指数部分保留2位。

0.10001E+03

Dw.d[Ee]的方法与Ew.d[Ee],区别是科学计数法的字母是D,而不是E。

4)Aw

write(*,"(A15)")"Hello World!":以20个字符输出字符串Hello World!,前方空余位置补空格。

Hello World!

当文本框不足以打印全部字符串时,会进行截取,例如将上述代码中的15改为10。

Hello Worl

5)nX

write(*,"20x,I3") 100:先补20个空格,再以I3的格式打印整数100。

​ 100

6)Lw

write(*,"(L5)") .true.:打印,逻辑变量,并且前方预留4个空格。

​ T

7)Gw.d[Ee]

G可以输出所有类型的数据,固定使用w个字符来控制输出的宽度,d可以不使用,但定义时不能省略,必须随便赋一个数字。

当输入输出字符时,Gw.d会遵循Aw的格式。当输入输出整数时,Gw.d会遵循Iw的格式。当输入输出逻辑数时,Gw.d会遵循Lw的格式。当输入输出浮点数时时:当数值过大或过小时,Gw.d会遵循Ew.d的格式;其他情况,Gw.d会遵循(Fa.b,4X)的格式。 8)/

write(*,"(I4/I4)")100,200:打印整数100,换行打印200

100

200

write(*,"('hello'//'world')") :在write中直接打印字符时,字符串需要用单引号括起来,//表示换两行

hello

world

9)Tc

write(*,"(T10,I4)") 100:把输出位置移至本行的第10个字节

​ 100

10)TLn和TRn

TLn:输出位置向左移动相对n个字节

TRn:输出位置向右移动相对n个字节

例如:

write(*,"(1X,'I',A5,TL5,A5)") "love","hate":

I hate you!

打印完love后,TL5向左移动5位,开始打印hate,love因此被覆盖了。

11)字符串

format中可以直接加入字符串,字符串需要用单引号括起来

write(*,100) 100 100 format('ANS:',I3)

ANS: 100

还可以使用wH的格式来控制输出的字符串,表示在此之后要输出w个字符串,例如:

write(*,100) 100 100 format(4HANS:,I3)

该方法打印效果同上,但不推荐使用。

12)SP和SS

SP用来显示正数的+号,而SS则是用来取消SP的设置。

write(*,"(SP,I3,SS,I3)") 100,100

+100 100

如果要打印+号,那么设置格式时需要多留一位。

13)BN和BZ

应用在输入数据时:BN定义没有输入的字节表示没有东西;BZ定义没有数据的字节代表0

implicit none integer a read(*,"(BZ,I5)") a print*,a read(*,"(BN,I5)") a print*,a

1 !输入1后输入4个空格,然后按回车 10000 1 1

BZ将空格处理解为0;而BN则认为没有东西。

14)kP

用于改变输入浮点数的Scale,输入的数值会自动乘上10的负k次方。使用指数类型来输入时无效。

read (*,"(-2P,F3.1)") a write(*,*) a read (*,"(2P,F3.1)") a write(*,*) a

打印结果如下:

1.5 150.000000 1.5 1.49999997E-02

15)Bw[.m]、Ow[.m]和Zw[.m]

Bw[.m]、Ow[.m]和Zw[.m]分别对应二进制、八进制和十六进制输出。打印占w个字符宽,固定输出m个数字,m值可以不给定。

write(*,"(B10.5)") 10 write(*,"(O10.5)") 10 write(*,"(Z10.5)") 10

01010 00012 0000A

格式化输出特殊技巧 1)格式重复输出 read a,b,c a=1.0 b=2.0 c=3.0 write(*,"3(5X,F4.2,/)") a,b,c

1.00

2.00

3.00

3(5X,F4.2,/)就等于将(5X,F4.2,/)执行三次,更数学中的乘法有些类似。

2)将格式放入字符串变量中 character(len=10) strfmt strfmt="(A15)" write(*,strfmt) "Hello World!" 3)不同格式之间的逗号可以省略

例如用于控制整数和控制浮点数的格式之间可以省略逗号,但是一般建议加入逗号,方便代码的阅读。

write(*,"(I5F5.2A20)")100,5.2,"Hello World!" IMPLICIT命令

Fortran中的变量不一定非要先声明才能使用,编译器会根据变量的第一个字母来定义变量的类型。例如:I、J、K、L、M、N字母开头的变量会被视为整数,其他字母开头的变量会被当成浮点数。

IMPLICIT命令可以用来设置“默认类型”,指定以某些字母开头的变量为何种类型。

implicit integer(a,b,c) !以a,b,c开头的变量为整型 implicit real(d-f) !以d,e,f开头的变量为浮点数 implicit complex(g-i,z) !以g,h,i,z开头的变量为复数 implicit none !关闭默认类型功能,所有变量均需要提前声明


【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭