2.3 分支结构
分支结构又称选择结构,它根据给定条件的真假,决定程序的执行路线。根据程序执行的路线或分支的不同,分支结构又分为单分支、双分支和多分支3种类型。例如,输入学生的成绩,需要统计及格学生的人数、统计及格和不及格学生的人数、统计不同分数段学生的人数,这里就涉及单分支、双分支和多分支的分支结构。
2.3.1 分支语句
1.单分支if语句
if语句由4部分组成:关键字if、条件表达式、冒号和表达式结果为真(非零、非空)时要执行的语句体。if语句的语法格式如下:
单分支if语句的流程图如图2-2所示。
单分支if语句先判断条件表达式的值是真还是假。如果条件表达式的值为真(非零、非空),则执行语句体中的操作;如果条件表达式的值为假(零、空),则不执行语句体中的操作。语句体既可以包含多条语句,也可以只由一条语句组成。
2.双分支if-else语句
双分支if-else语句的语法格式如下:
双分支if-else语句的流程图如图2-3所示。
图2-2 单分支if语句流程图
图2-3 双分支if-else语句流程图
双分支if-else语句先判断条件表达式值的真假。如果条件表达式的值为真,则执行语句体1中的操作;如果条件表达式的值为假,则执行语句体2中的操作。语句块1和语句块2既可以包含多条语句,也可以只由一条语句组成。
3.多分支if-elif-else语句
多分支if-elif-else语句的语法格式如下:
多分支if-elif-else语句的流程图如图2-4所示。
多分支if-elif-else语句先判断条件表达式1的结果为真,则执行语句块1中的操作;如果条件表达式1的结果为假,则继续判断条件表达式2;如果条件表达式2的结果为真,则执行语句块2的操作;如果条件表达式2的结果为假,则继续判断表达式3;……从上到下依次判断条件表达式,找到第一个为真的条件表达式,就执行该条件表达式下的语句块,不再判断剩余的条件表达式。如果所有条件表达式均为假,则执行else后面的语句块n+1;如果没有else分支,则不执行任何操作。任何一个分支后面的语句块执行后,都直接结束该分支语句。
图2-4 多分支if-elif-else语句流程图
2.3.2 分支结构程序举例
【例2-3】编写程序,实现从键盘输入两个整数a和b,按从大到小的顺序输出。
分析:输入a和b,如果a<b,则交换a和b,否则不交换,最后输出a和b。
参考程序如下:
程序运行结果如下:
【例2-4】编写程序,实现从键盘输入年份year,判断该年份是否为闰年,若是闰年,则输出“year年是闰年”,否则输出“year年不是闰年”,其中,year用输入的年份代替。判断闰年的方法:如果年份year能被400整除,或者能被4整除但不能被100整除,则该年份为闰年。
分析:根据闰年判断条件,若满足year%400==0或者year%4==0 and year%100 !=0则为闰年,否则不是闰年。
参考程序如下:
运行3次程序,分别输入年份2000、2013和2020,程序运行结果如下。
程序第一次运行结果:
程序第二次运行结果:
程序第三次运行结果:
【例2-5】编写程序,从键盘输入学生成绩score,按输入成绩输出其对应的等级:score≥90为优,80≤score<90为良,70≤score<80为中等,60≤score<70为及格,score<60为不及格。
参考程序如下:
运行3次程序,分别输入成绩90、79和67,程序运行结果如下。
程序第一次运行结果:
程序第二次运行结果:
程序第三次运行结果: