Fortran Coder

查看: 10253|回复: 6
打印 上一主题 下一主题

[文件读写] 在函数子程序中用if结构时遇到奇怪的报错,望各位大大斧正

[复制链接]

954

帖子

0

主题

0

精华

大师

F 币
184 元
贡献
75 点

规矩勋章元老勋章新人勋章水王勋章热心勋章

QQ
楼主
发表于 2015-5-17 21:43:09 | 显示全部楼层
if ( ... ) a = 1
注意这种用法不写 then

或者

if ( ... ) then
  a = 1
else
  a = 2
end if

这两种用法

954

帖子

0

主题

0

精华

大师

F 币
184 元
贡献
75 点

规矩勋章元老勋章新人勋章水王勋章热心勋章

QQ
沙发
发表于 2015-5-17 21:50:50 | 显示全部楼层
[Fortran] 纯文本查看 复制代码
function ks(n,th,thwp,thj,c1,c2,c3,c4,d1,d2,d3,d4,dx1,dx2,dx3,dx4,t) result(kss)
implicit none
integer,intent(in)::n,dx1,dx2,dx3,dx4,t
real,intent(in)::th,thwp,thj,c1,c2,c3,c4,d1,d2,d3,d4
real::kss
if(th>thj) then 
   kss=1.0
else
  if(t>=0.and.t<dx1) then
    kss=c1*((th-thwp)/(thj-thwp))**d1
  elseif(t>=dx1.and.t<(dx1+dx2)) then 
    kss=c2*((th-thwp)/(thj-thwp))**d2
  elseif(t>=(dx1+dx2).and.t<(dx1+dx2+dx3)) then 
    kss=c3*((th-thwp)/(thj-thwp))**d3
  elseif(t>=(dx1+dx2+dx3).and.t<=(dx1+dx2+dx3+dx4)) then 
    kss=c4*((th-thwp)/(thj-thwp))**d4
  else 
    print*,'该时间超出计算范围'
  endif
endif
end function 

954

帖子

0

主题

0

精华

大师

F 币
184 元
贡献
75 点

规矩勋章元老勋章新人勋章水王勋章热心勋章

QQ
板凳
发表于 2015-5-18 08:29:53 | 显示全部楼层
另外,我从来没使用命名的 if,比如你的 first 和 next。一点用都没有,还破坏程序可读性。
我也极少使用命名的 Do,这个稍微有点用,但能不用就不用。
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2024-5-4 09:00

Powered by Tencent X3.4

© 2013-2024 Tencent

快速回复 返回顶部 返回列表