我是Fortran的新手,编写这个小程序,为一个圆圈写出100个有序对。
但是我得到了上面提到的错误而且我不知道如何解决。
implicit real*8(a-h,o-z)
parameter(N=100)
parameter(pi = 3.14159265358979d0)
integer*8 k
dtheta=2*pi/N
r=1.0d0
x00=0.0d0
y00=0.0d0
do k=0,N-1
xb(k)=r*cos(k*dtheta)-x00
yb(k)=r*sin(k*dtheta)-y00
enddo
open(64,file='xbyb.m',status='unknown')
write(64,*) (xb(k),k=0,N-1),(yb(k),k=0,N-1)
close(64)
end
答案 0 :(得分:4)
您没有声明数组xb
和yb
。
虽然技术上不是FORTRAN 77,但我仍然建议使用implicit none
或至少一个等效的编译器选项来强制声明所有内容。隐式打字是邪恶的,会导致错误。
正如高性能马克提醒的那样,语法
f(k) = something
声明一个功能(现在在Fortran 95及更高版本中已过时),称为语句功能。它声明了一个参数k
的函数。编译器识别您的唯一方法是指数组引用,而不是正确声明数组。编译器抱怨语句函数是意外的,因为声明必须放在可执行语句之前。
你在write
语句中暗示的循环是Fortran 90,所以不需要在21世纪坚持FORTRAN 77。
其他提示:
status='unknown'
是多余的,这是默认设置,只需将其删除即可。
您只需撰写r = 1
和x00 = 0
。