Fortran动态生成输出格式

如何用Fortran动态生成输出格式?

-----------------------------------------------------------
1、法一,

用尖括号<>,其作用好像就是用于”在字符串中放置变量“。

个人感觉这个方法比“内部文件法”要好一点,简单且易于理解。

比如

write(*,"(<num>f10.3)"data

<>不仅可以用来做系数,而且可以与各编辑命令配合使用,比如你可以写出这样的代码:

write(*,"(<n>a<len_trim(c1)>)"trim(c1),trim(c1)

下面是一个用*输出菱形的小程序:

!输出对角线为2*m+1个“*”的菱形

!by vqimwr
program main
implicit none
integer
::i,m

!输出对角线为2*m+1个“*”的菱形
m=15
do i=0,m,1
    
write(*,"(<m-i>x,<2*i+1>('*'))")
end do
m=m-1
do i=m,0,-1
    
write(*,"(<m-i+1>x,<2*i+1>('*'))")
end do

stop
end

更为变态的用法,比如配合f编辑符使用,真是方便啊:


program main
implicit none
integer
::i=2,m=9,n=2
write(*, "( <i>f<m>.<n>)" ) 9.0,6.0
end program main

当然,其它编辑符也可以这样用。……

 


下面方法二中的例子用<>实现的话,如下:
real :: data(100)
integer :: i,num
data = (/ (i,i=1,100) /)/10.0
read(*,*) num
write(*,"(<num>f10.3)"data


------------------------------------------------------------

方法二:
用字符串代替 “(……)”,即内部文件法:
bbs.programfan.com里的mltx发了个faq帖子,链接如下:
http://www.programfan.com/club/showbbs.asp?id=102851
里面第三问即有回答,直接复制过来,如下:

设有一个数组data(100),输出时,希望每行输出num个数,而num由用户输入,如何实现?

用内部文件:
character(len=80) :: form
real 
:: data(100)
integer :: i,num

data = (/ (i,i=1,100) /)/10.0
read(*,*) num
write(form,*) "(",num,"f10.3)"
write(*,formdata

stop
end

----------------------------------------------------------
另外,不知道有没有其它动态输出的方法?望高人留印。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yueliang2100

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值