
4.2.3 if…else if…形式
实际应用时,需要多重判断,如下面的学生成绩等级判定的例子。
【例4.3】根据学生分数,评定成绩的等级。
编写程序,要求输入一个学生的考试成绩(0~100),输出其分数和对应的等级。
学生成绩共分5个等级:小于60分的为E;60~69分的为D;70~79分的为C;80~89分的为B;90分以上的为A。要求:输入任意一个学生的考试成绩(0~100),输出其分数和对应的等级。
算法分析:在此问题中只需要定义一个整型变量用来存放学生成绩即可,用普通字符A,B,C,D,E表示等级并输出。本题需要用选择多分支if结构解决,其算法的流程图如图4-5所示。

图4-5 学习成绩问题算法的流程图
程序代码如下:

当用户在运行程序并根据程序提示从键盘输入不同数据时,程序的运行结果如下:

扫一扫 看视频

注意:在if…else if…形式的if语句中,后一个表达式的执行是在前面表达式不成立的基础上进行的,因此后面条件的描述中实际上已经包含对前面条件的否定,如上例中子句else if(f<70)中的f<70相当于f>=60并且f<70。
相关知识3
多分支if…else if…形式是解决多个分支选择时常用的形式,其语法格式如下:

其含义为:在多个用来选择的条件表达式中,首先计算表达式1的值,如果表达式1的值为真,则执行分支语句1,否则,再计算表达式2的值;如果表达式2为真,则执行分支语句2,……,如果所有if后的表达式都不为真,则执行分支语句n。
if…else if…形式的程序流程图如图4-6所示。

图4-6 if…else if…形式流程图
有关if语句使用的几点说明:
①if语句中的条件表达式必须用()括起来,并且在括号外部不能加分号。
②if或else子句后面的执行语句均有分号。
③else是if语句的子句,必须与if搭配使用,不可以单独使用。
④当if或else子句后是多个执行语句构成的语句组时(复合语句),必须用{}括起来,否则各子句均只作用于其后第一个分号处。例如:

⑤if或else子句后只接单个分号时,应将其作为空语句处理。
课后讨论
①三种形式的if语句的含义和使用方法。
②嵌套if语句与多分支的if语句有何区别?举例说明在实际编程过程中这两种选择语句能否用来解决相同的问题。