我正在尝试编写一个程序来求解一个二次方程。如果 (B**B-4*A*C) 的值为 0 或负数,它应该立即写出“方程的根是复数”,但是如果是肯定的,它应该评估。看来我的逻辑是错误的,因为无论我为 A、B 和 C 给出什么值,我都会不断得到“等式的根很复杂”。请参阅下面的代码和结果。谢谢。
PROGRAM QUADEQN
INTEGER A,B,C
REAL D,X,Y,Q
D=(B**2-4*A*C)
Q=SQRT(D)
READ(*,5)A
READ(*,6)B
READ(*,7)C
IF(B**2-4*A*C)10,15,20
X=(-B+Q)/(2*A)
Y=(-B-Q)/(2*A)
20 WRITE(*,25)X,Y
5 FORMAT(I2)
6 FORMAT(I2)
7 FORMAT(I2)
10 WRITE(*,*)'THE ROOTS OF THE QUADRATIC EQUATION IS COMPLEX'
15 WRITE(*,*)'THE ROOTS OF THE QUADRATIC EQUATION IS COMPLEX'
25 FORMAT(/,'THE ROOTS OF THE EQN ARE',1X,F8.4,'AND',1X,F8.4)
STOP
END
结果
D:\Postgraduate\Programming\FORTRAN>gfortran quad.f
D:\Postgraduate\Programming\FORTRAN>a.exe 8 3 2 二次方程的根很复杂 二次方程的根很复杂
D:\研究生\编程\FORTRAN>