假设我有一个包含以下循环的Fortran程序:
do i=1, 10
print *, i
enddo
这个输出就像
1
2
...
10
如何将这些值写入一行,如下所示?
1 2 ... 10
答案 0 :(得分:3)
有很多方法,立即浮现在脑海中的两个方法
$ cat loop.f90
Program loop
Implicit None
Integer :: i
Write( *, * ) 'First way - non-advancing I/O'
Do i = 1, 10
Write( *, '( i0, 1x )', Advance = 'No' ) i
End Do
Write( *, * ) ! Finish record
Write( *, * ) 'Second way - implied do loop'
Write( *, * ) ( i, i = 1, 10 )
End Program loop
$ gfortran -std=f2003 -Wall -Wextra -fcheck=all loop.f90
$ ./a.out
First way - non-advancing I/O
1 2 3 4 5 6 7 8 9 10
Second way - implied do loop
1 2 3 4 5 6 7 8 9 10
$
第一种方法。非推进I / O,抑制正在写入的记录标记的结束,这通常是新行,但确实需要显式格式。第二个隐含的do循环,不需要格式,但灵活性较差。
英语顺便说一句,他们通常被称为"循环"