《程序设计基础教案122课时——选择结构多分支switch结构.docx》由会员分享,可在线阅读,更多相关《程序设计基础教案122课时——选择结构多分支switch结构.docx(7页珍藏版)》请在第一文库网上搜索。
1、教案序号12周次授课形式新授授课章节名称选择结构多分支switch选择结构教学目的多分支switch选择结构教学重点多分支switch选择结构教学难点学会使用多分支switch结构使用教具机房课外作业课后体会授课主要内容4.3.3switch语句SWitCh语句是多分支选择,也称为开关分支或开关语句。在上一节中介绍了如何用多分支if结构来解决多路选择问题,我们还可以利用本节将要介绍的switch语句来解决多路选择问题。switch语句的一般形式如下:switch(表达式)(case常量1:语句1或空;break;case常量2:语句2或空;break;case常量n;语句n或空;break;d
2、efau1t:语句n+1或空;执行SWitch开关语句时,将表达式的值逐个与case后面的常量进行比较,若与其中一个相等,则执行该常量下的语句,默认一直执行到语句体结束,除非遇有break转向语句跳出执行体,若不与任何一个常量相等,则执行defau1t后面的语句。说明:(1)SwitCh后面括弧中的表达式只能是整形、字符型。CaSe后面的常量表达式的类型必须与其匹配。(2)case语句仅起标号的作用,所以每一个case的常量表达式的值必须互不相同,否则就会出现矛盾的现象(对表达式的同一个值,有两种或多种执行方案)。(3)每个case或defau1t后面的语句可以是复合语句,但可以不使用“”括起
3、来。图4.14为switch语句的流程图。重要提示:(1) SWitCh语句可以没有break,也可以没有defau1t。(2) SWitCh语句找到入口后,执行完入口语句后,如果没有SWitCh语句,会将其后的所有case语句都执行一遍,直到整个switch结构结束;也就是说为找入口,判断工作只会进行一次,此后,不再进行任何判断工作,故此,break语句很重要。(3)每个case和defau1t语句的书写顺序不固定,但是建议按照一定的顺序排列书写,最后写defau1t语句。(4)Break语句的作用:break语句可以使程序立即跳出switch语句结构。假设没有break语句,找到入口(即和
4、表达式值相等的CaSe后的常量表达式)后,执行完该条CaSe语句后,会无条件地执行下一条case语句,此时不会进行检查相等比较,以及执行其后的所有case语句,直到遇到break语句,或者执行到switch语句中的最后一条语句。(5)多个case可以共用一组执行语句,如:caseA:caseB:caseC:COUt60end1;例4.14从键盘输入一个整型数,根据输入值的大小输出不同的值。#inc1udeintmain()(inttest;scanf(%c,&test);switch(test)变量为整型数的开关语句case 1: printf(z,%dnzz,test);break;退出开关
5、语句case 2: printf(z,%dn*,test+1);break;case 3: printf(z,%dnzz,test+2);break;defau1t:Printf(输入错误!n);returnO;)例4.15编写一个程序:将用户输入的分数按以下规则转换成相应的等级:分数:90100等级:优分数:8089等级:良分数:7079等级:中分数:6069等级:及格分数:059等级:不及格解此问题,先要构想解题的方法。分析题目所给的条件,可以发现等级共分为五个档次,而每个档次所对应的成绩(SCOre)的下限都是10的倍数。第一档次,成绩的下限为90分,等级为优;第二档次,成绩的下限为80
6、分,等级为良;第三档次,成绩的下限为70分,等级为中;第四档次,成绩的下限为60分,等级为及格;第五档次,成绩的下限为0,等级为不及格。以上各档次SCOre的下限分别为90,80,70,60,0,它们分别为10的9倍、8倍、7倍、6倍、。倍。以b代表以上倍数,可以得到关系如表41所示。表4TSCOre和b的关系表scoreb等级901009优80898良70797中60696及格0590不及格也就是说,当SCOre的值不足六个10分时,等级为不及格;当SCore的值满六个10分而未满七个10分时,等级为及格;当score的值满七个10分而未满八个10分时,等级为中;当score的值满八个10分
7、而未满九个10分时,等级为良;当score的值满九个10分时,等级为优。以n代表score的值满n个10分,可以将表41改写为表4-2所示。表4-2score和n的关系表scoren等级901009,10优80898良70797中60696及格0595,4,3,2,1,0不及格根据此表,只要找出n的值,就可以确定等级。n的值可以由下面的公式求出:n=(int)(score/10)说明:(int)(score/10)的作用是将(SCOre/10)的值进行强制类型转换,得到一个整型值。例如当SCorC=68时,n的值为6;SeOre的值为54时,n的值为5;score的值为89时,n的值为8。算法
8、N-S流程图如图4.15所示。输入score图4.15例4.15流程图据此算法写出源程序如下:ftinc1udeintmain()f1oatscore;Printf(请输入学生成绩:n);scanf(%f”,&score);switch(int)(score10)case10:case9:Printf(该生成绩是:优n);break;case8:Printf(“该生成绩是:良n);break;case7:Printf(该生成绩是:中n);break;case6:Printf(该生成绩是:及格n);break;case5:case4:case3:case2:case1:caseO:Printf(该生成绩是:不及格n);break;defau1t:Printf(输入错误!n);)returnO;)注意:(1)if-e1seif结构用于多种条件的多次判断的情况,而switch结构则用于一次条件判断多种结果的情况,二者可以互相补充,有时也可以等价使用。(2)switch结构可以用break结束,而if-e1seif结构不能使用break结束。