早教吧 育儿知识 作业答案 考试题库 百科 知识分享

关于fortran6.PROGRAMMAIN2N=3Y=(SUM(N)+SUM(N+1)+SUM(N+2))/(SUM(N+3)+SUM(N+4))WRITE(*,*)‘Y=’,YENDFUNCTIONSUM(X)INTEGERXSUM=0DO10I=1,XSUM=SUM+I10CONTINUEEND不管怎么运行上面总是提示Error:Anarray-valuedargumentisrequiredin

题目详情
关于fortran6.
PROGRAM MAIN2
N=3
Y=(SUM(N)+SUM(N+1)+SUM(N+2))/(SUM(N+3)+SUM(N+4))
WRITE (*,*) ‘Y=’,Y
END
FUNCTION SUM(X)
INTEGER X
SUM=0
DO 10 I=1,X
SUM=SUM+I
10 CONTINUE
END
不管怎么运行 上面总是提示 Error:An array-valued argument is required in this context.[SUM]
Y=(SUM(N)+SUM(N+1)+SUM(N+2))/(SUM(N+3)+SUM(N+4))
这是什么原因
但是我在上面程序里加了一句 REAL SUM(7) 上面没有错误 但是却得不到结果
▼优质解答
答案和解析
呵呵.
SUM函数是Fortran的一个内部函数,作用是求一个数组所有元素的和.因此要求SUM(X)的参数X必须是一个数组,不能是一个数.因此楼主的程序会提示:
Error: An array-valued argument is required in this context. [SUM]
你程序中前N个自然数求和函数和Fortran内部函数重名了,且未对该函数进行声明,Fortran是按照它内部的函数运行的.
解决方法:
1、把你的前N个自然数求和函数改成别的名字,如SUM2
2、如果你实在不想改函数名字,要在PROGRAM MAIN2后面加上一句SUM函数的声明:
EXTERNAL SUM
3、楼主编程的习惯好像不太好啊,变量和子函数都没有声明类型,开头也没有IMPLICIT NONE