主题:[讨论]为什么没有结果,太奇怪了
zhuizhui
[专家分:0] 发布于 2010-11-12 20:55:00
character::op,p
real::x,y
do
read *,x,op,y
select case(op)
case('+')
print *,x+y
case('-')
print *,x-y
case('*')
print *,x*y
case('/')
if(y==0) then
print *,"chu shu wei 0!"
else
print *,x/y
endif
case default
print *,"shu ru cuo wu"
end select
print *,"if you want to contineu,press y"
print *,"if you not,press n"
read*,p
if(p=='n') then
exit
else
cycle
endif
enddo
end
这个程序是一个计算器程序,输入如:3+5
2-6 6*2 9/6然后问你是否继续,如果继续就按y,结束就按n
这个程序编译没有错误,关键是没有结果,一执行就没得反应啊
哪个高手帮帮我啊,
回复列表 (共29个回复)
沙发
dongyuanxun [专家分:7180] 发布于 2010-11-12 21:11:00
因为 read *,x,op,y 这句
以回车接受指令
3+5的话
输入3 回车
+ 回车
5 回车
板凳
zhuizhui [专家分:0] 发布于 2010-11-12 21:28:00
专家说的对啊,就是你说的神了有结果了!但是我想这样呢2+3回车。然后显示5。可以像c一样这样吗
3 楼
zhuizhui [专家分:0] 发布于 2010-11-12 21:31:00
就是你说的那样,神了有结果了!能不能这样吗,3+3回车,
4 楼
dongyuanxun [专家分:7180] 发布于 2010-11-12 21:53:00
那考虑把3+5直接传递给某个字符串
然后来读这个字符串,依次解析
5 楼
zhuizhui [专家分:0] 发布于 2010-11-12 22:07:00
具体如何搞,你就改改我的程序吗,我已经折腾了好几个小时了,你就好人做到底吗
6 楼
asymptotic [专家分:16630] 发布于 2010-11-13 08:27:00
送佛上西天!
格式化输入。
program main
implicit none
character(len = 1):: op, p
real:: x, y
do while ( .true. )
write(*, *) "input x, op, y, separate by blank or Enter: "
read(*, *) x, op, y
select case (op)
case ('+')
write(*, *) x + y
case ('-')
write(*, *) x - y
case ('*')
write(*, *) x * y
case('/')
if ( y == 0.0 ) then
write(*, *) "The divisor can't be -- 0!"
else
write(*, *) x / y
endif
case default
write(*, *) "The input is error."
end select
write(*, *) "if you want to contineu, press y, otherwise, press n"
read(*, *) p
if( p == 'n' ) then
exit
endif
end do
stop
end program
7 楼
yeg001 [专家分:14390] 发布于 2010-11-13 09:53:00
你对C熟悉的话这个不是问题, 完全可以按照你用C的思路. 只是处理方法问题跟语言关系不大.
8 楼
zhuizhui [专家分:0] 发布于 2010-11-13 09:58:00
我就是按照c的思路做的,我学过c
9 楼
zhuizhui [专家分:0] 发布于 2010-11-13 10:03:00
read (*,10)x,op,y
10 format(f5.2,a,f5.2)
这也不对啊,3+6回车,不行啊,程序没有错误,没结果啊
10 楼
asymptotic [专家分:16630] 发布于 2010-11-13 10:21:00
3 是 F5.2 的格式吗?
我来回复