Fortran Coder

标题: 这程序不用GOTO语句怎么写 [打印本页]

作者: gengyan123456    时间: 2014-7-19 10:43
标题: 这程序不用GOTO语句怎么写
各位高手帮帮忙,这个程序如果不用GOTO语句怎么写呢?
[Fortran] 纯文本查看 复制代码
10    CONTINUE
      IF(KX.GT.KSX.AND.KY.GT.KSY) GOTO 70
      IF(KX.LE.KSX) THEN
KXI=X(KX,2)
KXJ=X(KX,3)
      ENDIF
      IF(KY.LE.KSY) THEN
KYI=Y(KY,2)
KYJ=Y(KY,3)
      ENDIF
      KSZ=KSZ+1
   IF(KSZ.EQ.M5) THEN
     WRITE(*,*) ' KSZ=M5=',M5,KSX,KSY,' Increase M5(in plus)!'
     STOP
   ENDIF
      IF(KX.GT.KSX) GOTO 40
      IF(KY.GT.KSY) GOTO 20
      IF(KXI.EQ.KYI.AND.KXJ.EQ.KYJ) GOTO 30
      IF(KYI.LT.KXI.OR.(KYI.EQ.KXI.AND.KYJ.LT.KXJ)) GOTO 40
20 Z(KSZ,1)=X(KX,1)
50 Z(KSZ,2)=X(KX,2)
Z(KSZ,3)=X(KX,3)
KX=KX+1
GOTO 10
30 Z(KSZ,1)=X(KX,1)+Y(KY,1)
KY=KY+1
GOTO 50
40 Z(KSZ,1)=Y(KY,1)
Z(KSZ,2)=Y(KY,2)
Z(KSZ,3)=Y(KY,3)
KY=KY+1
GOTO 10
70    CONTINUE


作者: andy8496    时间: 2014-7-19 11:25
本来写了一大段代码一次通过很有成就感。看完楼主的帖子又失落了,没头没尾,看晕了啊……
作者: xiaorenwu    时间: 2014-7-19 11:57
不知楼主试过return语句没?感觉可以直接换成return语句的
作者: gengyan123456    时间: 2014-7-19 12:12
xiaorenwu 发表于 2014-7-19 11:57
不知楼主试过return语句没?感觉可以直接换成return语句的

关键不是子程序里的啊
作者: 珊瑚虫    时间: 2014-7-19 13:46
根据楼主的意思,不用goto 那就if elseif 吧
作者: gengyan123456    时间: 2014-7-19 14:37
珊瑚虫 发表于 2014-7-19 13:46
根据楼主的意思,不用goto 那就if elseif 吧

我自己弄出来了,谢谢了
作者: gengyan123456    时间: 2014-7-19 14:38
gengyan123456 发表于 2014-7-19 14:37
我自己弄出来了,谢谢了

不过你说的elseif和原来的能有什么区别呢
作者: gengyan123456    时间: 2014-7-19 14:40
xiaorenwu 发表于 2014-7-19 11:57
不知楼主试过return语句没?感觉可以直接换成return语句的

恩恩,差不多




欢迎光临 Fortran Coder (http://bbs.fcode.cn/) Powered by Discuz! X3.2