关于块case选择结构
为啥除法那个case模块一直不会运行,除非“+”、“-”,“*”,否则直接就跳转至case default,新人求帮助:'(! 完成加减乘除四则运算,即输入两个数,再输入一个运算符号,做对应的运算
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
你好,问题出在
read *,a,b,op
这个语句上,因为表控格式的 read 遇到 / 就会中止。从而导致 op 的值并不会读取。
因此,可以改用格式符读取。
此外,b==0 最好不要这样写,因为浮点数存在误差,所以不要做相等判断。
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 需要四则混合运算的话
首先,读入字符串
接着,用正则表达式提取并检查
最后,逆波兰算法计算结果
看似简单,其实涉及数据结构和正则表达式等相关知识内容,不是几天就能速成的 楚香饭 发表于 2016-8-2 20:45
你好,问题出在
read *,a,b,op
这个语句上,因为表控格式的 read 遇到 / 就会中止。从而导致 op 的值并不会 ...
非常感谢!:-lol pasuka 发表于 2016-8-3 08:16
需要四则混合运算的话
首先,读入字符串
接着,用正则表达式提取并检查
谢谢指教~~ 学习了!!
页:
[1]