65 第4章 选择结构 在第三章介绍了最简单的 FORTRAN 程序,在程序中语句执行的顺序是按照语句书写的顺序决定的,写在前面的语句就先执行,写在后面的语句就后执行,这种执行语句的过程叫顺序执行。导致顺序执行的语句结构叫顺序结构。只包含顺序结构的程序像流水账一样,只能解决简单的、顺序性的问题。有些问题仅用顺序结构是不能解决的,例如,计算税款问题。 【例 4.1】 当月收入超过 800 元时,超过部分按 5%纳税,要求写程序完成输入月收入 INCOME,计算应交税款 TAX。 分析:根据题意,得到税款计算公式: 8008008000INCOMEINCOMEINCOMETAX 根据上述计算公式画出计算税款的流程图如图 4.1: 图4.1 计算税款的算法流程图 从流程图中可以看见,问题求解的过程不再是顺序性的了,需要对输入的月收入 INCOME 进行判断再决定计算其应该交纳的税款,即问题求解需要根据输入数据进行选择、判断,出现了选择(分支)结构,为了描述选择结构,FORTRAN 语言也提供了对应的能描述选择结构的语句。 4.1 逻辑IF语句 逻辑IF 语句格式: IF (逻辑表达式) 语句 逻辑IF 语句功能:求出逻辑表达式的值,如果为“真”,则执行<语句>后再执行后续语句,否则直接执行后续语句。其功能也可以用图 4.2 所示的流程图描述。 逻辑IF 语句说明: (1)逻辑IF 语句描述了最简单的选择结构,只提供<逻辑表达式>为真时的操作,并且只能有一个动作,<逻辑表达式>为假时未提供操作。 INCOME>800 N Y 输入 INCOME 和 TAX=0 开始 TAX=(INCOME-800)*0.05 输出 TAX 结束 66 (2)逻辑IF 语句又称“行IF 语句”。 图4.2 逻辑IF结构示意图 利用逻辑IF 语句可以将图4.1 翻译成程序: REAL INCOME,TAX READ *,INCOME TAX=0 IF(INCOME.GT.800)TAX=(INCOME-800)*0.05 PRINT *,‘月收入=’,INCOME,‘应交税款为=’,TAX END 由于只有月收入超过了 800 元才会有税款的计算问题,程序中用逻辑IF 语句对应地描述了此分支关系,为了保证低于 800 元时 TAX 也有相应的值,所以在判断月收入情况之前 TAX 被初始化为 0。 如果〈逻辑表达式〉为真时要做的操作有两个以上,则可以利用下面介绍的“块 IF结构”进行描述。 4.2 块IF结构 块 IF 结构是由多条语句组合而成的可以描述复杂选择结构的语句组,可以有下面几种格式。 4.2.1 单分支的块IF结构 格式: IF (逻...