3

例如,我想以 2 的增量从 1 循环到 500。但是,对于每 8 个循环,我想跳过接下来的 18 个循环(使 do-variable 增加 18)。我怎么做?

我的代码是:

event = 0
do i = 1,500,2
    event = event + 1
    if (event .eq. 8) then
          i = i + 18
          event = 0
    endif
enddo

但是,我收到错误:“DO 主体中的 do 变量不应出现在变量定义上下文中”。基本上我不能改变循环中的变量“i”。那么我应该如何编写代码来实现呢?

谢谢。

4

2 回答 2

5

禁止修改循环索引。您可以通过多种方式解决您的问题。例如,这是一个没有显式循环索引的解决方案:

i = -1
do
    i=i+2
    if(i > 5000) exit
    if (i == 15) i=i+18
    ...
enddo
于 2014-06-24T03:10:23.663 回答
1

考虑这个例子的嵌套循环,比如

  do k=0,15
    do j=0,7
      i=34*k+2*j  ! 34 == 18+2*8
        ....
   end do
  end do

(可能我没有算术权利,但你明白了)

于 2014-06-24T03:45:59.190 回答