Fortran的基本输入输出

2018-12-12 14:24 更新

迄今为止,我们已经看到,我们可以使用打印*语句读取分别使用读取*语句键盘和显示输出数据到屏幕上。输入输出的形式是自由格式的 I / O,它被称为列表控制的输入输出。

自由格式简单的I / O的形式为:

read(*,*) item1, item2, item3...
print *, item1, item2, item3
write(*,*) item1, item2, item3...

然而,格式化I / O让您的数据传输更多的灵活性。

格式化输入输出

格式化输入输出有语法如下:

read fmt, variable_list 
print fmt, variable_list 
write fmt, variable_list 

哪里,

  • FMT是格式规范

  • 可变列表被从键盘被读或写在屏幕上的变量的列表

格式规范定义,其中显示格式化的数据的方式。它由一个字符串,包含编辑描述符的括号中的列表。

一个编辑描述符指定的精确格式,例如,宽度,其中显示后小数点等,数字字符和数字。

例如:

Print "(f6.3)", pi

下表描述了描述:

描述符描述
一世这是用于整数输出。此采用的形式为“rIw.m',其中的R,W和M的含义在下面的表中给出。整数值是在他们的视场科幻权JUSTI网络版。如果场宽度不是大到足以容纳一个整数那么场是网络连接有星号LLED。 打印“(3i5)”,I,J,K
F 这是用于实数输出。此采用的形式为“rFw.d',其中的R,W和D的含义在下面的表中给出。真正的价值在他们的网络的视场右侧JUSTI网络版。如果场宽度不够大以容纳实数则场是音响LLED以星号。 打印“(f12.3)”,圆周率
Ë

这是用于指数符号实际产出。在'E'描述语句的形式为'rEw.d',其中的R,W和D的含义如下表所示。真正的价值在他们的网络的视场右侧JUSTI网络版。如果场宽度不够大以容纳实数则场是音响LLED以星号。

请注意,打印出三位小数,需要至少十的场宽度的实数。一个用于尾数,两个零,四项尾数和两个用于指数本身的符号。一般来说,W≥D + 7。

打印“(e10.3)”,123456.0给出了'0.123e + 06'
ES 这是用于实际产出(科学记数法)。此采用的形式为“rESw.d',其中的R,W和D的含义在下面的表中给出。在“E”上面的描述符迪FF ERS稍微从传统的著名“科学的C表示法”介绍。科学的C表示法具有范围1.0尾数〜10.0不像其具有在0.1到1.0的尾数对E描述符。真正的价值在他们的网络的视场右侧JUSTI网络版。如果场宽度不够大以容纳实数则场是音响LLED以星号。这里还,宽度场必须满足表达W¯¯≥D + 7 打印“(es10.3)”,123456.0给出了'1.235e + 05'
一个这是用于字符输出。这需要其中r和W的含义如下表中给出的形式“原始”。性格类型是在他们的网络的视场右侧JUSTI网络版。如果场宽度不足够大以容纳字符串则场是音响与第一个“W”的字符串的字符LLED。 打印“(A10)”,STR
X 这是用于空间输出。这种形式定义的NX“,其中”n“是所需空间的数量。 打印“(5倍,A10)”,STR
/ 斜线描述 - 用于插入空行。这需要的形式'/',并强制下一个数据输出为一个新行。 打印“(/,5倍,A10)”,STR

以下符号用于与格式描述符:

符号描述
C 列号
ð 中位数为实际输入或输出的小数位的权
要显示的最小位数
ñ 空格数跳过
- [R 重复计数 - 的次数要使用的描述符的描述符或一组
W¯¯ 域宽度 - 的字符数用于输入或输出

例1

program printPi

   pi = 3.141592653589793238 
   
   Print "(f6.3)", pi 
   Print "(f10.7)", pi
   Print "(f20.15)", pi 
   Print "(e16.4)", pi/100 
   
end program printPi

当上述代码被编译和执行时,它产生了以下结果:

3.142
3.1415927
3.141592741012573
0.3142E-01

例2

program printName
implicit none

   character (len=15) :: first_name
   print *,' Enter your first name.' 
   print *,' Up to 20 characters, please'
   
   read *,first_name 
   print "(1x,a)",first_name
   
end program printName

当上述代码被编译和执行时,它产生了以下结果:(假设用户输入的名称扎拉)

Enter your first name.
Up to 20 characters, please
Zara 

例3

program formattedPrint
implicit none

   real :: c = 1.2786456e-9, d = 0.1234567e3 
   integer :: n = 300789, k = 45, i = 2
   character (len=15) :: str="Tutorials Point"
   
   print "(i6)", k 
   print "(i6.3)", k 
   print "(3i10)", n, k, i 
   print "(i10,i3,i5)", n, k, i 
   print "(a15)",str 
   print "(f12.3)", d
   print "(e12.4)", c 
   print '(/,3x,"n = ",i6, 3x, "d = ",f7.4)', n, d
   
end program formattedPrint

当上述代码被编译和执行时,它产生了以下结果:

45
045
300789 45  2
300789 45  2
Tutorials Point
123.457
0.1279E-08

n = 300789 d = *******

该声明的格式

格式语句允许您在一个声明中混合和匹配字符,整数和实输出。下面的例子说明了这一点:

program productDetails 
implicit none 

   character (len=15) :: name
   integer :: id 
   real :: weight
   name = 'Ardupilot'
   id = 1
   weight = 0.08
   
   print *,' The product details are' 
   
   print 100
   100 format (7x,'Name:', 7x, 'Id:', 1x, 'Weight:')
   
   print 200, name, id, weight 
   200 format(1x, a, 2x, i3, 2x, f5.2) 
   
end program productDetails

当上述代码被编译和执行时,它产生了以下结果:

The product details are
Name:       Id:    Weight:
Ardupilot   1       0.08

以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号