Fortran里,关于DO循环中循环变量的问题~~~!
例:DO3I=1,20IF(I>10)I=I+1X=5*I.....3CONTINUE在这个循环里,能不能实现IF语句?或者用其它的方法来实现?谢谢1楼~~!不过现在是这...
例:DO 3 I=1,20
IF(I>10)I=I+1
X=5*I
.....
3 CONTINUE
在这个循环里,能不能实现IF语句?或者用其它的方法来实现?
谢谢1楼~~!不过现在是这样,我由于需要得把那个变量I在DO循环里头改变.....这个是不可以的吗?有没有什么其它的方法(变量代换)等的来改变一下? 我初学者,请多多指教! 展开
IF(I>10)I=I+1
X=5*I
.....
3 CONTINUE
在这个循环里,能不能实现IF语句?或者用其它的方法来实现?
谢谢1楼~~!不过现在是这样,我由于需要得把那个变量I在DO循环里头改变.....这个是不可以的吗?有没有什么其它的方法(变量代换)等的来改变一下? 我初学者,请多多指教! 展开
3个回答
展开全部
.
DO+计数器变量 的结构,是Fortran里面非常特殊的一种循环结构,也是许多有其它语言基础的人开始学Fortran时很容易迷惑不解的地方。
DO label I=min, max, step
……
……
label continue
或者
DO I=min, max, step
……
……
END DO
都是DO+计数器变量 结构,它们的执行过程可能出乎许多人的意料,是先根据 (max-min)/step +1 计算好要循环多少次,然后一股脑的执行这么多次。你可以在循环体中引用这个变量,你甚至可以用非整型变量来当计数器(编译器自动给你进行变量类型转换,然后按整型计算次数。)
我这样解释一下原理,你就应该明白为什么不允许你在循环体内随便更改计数器变量了吧……这一特性很奇怪,不过也确实为Fortran带来了方便手工/自动并行化和编译器级别的自动优化加速等等好处。
=============================================================
大部分情况下,你应该利用上述特性,更高级一点的还有隐DO循环等。但如果你确实需要在循环体中改写计数器变量的值,那么不应该用上述“DO+计数器变量”的循环结构,而应该是
DO
……
……
if(循环终止判断) exit
END DO
这种无计数器变量的DO循环结构。你可以把你要写的循环改写成类似于
+++++++++++++++++++++++++
i = 1
DO
if(i>10) i=i+1
x=5*i
……
i=i+1
if(i>20) exit
END DO
+++++++++++++++++++++++++
或者,如果你还在看谭浩强那本Fortran77的破书的话,趁早扔掉改学Fortran90/95吧,在Fortran90以后开始支持——
DO WHILE (判断)
……
……
END DO
的结构,类似于C/C++语言的while结构,用这种结构可以写得更简单
+++++++++++++++++++++++++
i=1
DO WHILE (i <= 20)
if(i>10) i=i+1
x=5*i
……
i=i+1
END DO
+++++++++++++++++++++++++
事实上上述exit和do while都是Fortran77标准中没有的,Fortran90标准才有。
DO+计数器变量 的结构,是Fortran里面非常特殊的一种循环结构,也是许多有其它语言基础的人开始学Fortran时很容易迷惑不解的地方。
DO label I=min, max, step
……
……
label continue
或者
DO I=min, max, step
……
……
END DO
都是DO+计数器变量 结构,它们的执行过程可能出乎许多人的意料,是先根据 (max-min)/step +1 计算好要循环多少次,然后一股脑的执行这么多次。你可以在循环体中引用这个变量,你甚至可以用非整型变量来当计数器(编译器自动给你进行变量类型转换,然后按整型计算次数。)
我这样解释一下原理,你就应该明白为什么不允许你在循环体内随便更改计数器变量了吧……这一特性很奇怪,不过也确实为Fortran带来了方便手工/自动并行化和编译器级别的自动优化加速等等好处。
=============================================================
大部分情况下,你应该利用上述特性,更高级一点的还有隐DO循环等。但如果你确实需要在循环体中改写计数器变量的值,那么不应该用上述“DO+计数器变量”的循环结构,而应该是
DO
……
……
if(循环终止判断) exit
END DO
这种无计数器变量的DO循环结构。你可以把你要写的循环改写成类似于
+++++++++++++++++++++++++
i = 1
DO
if(i>10) i=i+1
x=5*i
……
i=i+1
if(i>20) exit
END DO
+++++++++++++++++++++++++
或者,如果你还在看谭浩强那本Fortran77的破书的话,趁早扔掉改学Fortran90/95吧,在Fortran90以后开始支持——
DO WHILE (判断)
……
……
END DO
的结构,类似于C/C++语言的while结构,用这种结构可以写得更简单
+++++++++++++++++++++++++
i=1
DO WHILE (i <= 20)
if(i>10) i=i+1
x=5*i
……
i=i+1
END DO
+++++++++++++++++++++++++
事实上上述exit和do while都是Fortran77标准中没有的,Fortran90标准才有。
2017-03-18 · 知道合伙人互联网行家
关注
展开全部
DO+计数器变量 的结构,是Fortran里面非常特殊的一种循环结构,也是许多有其它语言基础的人开始学Fortran时很容易迷惑不解的地方。
DO label I=min, max, step
……
……
label continue
或者
DO I=min, max, step
……
……
END DO
都是DO+计数器变量 结构,它们的执行过程可能出乎许多人的意料,是先根据 (max-min)/step +1 计算好要循环多少次,然后一股脑的执行这么多次。你可以在循环体中引用这个变量,你甚至可以用非整型变量来当计数器(编译器自动给你进行变量类型转换,然后按整型计算次数。)
我这样解释一下原理,你就应该明白为什么不允许你在循环体内随便更改计数器变量了吧……这一特性很奇怪,不过也确实为Fortran带来了方便手工/自动并行化和编译器级别的自动优化加速等等好处。
=============================================================
大部分情况下,你应该利用上述特性,更高级一点的还有隐DO循环等。但如果你确实需要在循环体中改写计数器变量的值,那么不应该用上述“DO+计数器变量”的循环结构,而应该是
DO
……
……
if(循环终止判断) exit
END DO
这种无计数器变量的DO循环结构。你可以把你要写的循环改写成类似于
+++++++++++++++++++++++++
i = 1
DO
if(i>10) i=i+1
x=5*i
……
i=i+1
if(i>20) exit
END DO
+++++++++++++++++++++++++
或者,如果你还在看谭浩强那本Fortran77的破书的话,趁早扔掉改学Fortran90/95吧,在Fortran90以后开始支持——
DO WHILE (判断)
……
……
END DO
的结构,类似于C/C++语言的while结构,用这种结构可以写得更简单
+++++++++++++++++++++++++
i=1
DO WHILE (i <= 20)
if(i>10) i=i+1
x=5*i
……
i=i+1
END DO
+++++++++++++++++++++++++
事实上上述exit和do while都是Fortran77标准中没有的,Fortran90标准才有。
DO label I=min, max, step
……
……
label continue
或者
DO I=min, max, step
……
……
END DO
都是DO+计数器变量 结构,它们的执行过程可能出乎许多人的意料,是先根据 (max-min)/step +1 计算好要循环多少次,然后一股脑的执行这么多次。你可以在循环体中引用这个变量,你甚至可以用非整型变量来当计数器(编译器自动给你进行变量类型转换,然后按整型计算次数。)
我这样解释一下原理,你就应该明白为什么不允许你在循环体内随便更改计数器变量了吧……这一特性很奇怪,不过也确实为Fortran带来了方便手工/自动并行化和编译器级别的自动优化加速等等好处。
=============================================================
大部分情况下,你应该利用上述特性,更高级一点的还有隐DO循环等。但如果你确实需要在循环体中改写计数器变量的值,那么不应该用上述“DO+计数器变量”的循环结构,而应该是
DO
……
……
if(循环终止判断) exit
END DO
这种无计数器变量的DO循环结构。你可以把你要写的循环改写成类似于
+++++++++++++++++++++++++
i = 1
DO
if(i>10) i=i+1
x=5*i
……
i=i+1
if(i>20) exit
END DO
+++++++++++++++++++++++++
或者,如果你还在看谭浩强那本Fortran77的破书的话,趁早扔掉改学Fortran90/95吧,在Fortran90以后开始支持——
DO WHILE (判断)
……
……
END DO
的结构,类似于C/C++语言的while结构,用这种结构可以写得更简单
+++++++++++++++++++++++++
i=1
DO WHILE (i <= 20)
if(i>10) i=i+1
x=5*i
……
i=i+1
END DO
+++++++++++++++++++++++++
事实上上述exit和do while都是Fortran77标准中没有的,Fortran90标准才有。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
可以对 I 进行判断,但不能修改 I 的内容
IF 可以,但是不能 I = I + 1
补充:不可以办到。
IF 可以,但是不能 I = I + 1
补充:不可以办到。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询