Fortran中的DO循环增量问题

Fortran中的DO循环增量问题,fortran,Fortran,我在fortran中使用do循环时遇到问题 REAL W,V,X DO 50 W = 0.5,5.0,0.5 DO 50 V = 10.0,1000.0,10.0 DO 50 X = 1.0,10,1.0 C=(W*V*X)/1000.0 WRITE(*,*) W,V,X,C 50 CONTINUE STOP END 如果我给出了这一点,它表明在do循环中只需要使用整数,那么有没有办法在do循环中给出整数,或者有其他办法呢?使用整数作为循环索引 REAL W,V,X

我在fortran中使用do循环时遇到问题

REAL W,V,X 
DO 50 W = 0.5,5.0,0.5
DO 50 V = 10.0,1000.0,10.0
DO 50 X = 1.0,10,1.0
C=(W*V*X)/1000.0
WRITE(*,*) W,V,X,C
50 CONTINUE
STOP
END 

如果我给出了这一点,它表明在do循环中只需要使用整数,那么有没有办法在do循环中给出整数,或者有其他办法呢?

使用整数作为循环索引

      REAL W,V,X
      INTEGER I,J,K

      DO 50 I = 1,10
        DO 50 J = 1,100
          DO 50 K = 1,10

            W = 0.5 * I
            V = 10.0 * J
            X = 1.0 * K

            C=(W*V*X)/1000.0
            WRITE(*,*) W,V,X,C

50    CONTINUE
      STOP
      END

使用整数作为循环索引

      REAL W,V,X
      INTEGER I,J,K

      DO 50 I = 1,10
        DO 50 J = 1,100
          DO 50 K = 1,10

            W = 0.5 * I
            V = 10.0 * J
            X = 1.0 * K

            C=(W*V*X)/1000.0
            WRITE(*,*) W,V,X,C

50    CONTINUE
      STOP
      END

您应该能够通过增加步长值来增加实变量,并使用if-then退出循环,从而完成相同的任务。笨重,但应该有用


上次我用Fortran编程时,我使用了穿孔卡和IBM-360,所以我不想假装我记得语法。

你应该能够通过增加步长值来增加一个实变量,并使用if-then退出循环来完成同样的事情。笨重,但应该有用


上次我用Fortran编程时,我使用了打孔卡和IBM-360,所以我不会假装我记得语法。

为了更安全的编程实践,您可能应该使用
w=0.5*real(I)
(同样对于
v
x
)。或者,为了简单起见:
c=real(i*j*k)/1000.0
@KyleKanos这里不需要额外的赘述,integer
i
将升级到
real
,只要
W
声明为
real
@IRO bot:5.*(3/4)/=(5.*3)/4——第一个是零,而后者是3.75。应该避免使用混合类型的数学,但并不总是必要的。现在最好避免使用相同的标记为
CONTINUE
语句作为多个循环的结束;使用匹配的
END DO
语句。@KyleKanos整数除法是另一个问题,在上面的示例中不存在。:)为了更安全的编程实践,您可能应该使用
w=0.5*real(i)
(同样,对于
v
x
)。或者,为了简单起见:
c=real(i*j*k)/1000.0
@KyleKanos这里不需要额外的赘述,integer
i
将升级到
real
,只要
W
声明为
real
@IRO bot:5.*(3/4)/=(5.*3)/4——第一个是零,而后者是3.75。应该避免使用混合类型的数学,但并不总是必要的。现在最好避免使用相同的标记为
CONTINUE
语句作为多个循环的结束;使用匹配的
END DO
语句。@KyleKanos整数除法是另一个问题,在上面的示例中不存在。:)