这个 fortran 程序有什么错误?
What is error in this fortran program?
我正在编写以下 Fortran 90 程序并使用 GNU Fortran 编译器进行编译。但是,我遇到了一些我无法解决的错误。有人可以解释我哪里出错了吗?
PROGRAM FILE1
IMPLICIT NONE
INTEGER:: status,a,b,c,i,j
a=5
b=6
c=1
REAL,ALLOCATABLE,DIMENSION (:,:) :: arr1
ALLOCATE (arr1(a,b))
DO i=1,a,1
DO j=1,b,1
arr1(i,j)=c
c=c+1
END DO
END DO
DO i=1,a,1
DO j=1,b,1
WRITE (*,100,ADVANCE=NO) arr1(i,j)
100 FORMAT (1X,I4.1)
END DO
WRITE (*,110)
110 FORMAT ('',/)
END DO
DEALLOCATE(arr1)
END PROGRAM
我遇到了几个错误,例如在声明 REAL,ALLOCATABLE,DIMENSION (:,:) :: arr1
Error: Unexpected data declaration statement at (1)
中。我检查了几个来源的语法,但没有运气。语句 WRITE (*,100,ADVANCE=NO) arr1(i,j)
也有错误。有人可以评论吗?
发布的代码有几个问题:
您需要在执行任何其他语句之前定义所有变量。
a=5
b=6
c=1
应该在最后一个变量定义之后:
REAL,ALLOCATABLE,DIMENSION (:,:) :: arr1
需要在WRITE
语句中引用NO
:
WRITE (*,100,ADVANCE="NO") arr1(i,j)
因为你写的是REAL
值,你需要给出一个浮点数格式,比如f
或者g
100 FORMAT (1X,f7.3)
工作代码为:
PROGRAM FILE1
IMPLICIT NONE
INTEGER:: status,a,b,c,i,j
REAL,ALLOCATABLE,DIMENSION (:,:) :: arr1
a=5
b=6
c=1
ALLOCATE (arr1(a,b))
DO i=1,a,1
DO j=1,b,1
arr1(i,j)=c
c=c+1
END DO
END DO
DO i=1,a,1
DO j=1,b,1
WRITE (*,100,ADVANCE="NO") arr1(i,j)
100 FORMAT (1X,f7.3)
END DO
WRITE (*,110)
110 FORMAT ('',/)
END DO
DEALLOCATE(arr1)
END PROGRAM
我正在编写以下 Fortran 90 程序并使用 GNU Fortran 编译器进行编译。但是,我遇到了一些我无法解决的错误。有人可以解释我哪里出错了吗?
PROGRAM FILE1
IMPLICIT NONE
INTEGER:: status,a,b,c,i,j
a=5
b=6
c=1
REAL,ALLOCATABLE,DIMENSION (:,:) :: arr1
ALLOCATE (arr1(a,b))
DO i=1,a,1
DO j=1,b,1
arr1(i,j)=c
c=c+1
END DO
END DO
DO i=1,a,1
DO j=1,b,1
WRITE (*,100,ADVANCE=NO) arr1(i,j)
100 FORMAT (1X,I4.1)
END DO
WRITE (*,110)
110 FORMAT ('',/)
END DO
DEALLOCATE(arr1)
END PROGRAM
我遇到了几个错误,例如在声明 REAL,ALLOCATABLE,DIMENSION (:,:) :: arr1
Error: Unexpected data declaration statement at (1)
中。我检查了几个来源的语法,但没有运气。语句 WRITE (*,100,ADVANCE=NO) arr1(i,j)
也有错误。有人可以评论吗?
发布的代码有几个问题:
您需要在执行任何其他语句之前定义所有变量。
a=5 b=6 c=1
应该在最后一个变量定义之后:
REAL,ALLOCATABLE,DIMENSION (:,:) :: arr1
需要在
WRITE
语句中引用NO
:WRITE (*,100,ADVANCE="NO") arr1(i,j)
因为你写的是
REAL
值,你需要给出一个浮点数格式,比如f
或者g
100 FORMAT (1X,f7.3)
工作代码为:
PROGRAM FILE1
IMPLICIT NONE
INTEGER:: status,a,b,c,i,j
REAL,ALLOCATABLE,DIMENSION (:,:) :: arr1
a=5
b=6
c=1
ALLOCATE (arr1(a,b))
DO i=1,a,1
DO j=1,b,1
arr1(i,j)=c
c=c+1
END DO
END DO
DO i=1,a,1
DO j=1,b,1
WRITE (*,100,ADVANCE="NO") arr1(i,j)
100 FORMAT (1X,f7.3)
END DO
WRITE (*,110)
110 FORMAT ('',/)
END DO
DEALLOCATE(arr1)
END PROGRAM