24小时热门版块排行榜    

查看: 590  |  回复: 8
当前主题已经存档。
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

journalemu

[交流] 【求助】知道这个程序为什么报错嘛? 【已解决】

implicit real*8(a-h,o-z)
read(*,*) n
write(*,*)n, fac(n)
read(*,*) m
write(*,*)m, fac(m)
end

function fac(n)
implicit real*8(a-h,o-z)
data f/1/

write(*,*) '***'
if(n.lt.0) return

do i=1,n
f=f*i
enddo
fac=f
return
end

在练习save应用的时候,写了上个小的子程序,看看Save用法的,没想到不对,报错如附件中所示,愿高手指点,奉上20金币酬谢。

上面个小程序,是输入一个数,求其的阶乘的程序, 我就只求为啥会报这个错,多谢。多谢。

[ Last edited by nono2009 on 2009-12-29 at 16:17 ]
回复此楼

» 猜你喜欢

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

prairie

木虫 (正式写手)

★ ★ ★
nono2009(金币+1,VIP+0):谢谢参与!楼下给出了正解。 12-27 20:22
journalemu(金币+2,VIP+0):谢谢。 12-28 10:27
write(*,*) '***'
if(n.lt.0) return

do i=1,n

是不是因为这儿允许n=0, 由于特定的编译器的问题导致的?
改成 n.lt.1试一下。
PS:我只是猜测。
O(∩_∩)O~
4楼2009-12-27 20:02:35
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 9 个回答

dic213

木虫 (著名写手)

第三军团儿童团团长

★ ★ ★
波不动(金币+1,VIP+0):感谢应助! 12-27 19:38
journalemu(金币+2,VIP+0):谢谢。 12-28 10:26
data f/1/

上面这句是干什么的,是给f赋初值吗?
不是这样的吧?
你直接用f=1,就对了。
春梦随云散, 飞花逐水流. 寄言众儿女, 何必觅闲愁.
2楼2009-12-27 19:22:48
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

journalemu

引用回帖:
Originally posted by dic213 at 2009-12-27 19:22:
data f/1/

上面这句是干什么的,是给f赋初值吗?
不是这样的吧?
你直接用f=1,就对了。

感谢dic213, 呵呵,不过测试了,还是不对,还是这个错误。
请求高手帮忙。
3楼2009-12-27 19:54:45
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

maomao1210

金虫 (正式写手)

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
nono2009(金币+3,VIP+0):谢谢专家!辛苦了。 12-27 20:17
journalemu(金币+14,VIP+0):谢谢 12-29 12:28
有两种修改方案:
第一: 把函数中fac中的 write(*,*) '***'去掉。因为主程序你用了一个
write(*,*) n,fac(n) 你这不是相当于把屏幕自己输在屏幕上嘛?函数仅仅返回一个值,不建议在函数中使用输出。
第二: 就是你把主程序修改一下,修改如下:
把write(*,*) n,fac(n) 修改为:
t=fac(n)
write(*,*) n,t
这样你函数的write(*,*)语句就不用去掉了。
这是一个挺隐蔽的错误,下次注意点。
5楼2009-12-27 20:11:24
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
普通表情 高级回复 (可上传附件)
信息提示
请填处理意见