Fortran Coder

查看: 8876|回复: 5
打印 上一主题 下一主题

[流程控制] 关于块case选择结构

[复制链接]

6

帖子

3

主题

0

精华

入门

F 币
35 元
贡献
20 点
跳转到指定楼层
楼主
发表于 2016-8-2 20:30:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
为啥除法那个case模块一直不会运行,除非“+”、“-”,“*”,否则直接就跳转至case default,新人求帮助

[Fortran] 纯文本查看 复制代码
! 完成加减乘除四则运算,即输入两个数,再输入一个运算符号,做对应的运算
real a,b
character op  !定义一个字符变量
read *,a,b,op
select case(op)
case('+')
    print *,'两个数之和为:',a+b
case('-')
    if (a<b) then 
        print *,'被减数不能小于减数'
    else
        print *,'两个数之差为',a-b
    end if
case('*')
    print *,'两个数之积为:',a*b
case('/')
    if (b==0) then 
        print *,'除数不能为零'
    else
        print *,'两个数之商为:',a/b
    end if
case default
    print *,"输入错误,请重新输入"
end select
end
分享到:  微信微信
收藏收藏 点赞点赞 点踩点踩

739

帖子

4

主题

0

精华

大师

农村外出务工人员

F 币
712 元
贡献
365 点

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

沙发
发表于 2016-8-2 20:45:55 | 只看该作者
你好,问题出在
read *,a,b,op
这个语句上,因为表控格式的 read 遇到 / 就会中止。从而导致 op 的值并不会读取。
因此,可以改用格式符读取。

此外,b==0 最好不要这样写,因为浮点数存在误差,所以不要做相等判断。

[Fortran] 纯文本查看 复制代码
real a,b
character op
read(*,*) a , b  !// 先表控格式读取 a b 
read(*,"(a)") op !// 然后利用格式符读取 op
select case(op)
case('+')
    print *,'两个数之和为:',a+b
case('-')
    if (a<b) then 
        print *,'被减数不能小于减数'
    else
        print *,'两个数之差为',a-b
    end if
case('*')
    print *,'两个数之积为:',a*b
case('/')
    if ( abs(b)<1.0e-6 ) then !// 浮点数不要做相等判断
        print *,'除数不能为零'
    else
        print *,'两个数之商为:',a/b
    end if
case default
    print *,"输入错误,请重新输入"
end select
end

490

帖子

4

主题

0

精华

大宗师

F 币
3298 元
贡献
1948 点

水王勋章元老勋章热心勋章

板凳
发表于 2016-8-3 08:16:04 | 只看该作者
需要四则混合运算的话
首先,读入字符串
接着,用正则表达式提取并检查
最后,逆波兰算法计算结果
看似简单,其实涉及数据结构和正则表达式等相关知识内容,不是几天就能速成的

评分

参与人数 1F 币 +6 贡献 +6 收起 理由
fcode + 6 + 6 赞一个!

查看全部评分

6

帖子

3

主题

0

精华

入门

F 币
35 元
贡献
20 点
地板
 楼主| 发表于 2016-8-3 10:31:00 | 只看该作者
楚香饭 发表于 2016-8-2 20:45
你好,问题出在
read *,a,b,op
这个语句上,因为表控格式的 read 遇到 / 就会中止。从而导致 op 的值并不会 ...

非常感谢!

6

帖子

3

主题

0

精华

入门

F 币
35 元
贡献
20 点
5#
 楼主| 发表于 2016-8-3 10:31:36 | 只看该作者
pasuka 发表于 2016-8-3 08:16
需要四则混合运算的话
首先,读入字符串
接着,用正则表达式提取并检查

谢谢指教~~

1

帖子

0

主题

0

精华

新人

F 币
10 元
贡献
3 点
6#
发表于 2016-8-21 21:47:51 | 只看该作者
学习了!!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

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

GMT+8, 2024-12-26 08:49

Powered by Tencent X3.4

© 2013-2024 Tencent

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