fortran fortran中文资料网
手气不错
Article

016.arithmeticOperators算术运算符

2026年5月21日入门级

算术运算符用于对数值进行基本数学计算,本文在狭义上讲四则运算符(加减乘除)与乘方(幂运算符)。此外fortran还提供许多数值计算相关的内置函数,如sqrt()、abs()、mod()、modulo() 等。

运算符

符号意义fortran语句示例输出
+加法运算符print *,4+26
减法运算符print *,4-22
*乘法运算符print *,4*28
/除法运算符print *,4/22
**乘方运算符print *,4**216

本文我举例一元二次方程求解的计算,在此之前重申一些基础概念,便于在fortran编程中对应逻辑。

  • 一元二次方程是等式方程,只有1个未知项,未知项最高次数为2。
  • 一般形式为ax2+bx+c=0ax^2 + bx + c = 0,满足1个未知项也满足未知项最高次数为2。
  • 判别式为Δ=b24ac\Delta = b^2 – 4ac
    • Δ>0\Delta \gt 0,该方程有两个不等的实数根。
    • Δ=0\Delta = 0,该方程有两个相等的实数根。
    • Δ<0\Delta \lt 0,该方程有一对共轭复数根。
    • 本文演示实数解过程,其中判别式Δ0\Delta≥0a0a≠0,感兴趣的还可写韦达定理语句验算。
  • 文中使用了sqrt(),不作详细介绍。

本文代码

! 公式:ax^2+bx+c=0,根为x=(-b±sqrt(b^2-4ac))/(2a)。
! 代码:用+ - * / **写出判别式和两个根。
program arithmeticOperatorsDemo
  implicit none
  real :: a
  real :: b
  real :: c
  real :: discriminant
  real :: root1
  real :: root2

  print "(A)","算术运算符与幂运算符:"
  print "(A)","公式:ax^2+bx+c=0,x=(-b±sqrt(b^2-4ac))/(2a)"
  print "(A)","请输入a、b、c,三个数之间用空格分隔:"
  read *,a,b,c
  discriminant=b**2-4.0*a*c
  root1=(-b+sqrt(discriminant))/(2.0*a)
  root2=(-b-sqrt(discriminant))/(2.0*a)
  print "(A,F8.4)","a=",a
  print "(A,F8.4)","b=",b
  print "(A,F8.4)","c=",c
  print "(A,F8.4)","判别式=",discriminant
  print "(A,F8.4)","root1=",root1
  print "(A,F8.4)","root2=",root2
end program arithmeticOperatorsDemo

定义

变量意义(全都是实数类型)
a二次项系数
b一次项系数
c常数项
discriminant判别式
root1解1
root2解2

关键表达式

  discriminant=b**2-4.0*a*c ! b^2-4ac的判别式,其中**是幂运算,*是乘法,-是减法。最终输出为实数,通过瞪眼法判断判别式>0 =0 <0
  root1=(-b+sqrt(discriminant))/(2.0*a) ! 按公式计算x_1
  root2=(-b-sqrt(discriminant))/(2.0*a) ! 按公式计算x_2

编译运行

(base) hong@hongdeMacBook-Pro 016.arithmeticOperators % gfortran exampleArithmeticOperators.f90
(base) hong@hongdeMacBook-Pro 016.arithmeticOperators % ./a.out                                
算术运算符与幂运算符:
公式:ax^2+bx+c=0,x=(-b±sqrt(b^2-4ac))/(2a)
请输入a、b、c,三个数之间用空格分隔:
2 8 8
a=  2.0000
b=  8.0000
c=  8.0000
判别式=  0.0000
root1= -2.0000
root2= -2.0000
(base) hong@hongdeMacBook-Pro 016.arithmeticOperators % ./a.out                                
算术运算符与幂运算符:
公式:ax^2+bx+c=0,x=(-b±sqrt(b^2-4ac))/(2a)
请输入a、b、c,三个数之间用空格分隔:
1 5 4
a=  1.0000
b=  5.0000
c=  4.0000
判别式=  9.0000
root1= -1.0000
root2= -4.0000
(base) hong@hongdeMacBook-Pro 016.arithmeticOperators % 

结果分析

关于前文《015.basicInputAndOutput_基础输入输出》讲到的输入合法判断,在本例中非常适合用作对判别式Δ<0\Delta<0的判断,但为了兼顾知识密度暂且按下不表。

  • 第一次运行
    • 输入2,8,8代表a,b,c。
    • 判别式=0,表示有两个相等的实数根。
    • x1=2,x2=2,2(2)2+8(2)+8=0x_1=-2,\quad x_2=-2,\quad 2*(-2)^2+8*(-2)+8=0
    • 正确
  • 第二次运行
    • 输入1,5,4
    • 判别式=9>0,表示有两个不等的实数根。
    • x1=1,x2=4,1(1)2+5(1)+4=0,1(4)2+5(4)+4=0x_1=-1,\quad x_2=-4,\quad 1*(-1)^2+5*(-1)+4=0,\quad 1*(-4)^2+5*(-4)+4=0
    • 正确

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注