
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的书,以前经常玩按键精灵,所以我就是以作练习的方式学习。所以也最好不要让我看书什么的。就这个问题讲清楚就行了。谢谢! 展开
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的书,以前经常玩按键精灵,所以我就是以作练习的方式学习。所以也最好不要让我看书什么的。就这个问题讲清楚就行了。谢谢! 展开
3个回答
展开全部
Real类型之间比较大小时,在你的例题里需要判断两个实数相等,判断两个实数相等经常会出现不稳定的情况。建议楼主将do while里的内容改为int(y)<=int(x)。这样将他们转换为整数后再比较大小更靠谱。
另外,像大家说的,函数里定义的数据类型要和调用时给的数据类型一致。
楼主试一试吧
另外,像大家说的,函数里定义的数据类型要和调用时给的数据类型一致。
楼主试一试吧
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
在子程序中X是实型变量,调用的时候也要用实型的。
所以用J(3.0)正确,用J(3)出现错误。
但是在主程序中写:
X=3 ! X是实型变量
Z = J(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为整数类型
所以通常输入代表整数的浮点数时,要加个形式上的小数点
所以通常输入代表整数的浮点数时,要加个形式上的小数点
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询