- Fortran 教程
- Fortran - 首页
- Fortran - 概述
- Fortran - 环境设置
- Fortran - 基本语法
- Fortran - 数据类型
- Fortran - 变量
- Fortran - 常量
- Fortran - 运算符
- Fortran - 决策
- Fortran - 循环
- Fortran - 数字
- Fortran - 字符
- Fortran - 字符串
- Fortran - 数组
- Fortran - 动态数组
- Fortran - 派生数据类型
- Fortran - 指针
- Fortran - 基本输入输出
- Fortran - 文件输入输出
- Fortran - 过程
- Fortran - 模块
- Fortran - 内在函数
- Fortran - 数值精度
- Fortran - 程序库
- Fortran - 编程风格
- Fortran - 调试程序
- Fortran 资源
- Fortran - 快速指南
- Fortran - 有用资源
- Fortran - 讨论
Fortran - 基本输入输出
到目前为止,我们已经看到可以使用read *语句从键盘读取数据,并分别使用print*语句将输出显示到屏幕上。这种形式的输入输出是自由格式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 是格式规范
variable-list 是要从键盘读取或写入屏幕的变量列表
格式规范定义了格式化数据显示的方式。它由一个字符串组成,该字符串包含括号中编辑描述符的列表。
编辑描述符指定精确的格式,例如宽度、小数点后的位数等,字符和数字以该格式显示。
例如
Print "(f6.3)", pi
下表描述了描述符:
| 描述符 | 描述 | 示例 |
|---|---|---|
| I | 用于整数输出。它采用“rIw.m”的形式,其中r、w和m的含义在下表中给出。整数在其字段中右对齐。如果字段宽度不足以容纳整数,则字段将填充星号。 |
print "(3i5)", i, j, k |
| F | 用于实数输出。它采用“rFw.d”的形式,其中r、w和d的含义在下表中给出。实数在其字段中右对齐。如果字段宽度不足以容纳实数,则字段将填充星号。 |
print "(f12.3)",pi |
| E | 用于以指数表示法输出实数。“E”描述符语句采用“rEw.d”的形式,其中r、w和d的含义在下表中给出。实数在其字段中右对齐。如果字段宽度不足以容纳实数,则字段将填充星号。 请注意,要打印具有三位小数的实数,至少需要十位字段宽度。一位用于尾数的符号,两位用于零,四位用于尾数,两位用于指数本身。一般来说,w ≥ d + 7。 |
print "(e10.3)",123456.0 给出“0.123e+06” |
| ES | 用于实数输出(科学计数法)。它采用“rESw.d”的形式,其中r、w和d的含义在下表中给出。“E”描述符与传统的众所周知的“科学计数法”略有不同。科学计数法的尾数范围为1.0到10.0,而E描述符的尾数范围为0.1到1.0。实数在其字段中右对齐。如果字段宽度不足以容纳实数,则字段将填充星号。这里同样,宽度字段必须满足表达式w ≥ d + 7 |
print "(es10.3)",123456.0 给出“1.235e+05” |
| A | 用于字符输出。它采用“rAw”的形式,其中r和w的含义在下表中给出。字符类型在其字段中右对齐。如果字段宽度不足以容纳字符字符串,则字段将填充字符串的前“w”个字符。 |
print "(a10)", str |
| X | 用于空格输出。它采用“nX”的形式,其中“n”是所需空格的数量。 |
print "(5x, a10)", str |
| / | 斜杠描述符 – 用于插入空行。它采用“/”的形式,并强制将下一个数据输出到新行。 |
print "(/,5x, a10)", str |
以下符号与格式描述符一起使用:
| 序号 | 符号及描述 |
|---|---|
| 1 | c 列号 |
| 2 | d 实数输入或输出小数点右边的位数 |
| 3 | m 要显示的最小位数 |
| 4 | n 要跳过的空格数 |
| 5 | r 重复计数 – 使用描述符或描述符组的次数 |
| 6 | 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
编译并执行上述代码后,将产生以下结果:(假设用户输入名称Zara)
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