1

我有一个程序,它接受三个数字并计算这三个数字是否形成一个三角形。如果是这样,它会打印三个边和周长。然而,由于某种原因,在打印周长时,它没有说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
4

1 回答 1

1

这是您的格式声明:

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

对于带有 Fortran 输出的字符,您需要将长度放在说明符之后A,即:

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

改变它应该可以解决它(它对我来说是 gfortran 4.6.3)。

于 2013-09-02T20:29:28.530 回答