




已阅读5页,还剩33页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
3.1单分支选择结构if语句3.2双分支选择结构ifelse,以及条件运算与条件表达式3.3多分支选择结构程序设计,第三章选择结构流程及应用,3.3多分支选择结构程序设计,引子:例如我们要解决这样一个问题:输入一个整数,根据输入值,输出数的范围属于大于0、小于0还是等于0。x的范围实际上是三种情况,我们先用ifelse解决这个问题:,if(x=0)printf(x=0);elseif(x0);,if(表达式1)语句1;elseif(表达式2)语句2;elseif(表达式3)语句3;.else语句n;,1、else-if语句的格式,例:if(salary1000)index=0.4;elseif(salary800)index=0.3;elseif(salary600)index=0.2;elseif(salary400)index=0.1;elseindex=0;,else-if流程:,功能:按表达式的顺序进行判断,最早值为真的表达式将引起执行相应语句i,并且不再继续判断其它条件。若全部表达式为假,则执行语句n。,引例用else-if来实现如下:if(x0)printf(x0);elseif(x0)printf(x=0,【例2】编程实现给一百分制成绩,要求输出成绩等级A、B、C、D、E。90分以上为A等,89-80分为B等,79-70分为C等,69-60分为D等,60分以下为E等。,【源程序】main()intgrade;printf(inputthegrade:);scanf(%d,从键盘输入一个自变量x,求分段函数y=f(x)的值,f(x)的表达式如下:,练习,练习,判断下面程序的运行结果:#includemain()intx=1,y=2,z=0,i=3;if(ix)z=1;elseif(iy)z=2;elsez=3;printf(“z=%d”,z);,3、if语句的嵌套,【例3】输入两数并判断其大小关系,#includemain()intx,y;printf(Enterintegerx,y:);scanf(%d,%d,运行:Enterintegerx,y:12,23XYEnterintegerx,y:12,12X=Y,ifelse配对原则:,缺省时,else总是和它上面离它最近的未配对的if配对。,例:if(a=b)if(b=c)printf(“a=b=c”);elseprintf(“a!=b”);,修改:if(a=b)if(b=c)printf(“a=b=c”);elseprintf(“a!=b”);,实现ifelse正确配对方法:加,例考虑下面程序输出结果:main()intx=100,a=10,b=20;intv1=5,v2=0;if(ab)if(b!=15)if(!v1)x=1;elseif(v2)x=10;x=-1;printf(“%d”,x);,结果:-1,输入一个数,若该数为正数并且是偶数,打印“iseven”,否则打印“isodd”。输入一个用整数表示的年份,输出显示该年份是否是闰年。判断一个整数表示的年份是不是闰年的规则有一下两点,满足其中之一就是闰年:(1)能被400整除;(2)能被4整除,但不能被100整除要求:(1)要求用if形式嵌套if-else编写(2)用else-if和if-else编写,练习,default不是1n的情况(位置不一定在最后)。,4、多分支-switch语句,switch语句属于多路分支结构。switch的常用形式:switch(条件表达式)case常量表达式1:语句组1;break;case常量表达式2:语句组2;break;case常量表达式3:语句组3;break;case常量表达式n:语句组n;break;default语句n+1;break;/*可缺省*/,c1cn常量(整数、字符、常量表达式如3+4,不含变量或函数),switch(score)case5:printf(“Verygood!”);case4:printf(“Good!”);case3:printf(“Pass!”);case2:printf(“Fail!”);default:printf(“dataerror!”);,switch语句执行流程:,图去掉break语句的switch结构的执行过程,功能:1、首先计算条件表达式的值,然后找到与其相等的常量表达式的case分支去执行语句,然后退出switch语句。2、若没有与条件表达式相等的常量表达式,则执行default语句后面的语句n+1。3、若语句i后不含break,继续执行下一条语句i+1,不用判断常量表达式。4、default语句可省略。,注意:(1)case分支中的语句i后面的break语句一般情况下不要省略,因为没有break语句,程序不能跳出switch语句,而是执行下一条case语句后面的语句,直到遇到break才能终止switch的执行。switch(s)case+:a=a+b;case-:a=a*b;break;case*:a=a-b;break;case/:a=a/b;break,(2)条件表达式和常量表达式的数据类型必须一致,常量表达式中不能包含变量。实际上,switch语句的重点就在于如何构造条件表达式,并让它的值正好能够匹配n个常量表达式的值。(3)多个case可以共同使用相同的语句i。switch(s)case1:case2:case4:case5:printf(%d,x);break;,(4)每个常量表达式应不相等,因为它类似于语句标号的作用,case部分与default的顺序可自由书写。若每个case后包含break,则顺序不影响最后的执行结果。反之,则有可能影响执行结果s=2;switch(s)case1:printf(1);break;case2:printf(2);break;case3:printf(3);break;结果?,switch(s)case1:printf(1);case2:printf(2);case3:printf(3);结果?,(5)语句i可以用复合语句,而且允许省略花括号。(6)switch语句可以嵌套,即在一个switch语句中嵌套另一个switch语句,但是要注意break只能跳出最内层的switch语句。,例main()intx=1,y=0,a=0,b=0;switch(x)case1:switch(y)case0:a+;break;case1:b+;break;case2:a+;b+;break;case3:a+;b+;printf(“na=%d,b=%d”,a,b);,运行结果:a=2,b=1,【例3】用switch完成:根据输入的百分制按五分制的成绩输出。,#includestdio.hmain()intscore,s,sum;chargrade;printf(pleaseinputscore:);scanf(%d,#includemain()intc;printf(Entermornorhorother:);c=getchar();switch(c)casem:printf(nGoodmorning!n);break;casen:printf(nGoodnight!n);break;caseh:printf(nHello!n);break;default:printf(n?n);break;,例4根据输入字母输出字符串,例五:switch语句,main()chars;scanf(“%c”,输入“c”,求输出结果。,结果:606960错误输入,?!,例六:switch语句示例,main()chars;scanf(“%c”,我的成绩应该是6069!,什么!“60”?“错误输入”?怎么会这样?!,不好意思,我属于C级!,运行结果:606960错误输入,例七:switch语句示例,解决方法break语句:main()chars;scanf(“%c”,这才差不多!,break!,运行结果:6069,例八:switch语句示例,main()intx=1,y=0,a=0,b=0;switch(x)case1:switch(y)case0:a+;break;case1:b+;break;case2:a+;b+;break;case3:a+;b+;printf(“a=%d,b=%dn”,a,b);,说明1、每个case常量表达式的值必须互不相同,否则会出现互相矛盾的结果。2、允许多个case共用一个执行语句。,求程序运行结果。,结果:a=2,b=1。,如果x=2?,结果:a=1,b=1,如果x=3?,结果:a=1,b=1,练习,练一练将星期一、星期二.星期六、星期日依次编号为1,2,3.6,7,编写一程序从键盘输入星期的序号,则输出其对应的英文。比如,输入6,则输出“Saturday”。,附录,求解闰年的程序:,main()inty
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论