1、多分支语句多分支语句_ switch_ switch结构的应用结构的应用第三章1IF的两路选择结构的两路选择结构(if-else)及及多路选择结构多路选择结构(if-else-if)的的应用应用上讲主要内容上讲主要内容2本讲内容本讲内容多路选择结构的另一种实现方法多路选择结构的另一种实现方法 switch语句的应用语句的应用?3嵌套嵌套if-else-if语句语句的的应用应用多路选择结构多路选择结构程序设计程序设计的实现?的实现?switch语语句的应用句的应用途径途径途径途径4switch语句语句语句形式:语句形式:每个常量表达式的值(整每个常量表达式的值(整数或字符)不能相同,次数或字符)
2、不能相同,次序不影响执行结果序不影响执行结果可以是整型、字符型、枚举型可以是整型、字符型、枚举型 执行过程执行过程 :先先计算算switchswitch语句中表达式的句中表达式的值,再依次与再依次与1 1到到n n个常量表达式个常量表达式的的值比比较,当表达式的,当表达式的值与与某个某个casecase后的常量表达式的后的常量表达式的值相等相等时,则执行行该casecase后后的的语句,然后句,然后执行行breakbreak语句跳出句跳出switchswitch结构。如果所构。如果所有常量表达式的有常量表达式的值都不等于都不等于switchswitch中表达式的中表达式的值,则执行行defau
3、ltdefault后的后的语句。句。5 switch语句的执行过程是:1.首先计算switch后面圆括号内表达式的值,2.若此值等于某个case后面的常量表达式的值,则转向该case后面的语句去执行;3.若表达式的值不等于任何case后面的常量表达式的值,则转向default后面的语句去执行,然后转到switch语句后面的语句去执行。6 main()main()int a;int a;printf(input integer number:);printf(input integer number:);scanf(%d,&a);scanf(%d,&a);switch(a)case 1:prin
4、tf(Mondayn);switch(a)case 1:printf(Mondayn);case 2:printf(Tuesdayn);case 2:printf(Tuesdayn);case 3:printf(Wednesdayn);case 3:printf(Wednesdayn);case 4:printf(Thursdayn);case 4:printf(Thursdayn);case 5:printf(Fridayn);case 5:printf(Fridayn);case 6:printf(Saturdayn);case 6:printf(Saturdayn);case 7:pri
5、ntf(Sundayn);case 7:printf(Sundayn);default:printf(errorn);default:printf(errorn);7Switch应用的应用的引入举例引入举例引引例例-1:从从键键盘盘上上输输入入年年号号,判判断断这这一一年年是是否否为为闰闰年年,若若是是闰闰年年则则输输出出“Y Y”,否否则输出则输出“N N”。闰闰年年的的判判断断依依据据是是:若若某某年年号号能能被被4 4整整除除但但不不能能被被100100整整除除,则则这这一一年年是是闰闰年年;或或者者这这一一年年能能被被400400整整除也是闰年。除也是闰年。判断闰年的逻辑表达式为:判断
6、闰年的逻辑表达式为:year%4=0&year%100!=0)|year%400=0year%4=0&year%100!=0)|year%400=0程序程序main()main()int year,p;int year,p;scanf(%d,&year);scanf(%d,&year);if(year%4=0&year%100!=0)|year%400=0)if(year%4=0&year%100!=0)|year%400=0)p=1;p=1;else else p=0;p=0;if(p)if(p)printf(Y n);printf(Y n);else printf(N n);else pr
7、intf(N n);Switch(p)case 1:printf(Y n);Case 0:printf(N n);8使用使用switch语句应注意语句应注意:(1)各常量表达式的值不可相同。)各常量表达式的值不可相同。(2)case 后可有多个语句,不用后可有多个语句,不用 括起。括起。(3)常量表达式仅是一个语句标号。所以)常量表达式仅是一个语句标号。所以,在执行在执行在完某个在完某个case后的语句后,将自动转到该语句后面的语句去执行,后的语句后,将自动转到该语句后面的语句去执行,直到遇到直到遇到switch语句的右花括号或语句的右花括号或“break”语句为此,语句为此,而不再进行条件判
8、断。而不再进行条件判断。(4)各)各case及及default子句的顺序可随意。子句的顺序可随意。(5)每个分支执行后,可利用)每个分支执行后,可利用break语句语句跳出。跳出。9举例举例:从键盘输入一个操作符使整数从键盘输入一个操作符使整数x与与y进行相应的操作。进行相应的操作。并输出操作结果并输出操作结果.#include“stdio.h”main()int x=10,y=5,z;char op;scanf(“%c”,&op);switch(op)case+:z=x+y;braek;case-:z=x-y;braek;case*:z=x*y;braek;case/:z=x/y;braek
9、;default:printf(“Operater Error!”);printf(%d%c%d=%d”,x,op,y,z);10v 练习练习1:v判断输入的字符是数字判断输入的字符是数字,空格还是其空格还是其他字符他字符?11int main(void)int blank,digit,i,other;char ch;blank=digit=other=0;printf(Enter 10 characters:);for(i=1;i=90)grade=A;else if(score=80)grade=B;else if(score=70)grade=C;else if(score=60)gra
10、de=D;else grade=E;16 参参 考考:要求按照考试成绩的等级输出百分制分数段,用要求按照考试成绩的等级输出百分制分数段,用switchswitch语句实现:语句实现:()()(90););(8089););(707););D(606););E(););(););17例例 运输公司对用户计算运费。路程()越远,每公里运费越低。标准如下:没有折扣 折扣 折扣 折扣 折扣 折扣设每公里每吨货物的基本运费为,货物重为,距离为,折扣为,则总运费的计算公式为:*()18分析折扣变化的规律性:折扣的“变化点”都是的倍数 在横轴上加一种坐标,c的值为s/250。c代表的倍数。,无折扣;,折扣;
11、,;,;,;,。19#include#include void main()void main()int c,s;int c,s;float p,w,d,f;float p,w,d,f;scanf(%f,%f,%d,&p,&w,&s);scanf(%f,%f,%d,&p,&w,&s);if(s=3000)c=12;if(s=3000)c=12;else c=s/250;else c=s/250;switch(c)switch(c)case 0:d=0;break;case 0:d=0;break;case 1:d=2;break;case 1:d=2;break;case 2:case 3:d
12、=5;break case 2:case 3:d=5;break;case 4:case 5:case 6:case 7:d=8;break;case 4:case 5:case 6:case 7:d=8;break;case 8:case 9:case 10:case 8:case 9:case 10:case 11:d=10;break;case 11:d=10;break;case 12:d=15;break;case 12:d=15;break;f=p*w*s*(1-d/100.0);f=p*w*s*(1-d/100.0);printf(freight=%15.4fn,f);printf(freight=%15.4fn,f);20本讲作业本讲作业v给出一个百分制成绩给出一个百分制成绩,要求输出成绩要求输出成绩等级等级:A A,B B,C C,D D,E E.v 用用witchwitch语句编序实现语句编序实现.21
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1