主题:一个输出方面的问题
coolyang
[专家分:0] 发布于 2005-01-12 10:30:00
有一个程序的输出数据约几万个,而且程序中输出语句在一个do循环中,即循环一次输出一个数,现在想把输出按行排,比如五个一行,如何办?
其实我看核心问题就是怎样控制输出时的换行,比如连续输出四个([color=800000]四个写语句[/color])而不换行,第五个后再换到下一行。
回复列表 (共6个回复)
沙发
mltx [专家分:20880] 发布于 2005-01-12 12:25:00
用advance="no"可不换行,一个小例子:
program MultiOutput
implicit none
integer :: i,n=10
do i=1,n
if ( mod(i,4).ne.0 ) then ! 每四个数换一行
write(*,advance="no",fmt="(i5)") i ! 输出数据,不换行
else
write(*,"(i5)") i ! 输出数据,换行
end if
end do
stop
end program MultiOutput
板凳
czliu [专家分:90] 发布于 2005-01-14 18:51:00
mltx老师是用的fortran90吧,我一直想学,不知道和77差别大不大
3 楼
spower [专家分:10] 发布于 2005-01-14 22:24:00
可以打开一个文件,用一个简单的格式输出控制就可以形成
4 楼
mltx [专家分:20880] 发布于 2005-01-15 10:13:00
2楼:
f90中新增添的advance="yes"/"no"就是为了解决楼主这样的问题的。很直接,很好用。
f90是f77的换代语言,从f77学起来不难,但优势太多了。
5 楼
czliu [专家分:90] 发布于 2005-01-17 23:37:00
ok,我抓紧时间学,楼主这个问题应该用格式输出也很容易能解决
6 楼
mltx [专家分:20880] 发布于 2005-01-18 02:01:00
格式输出解决不了把几个写语句写的结果写在一行(除非暂存起来后一块写)。否则,f90中就没有必要增加advance了。
我来回复