试着在FORTRAN中写一个简单的语句输出@@而不是数字。

时间:2013-09-02 20:02:49

标签: fortran fortran95

我有一个接受三个数字的程序,并计算这三个数字是否形成一个三角形。如果是,则打印三面和周边。但是,出于某种原因,在打印周边时,不是说Perimeter= 3(例如),而是说Perimeter= @@。知道是什么会导致这个吗?这是我第一次尝试使用Fortran,所以我有点失落。

PROGRAM G6P1
   IMPLICIT NONE
   REAL :: a, b, c, perimeter
   CHARACTER(LEN=30) :: Format, PerimeterFormat
   Format = "(3(2(A,X),F6.1,A,2X))"
   PerimeterFormat = "(' ',10A,X,F7.1)"
   PRINT *,'Please enter 3 numbers to form a triangle'
   READ *, a, b, c
   IF (a+b.gt.c) THEN
      IF (b+c.gt.a) THEN
         IF (a+c.gt.b) THEN
            PRINT *,'It is a triangle!'
            WRITE (*,Format) 'A','=',a,';','B','=',b,';','C','=',c,';'
            perimeter = A+B+C
            WRITE (*,PerimeterFormat) '','Perimeter=',perimeter

         ELSE
            PRINT *,'The sides do not form a triangle'
            WRITE (*,Format) 'A','=',a,';','B','=',b,';','C','=',c,';'
         ENDIF
      ELSE
         PRINT *,'The sides do not form a triangle'
         WRITE (*,Format) 'A','=',a,';','B','=',b,';','C','=',c,';'
      ENDIF
   ELSE
      PRINT *,'The sides do not form a triangle'
      WRITE (*,Format) 'A','=',a,';','B','=',b,';','C','=',c,';'
   ENDIF
END PROGRAM G6P1

1 个答案:

答案 0 :(得分:1)

这是你的格式声明:

PerimeterFormat = "(' ',10A,X,F7.1)"

对于带有Fortran输出的字符,您需要将的长度设置为指定符A,即:

PerimeterFormat = "(' ',A10,X,F7.1)"

更改它应该修复它(它使用gfortran 4.6.3为我做了)。