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

021.blockIf_多分支判断

2026年6月18日入门级

多分支判断用于表达多分支选择:程序从上到下检查条件,只执行第一个成立的分支,最后的else处理剩余情况。本文记作(Delta > 0)Delta > 0

多分支判断用于表达几个互斥情况。程序先检查if条件;若不成立,再依次检查else if条件;若前面都不成立,才进入else分支。

分支顺序会影响结果。越具体、越优先的条件通常应放在前面,兜底条件放在else中,这样读者能按源码顺序复原程序的决策过程。

  • 语法位置:if后面放条件表达式,then表示受控语句块开始。
  • 条件类型:条件表达式的结果应为logical,即.true..false.
  • 执行规则:同一次判断中,程序只沿着满足条件的路径继续。

本文代码

! block if、else if、else用于多分支判断。
program blockIfDemo
  implicit none
  real :: discriminant
  discriminant=9.0
  print "(A)","多分支if:"
  print "(A,F6.2)","判别式=",discriminant
  if (discriminant>0.0) then
    print "(A)","方程有两个不等实数根。"
  else if (discriminant==0.0) then
    print "(A)","方程有两个相等实数根。"
  else
    print "(A)","方程有一对共轭复数根。"
  end if
end program blockIfDemo

编译运行

(base) hong@hongdeMacBook-Pro 021.blockIf % gfortran exampleBlockIf.f90
(base) hong@hongdeMacBook-Pro 021.blockIf % ./a.out
多分支if:
判别式=  9.00
方程有两个不等实数根。

结果分析

本例把discriminant设为9.0。程序先检查discriminant>0.0,该条件为真,因此输出“方程有两个不等实数根”。

后面的else if (discriminant==0.0) 和else并不是继续执行的普通语句,而是同一个多分支结构的其他备选路径。第一个条件已经成立后,本次block if结构就结束选择,不再进入后续分支。

常见注意

  • 不要把if条件写成普通数值表达式;Fortran条件位置需要logical结果。
  • 多个else if分支有先后顺序,前面条件成立后,后面的分支不会再检查。
  • end if的作用是结束整个判断结构,不是结束某一条print语句。

知识点总结

  • 条件表达式的结果必须是logical,即真或假。
  • else if可以连续出现,用来表达多个互斥条件。
  • else是兜底分支,只有前面的ifelse if都不成立时才执行。

发表回复

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