4.3从if-else到开关语句——错误实例分析(28分)
多分支选择控制与开关语句
If语句主要实现单分支选择控制结构
而if-else主要用于实现双分支选择控制结构
而else-if级联形式用于实现多分支选择控制结构
下面看一个实例,将百分之成绩转化为五分制成绩
转换公式是这样的,首先画出它的程序流程图
第一步就是输入百分制的成绩score
然后根据score的取值范围来确定它的五分制成绩是什么?
如果score是在大于等于90小于等于100之间的话;
那么就让gread这个五分制的成绩为A;
否则的话要判断sore是否在80和90之间;
如果是的话,那么就让股份制的成绩为B;
在否则的话还要判断score是否大于等于70小于80.
如果是的话,就让五分制为C;
如果成绩不在0到100之间的话,我们就认为,用户输入错误,所以要输出一个错误提示信息。
否则的话,就输出前面的5分制成绩,然后成绩结束。那么在这个程序当中,为什么要增加这样的一个判断呢?why?为什么嘛要判断用户输入的数据是大于零小于100的。因为一个百分制的成绩,如果小于零或者大于100;那么我们就认为用户输入的百分制成绩输入错误了,通过在程序当中,增加对用户输入的错误数据的处理,使得成绩对用户输入的错误数据,具有容错能力。像这样的程序,我们就认为,具有一定的健壮性,因此在程序中,对用户的输入进行合法性检验,增加这样的一个处理步骤,对于提高程序的健壮性是非常重要的。
下面这样的一个流程图呢,如何用C语言程序来实现。
通过分析这个流程图我们发现,前面的五个分支结构,都是单分支的选择结构,只有最后一个是双分支选择控制结构。
单分支选择控制结构我们用if语句来实现,而双分支选择结构我们用if-else来实现。在实现这个程序的时候,首先要定义两个变量,一个进入百分制成绩的整型变量score ;
int score
另外一个是记录五分制成绩的字符型变量grade
然后向屏幕输出一个提示信息,提示用户输入百分制成绩score
printf(“Please input socre;”)
接下来用scanf函数调用语句,接收用户从键盘输入的百分制成绩score的值。
scanf("%d,&score");
在接下来,判断score是否在90到100之间,如果是的话,那么就让gread这个字符型变量的值为A
if(score>= 90 && score <=100)
grade =‘A’;接下来,还要判断score,是否在80和90之间,如果是的话,就让gread为B,在否则的话,判断score是否是70到80之间,如果是的话,就让gread为C;
最后这个是一个双分支选择结构,用if-else来实现;
当score的值<0,或者score>100的时候,输出input error这样的错误提示信息,否则的话,就输出前面计算出来的
grade,这个字符型变量的值。也就是五分制成绩