fortran程序。定义了一个函数F(X),在主程序里调用时总出错。后来发现是自变量的类型之类的错误。

比如定义了一个阶乘的函数REALFUNCTIONJ(X)REALX,YY=1J=1.0DOWHILE(Y<=X)J=J*YY=Y+1ENDDOENDFUNCTION最后,... 比如 定义了一个阶乘的函数
REAL FUNCTION J(X)
REAL X,Y
Y=1
J=1.0
DO WHILE(Y<=X)
J=J*Y
Y=Y+1
ENDDO
ENDFUNCTION

最后,比如,J(3)给出错误答案1.J(3.0)给出正确答案。
我只是举个例子 请不要把
REAL X,Y 改成INTEGER X,Y。我就是想知道一般的我错在哪。。。
我没系统看过fortran的书,以前经常玩按键精灵,所以我就是以作练习的方式学习。所以也最好不要让我看书什么的。就这个问题讲清楚就行了。谢谢!
展开
 我来答
putongdeshu
2013-02-09
知道答主
回答量:4
采纳率:0%
帮助的人:3.1万
展开全部
Real类型之间比较大小时,在你的例题里需要判断两个实数相等,判断两个实数相等经常会出现不稳定的情况。建议楼主将do while里的内容改为int(y)<=int(x)。这样将他们转换为整数后再比较大小更靠谱。
另外,像大家说的,函数里定义的数据类型要和调用时给的数据类型一致。
楼主试一试吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
sjzwuww
2013-02-09 · TA获得超过1.2万个赞
知道大有可为答主
回答量:6839
采纳率:82%
帮助的人:2245万
展开全部
在子程序中X是实型变量,调用的时候也要用实型的。
所以用J(3.0)正确,用J(3)出现错误。
但是在主程序中写:
X=3 ! X是实型变量
Z = J(X)
则不会出现错误。
更多追问追答
追问
那么我在调用时,比如有个数N是定义的实型,那么我会用到J(N),则又会出错。。。如何修改呢? 谢谢
追答
注意点1:如果N定义为实型,则子程序和调用该子程序中必须N均定义为实型,即类型一致。
注意点2:函数名J在子程序中是实型,则在调用它的程序中也必须定义为实型。
按Fortran语言的I-N规则,如果不加说明,J和N都默认是整型。
现在普遍的做法都是用 implicit none 使隐含的I-N规则失效,然后需要什么类型的变量都要给以说明,这样做的好处是不容易出错。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-02-08
展开全部
因为你定义X是浮点数,而你输入X=3时候,会自动默认X为整数类型
所以通常输入代表整数的浮点数时,要加个形式上的小数点
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式