24小时热门版块排行榜    

查看: 1613  |  回复: 20
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

princeado

金虫 (正式写手)

[求助] 大家帮我看一个fortran的程序,我总是计算不出正确的结果

最近刚学fortran,开始编小小程序试手,下面是我弄的一个程序,没有错误,但总是运行不出正确的结果,程序是想通过do循环对数组a进行赋值,用的是语句a(i)=jiecheng(i),jiecheng是我自定义的函数,求每个数对应的阶乘。所有程序如下,哪位高手帮我看看问题在哪里。
        program test01
implicit none
integer :: i
real :: a(5)
real,external :: jiecheng
     do i=1,5
       a(i)=jiecheng(i)   
           end do
             write(*,*) a
           stop
           end
                   function jiecheng(x)
                   implicit none
                   integer x
            real jiecheng
           integer :: ii=1
           integer :: m=1
                   do ii=1,x
                       m=m*ii
                       end do
                           jiecheng=m
                                                  return
                           stop
                           end
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

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

snoopyzhao

至尊木虫 (职业作家)

【答案】应助回帖


princeado(金币+20): 谢了,问题解决了,我再好好研究下原因 2011-11-08 16:10:31
余泽成(金币+1): 谢谢参与应助! 2011-11-08 18:10:24
把 jiecheng 中的下列语句
[cdoe]
     integer :: ii=1
     integer :: m=1
[/code]
修改成下面就可以了:
CODE:
      integer :: ii
      integer :: m
      m=1

至于为什么,可以参考这里的讨论
http://www.newsmth.net/nForum/article/NumComp/102903
2楼2011-11-08 15:50:49
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

snoopyzhao

至尊木虫 (职业作家)


余泽成(金币+1): 谢谢参与应助! 2011-11-08 18:10:46
fortran 对声明阶段赋值的变量自动赋予 SAVE 属性,这样,在这个子程的连续调过程,在下一次执行时,其初始值为一次调用结束时的值……

另外,子程序的 return 之后,不要用 stop,stop 只在应该结束程序时才使用……
5楼2011-11-08 16:18:53
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

snoopyzhao

至尊木虫 (职业作家)

★ ★
余泽成(金币+2): 谢谢参与应助! 2011-11-08 18:10:59
余泽成: 专家考核存档! 2011-11-08 18:11:11
引用回帖:
7楼: Originally posted by princeado at 2011-11-08 16:37:35:
还有就是,integer :: m
                   m=1
与 integer :: m=1 两种声明变量的方式的区别是什么啊?

区别在于
integer :: m
m=1
中的 m是一个局变变量,不具有 SAVE 属性,每次调用该子程时,m 都会被重新赋值。

而 integer :: m=1 中的 m 虽然是一个局部变量,但具有 SAVE 属性,这里的 1 只是主程序初始化时的取值,在随后的执行中,它的值会是上一次该子程序执行结束时的值。

至于什么是 SAVE 属性,去查一下标准吧,我还真讲不清楚。大概的意思是,该变量的最值取值会被保留下来,直到主程序结束。
9楼2011-11-08 16:53:36
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

snoopyzhao

至尊木虫 (职业作家)


余泽成(金币+1): 鼓励讨论! 2011-11-13 21:03:21
引用回帖:
15楼: Originally posted by 长歌-废墟 at 2011-11-10 14:07:03:
建议使用call子程序的写法,这样基本不会出错。

他这个问题跟用 function 还是 subroutine 没有关系。
17楼2011-11-10 18:47:31
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

snoopyzhao

至尊木虫 (职业作家)


余泽成(金币+1): 鼓励交流! 2011-11-13 21:03:41
引用回帖:
13楼: Originally posted by princeado at 2011-11-09 07:37:21:
晚上回去翻书也看到了啊,我这fortran初学者就遇到了这样的问题,昨天下午还给彭国伦发邮件请教去了,呵呵

我很好奇,他给你啥样的回复?

这个 save 属性是标准中要求的,所有的编译器都是一样的行为……
18楼2011-11-10 18:48:36
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

snoopyzhao

至尊木虫 (职业作家)

★ ★
jjdg(金币+1): 感谢参与 2011-12-12 22:29:15
jjdg(金币+1): 感谢应助 2011-12-13 00:50:03
引用回帖:
20楼: Originally posted by 1303haojian at 2011-12-12 14:35:40:
函数里面也要用stop吗   不是return   end就可以了吗

可以用 stop,表示程序就此中止了,一般用在出现错误无法继续的情况下……
21楼2011-12-12 15:53:06
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 princeado 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[基金申请] 博后网上办公系统维护 +13 取名字烦人 2024-06-25 21/1050 2024-06-26 19:41 by msjy
[基金申请] 基金评审时,评审专家还回去看申请人代表作之外的文章吗? +8 孤单12站 2024-06-26 11/550 2024-06-26 19:29 by IceBreak_l
[基金申请] 国产期刊影响因子大于12的有20多个个了 +19 babu2015 2024-06-20 24/1200 2024-06-26 16:57 by deliciou
[基金申请] 博后面上今天下午会公布吗?有无消息? +26 hajkdfdf 2024-06-24 43/2150 2024-06-26 16:04 by kyukitu
[论文投稿] 第一篇论文投稿进程记录 +5 慎独的小花卷 2024-06-20 10/500 2024-06-26 15:24 by weichuny
[硕博家园] 难道我真的要放弃吗? +42 133456 2024-06-20 44/2200 2024-06-26 12:32 by lyfbangong
[基金申请] 今天能不能出来名单 +8 地理学1995 2024-06-25 10/500 2024-06-26 09:46 by msjy
[有机交流] 大佬们,打的核磁氢谱与chemdraw预测的有偏差 +4 来了个 2024-06-26 4/200 2024-06-26 08:45 by czyzsu
[硕博家园] 申博雅思求助 +6 刘嘉研究究 2024-06-24 7/350 2024-06-26 07:08 by 小李醒yy
[基金申请] 这样的说辞是上会了吗 +12 学员d3zYCz 2024-06-24 15/750 2024-06-25 22:05 by 3115321
[基金申请] 2024安徽省哲社立项名单公示 +3 robin_work 2024-06-24 6/300 2024-06-25 14:37 by Pickfoot
[硕博家园] 夏至,要不要硕博联谊 +4 我是王小帅 2024-06-21 6/300 2024-06-25 14:25 by 庭前花开月儿明
[硕博家园] 数据不好 +5 Hetai 2024-06-23 7/350 2024-06-25 12:37 by 1591099
[教师之家] 有没有今年的影响因子? +6 jurkat.1640 2024-06-22 10/500 2024-06-24 22:48 by 潇湘之迷
[金属] EBSD的解析率只有10% +3 wallace6666 2024-06-20 7/350 2024-06-24 16:52 by wallace6666
[基金申请] 说博后基金7月出的真打电话了吗? +12 antonysole 2024-06-24 14/700 2024-06-24 13:39 by sizhouyi
[公派出国] 博士csc联培会看重第一学历学校层次吗 +4 也就这样 2024-06-23 4/200 2024-06-24 08:18 by 晓目崇
[论文投稿] OSA期刊审稿逾期 +3 Thomas_Squid 2024-06-22 3/150 2024-06-23 15:20 by wspglt
[博后之家] 在国内某高校做全职博士后2年,现在找到新的单位,出站或退站对新工作有什么影响? +10 nxplfcc 2024-06-20 10/500 2024-06-22 07:52 by 徐长安
[基金申请] 教育部基金 +5 m1393 2024-06-21 5/250 2024-06-21 21:13 by odes
信息提示
请填处理意见