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循环里头改变.....这个是不可以的吗?有没有什么其它的方法(变量代换)等的来改变一下? 我初学者,请多多指教!
展开
 我来答
marine_marion
2009-12-16 · TA获得超过6820个赞
知道大有可为答主
回答量:1505
采纳率:0%
帮助的人:2710万
展开全部
.

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标准才有。
DoramiHe
2017-03-18 · 知道合伙人互联网行家
DoramiHe
知道合伙人互联网行家
采纳数:25335 获赞数:59534
2011年中山职业技术学院毕业,现担任毅衣公司京东小二

向TA提问 私信TA
展开全部
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标准才有。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
天河流纹石
2009-12-17 · TA获得超过1.3万个赞
知道大有可为答主
回答量:7623
采纳率:76%
帮助的人:6631万
展开全部
可以对 I 进行判断,但不能修改 I 的内容

IF 可以,但是不能 I = I + 1

补充:不可以办到。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式