Fortran Coder

查看: 8180|回复: 9
打印 上一主题 下一主题

[流程控制] cycle无法根据if条件进行判断

[复制链接]

20

帖子

8

主题

0

精华

熟手

F 币
115 元
贡献
71 点
跳转到指定楼层
楼主
发表于 2014-10-17 03:15:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
[size=14.3999996185303px]在这个程序的cycle部分,我想实现 : 如果x在0和1之间就退出循环,否则不断要求输入x和n。编译成功,但输入正确后,仍然循环,如输入0.5  100。恳请大家指教^^


[size=14.3999996185303px]IVF, Win7, fortran 95

[Fortran] 纯文本查看 复制代码
program ln
    implicit none
    real::x,term,sum=0
    integer::n
    do
        print*,'please input x and n'
        read*,x,n
        if(x>1.or.x<0.000001) cycle
    end do
    do 
        term=(x**n)/n
        sum=sum+term
        n=n-1
        if(n==0) exit
    end do
    print*,sum
    end program ln


分享到:  微信微信
收藏收藏 点赞点赞 点踩点踩

33

帖子

4

主题

0

精华

熟手

F 币
229 元
贡献
117 点
沙发
发表于 2014-10-17 08:03:01 | 只看该作者
第一个循环没有退出条件,所以会一直循环下去,也就是不停地要求输入x,n

100

帖子

0

主题

0

精华

专家

F 币
550 元
贡献
291 点

规矩勋章元老勋章

QQ
板凳
发表于 2014-10-17 09:40:10 | 只看该作者
if(x>1.or.x<0.000001) cycle

改为

if(x<=1.and.x>0.000001) exit

20

帖子

8

主题

0

精华

熟手

F 币
115 元
贡献
71 点
地板
 楼主| 发表于 2014-10-17 14:48:54 | 只看该作者

没法用cycle实现吗?

136

帖子

3

主题

0

精华

版主

F 币
1964 元
贡献
1677 点

帅哥勋章管理勋章爱心勋章新人勋章热心勋章元老勋章

5#
发表于 2014-10-17 14:53:37 | 只看该作者
Shiev 发表于 2014-10-17 14:48
没法用cycle实现吗?

cycle 是执行下一次do循环,而您的do循环是无限循环,那么cycle肯定是跳不出去的,exit是跳出本层的do循环

20

帖子

8

主题

0

精华

熟手

F 币
115 元
贡献
71 点
6#
 楼主| 发表于 2014-10-17 15:15:44 | 只看该作者
hanshikai 发表于 2014-10-17 08:03
第一个循环没有退出条件,所以会一直循环下去,也就是不停地要求输入x,n

有退出条件啊,不满足if里的条件不就退出了吗?

736

帖子

4

主题

0

精华

大师

农村外出务工人员

F 币
700 元
贡献
359 点

新人勋章爱心勋章水王勋章元老勋章热心勋章

7#
发表于 2014-10-17 16:00:33 | 只看该作者
本帖最后由 楚香饭 于 2014-10-17 16:03 编辑

你没有写 else exit

if 的意思是,如果。而不是:只有

20

帖子

8

主题

0

精华

熟手

F 币
115 元
贡献
71 点
8#
 楼主| 发表于 2014-10-17 22:11:14 | 只看该作者
楚香饭 发表于 2014-10-17 16:00
你没有写 else exit

if 的意思是,如果。而不是:只有

sorry, can you please give me a modified version? and I still don't understand the syntax of "circle"

xue xiao mei you zhong wen shu ru fa, bu hao yi si la^^,

2033

帖子

12

主题

5

精华

论坛跑堂

臭石头雪球

F 币
1641 元
贡献
709 点

美女勋章热心勋章星光勋章新人勋章贡献勋章管理勋章帅哥勋章爱心勋章规矩勋章元老勋章水王勋章

9#
发表于 2014-10-17 22:34:37 | 只看该作者
[Fortran] 纯文本查看 复制代码
program ln
    implicit none
    real::x,term,sum=0
    integer::n
    do
        print*,'please input x and n'
        read*,x,n
        if(x>1.or.x<0.000001) then
           cycle
        else
           exit
        end if
    end do
    do 
        term=(x**n)/n
        sum=sum+term
        n=n-1
        if(n==0) exit
    end do
    print*,sum
    end program ln

20

帖子

8

主题

0

精华

熟手

F 币
115 元
贡献
71 点
10#
 楼主| 发表于 2014-10-18 01:12:27 | 只看该作者
楚香饭 发表于 2014-10-17 16:00
你没有写 else exit

if 的意思是,如果。而不是:只有

理解了,谢谢!!
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2024-12-24 01:05

Powered by Tencent X3.4

© 2013-2024 Tencent

快速回复 返回顶部 返回列表