9-双分支选择结构程序设计.ppt

上传人:本田雅阁 文档编号:2151993 上传时间:2019-02-23 格式:PPT 页数:38 大小:809.01KB
返回 下载 相关 举报
9-双分支选择结构程序设计.ppt_第1页
第1页 / 共38页
9-双分支选择结构程序设计.ppt_第2页
第2页 / 共38页
9-双分支选择结构程序设计.ppt_第3页
第3页 / 共38页
亲,该文档总共38页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《9-双分支选择结构程序设计.ppt》由会员分享,可在线阅读,更多相关《9-双分支选择结构程序设计.ppt(38页珍藏版)》请在三一文库上搜索。

1、3.1 单分支选择结构if语句 3.2 双分支选择结构ifelse,以及条件运算与 条件表达式 3.3 多分支选择结构程序设计,第三章 选择结构流程及应用,3.3 多分支选择结构程序设计,引子: 例如我们要解决这样一个问题:输入一个整数,根据输入值,输出数的范围属于大于0、小于0还是等于0。 x的范围实际上是三种情况,我们先用if else解决这个问题:,if (x=0) printf (“x=0“); else if (x0“); ,if (表达式1 ) 语句1; else if ( 表达式2 ) 语句2; else if (表达式3 ) 语句3; . else 语句n;,1、else-if

2、 语句的格式,例:if (salary1000) index=0.4; else if (salary800) index=0.3; else if (salary600) index=0.2; else if (salary400) index=0.1; else index=0;,else-if 流程:,功能:按表达式的顺序进行判断,最早值为真的表达式将引起执行相应语句i,并且不再继续判断其它条件。若全部表达式为假,则执行语句n。,引例用else-if来实现如下: if (x0) printf (“ x0“); else if (x0) printf(“x0“); else printf(

3、“x=0“);,2、else-if 语句的运行规律,If(表达式1),else,哦,否定表达式1以后,原来还剩这么多条件啊!,If(表达式2),else,否定表达式1和2以后,原来还有这么多条件啊!,If(表达式3),else,注意:,If和else 是关键字,是固定的,不能丢掉! 最开始的是If后面紧跟括号(),然后就是else-if,直到最后是一个else。 else-if语句中,else与if语句之间有空格,一般取一个。 每一个else if后面跟的除了单条语句之外还可以是复合语句,用花括号括起来。,【例1】 判断输入字符种类 #include main() char c; c=getc

4、har(); if(c=0 ,【例2】编程实现给一百分制成绩,要求输出成绩等级A、B、C、D、E。90分以上为A等,89-80分为B等,79-70分为C等,69-60分为D等,60分以下为E等。,【源程序】 main( ) int grade; printf ( “input the grade:“); scanf (“%d“, ,从键盘输入一个自变量x,求分段函数y=f(x)的值,f(x)的表达式如下:,练习,练习,判断下面程序的运行结果: #include main() int x=1,y=2,z=0,i=3; if (ix) z=1; else if(iy) z=2; else z=3;

5、 printf(“z=%d”,z); ,3、if语句的嵌套,【例3】输入两数并判断其大小关系,#include main() int x,y; printf(“Enter integer x,y:“); scanf(“%d,%d“, ,运行:Enter integer x,y:12,23 XY Enter integer x,y:12,12 X=Y,if else 配对原则:,缺省 时,else总是和它上面离它最近的未配对的if 配对。,例: if (a= =b) if(b= =c) printf(“a= =b= =c”); else printf(“a!=b”);,修改: if (a= =b

6、) if(b= =c) printf(“a= =b= =c”); else printf(“a!=b”);,实现if else 正确配对方法:加 ,例 考虑下面程序输出结果: main() int x=100,a=10,b=20; int v1=5,v2=0; if(ab) if(b!=15) if(!v1) x=1; else if(v2) x=10; x=-1; printf(“%d”,x); ,结果:-1,输入一个数,若该数为正数并且是偶数,打印“ is even”,否则打印“is odd”。 输入一个用整数表示的年份,输出显示该年份是否是闰年。 判断一个整数表示的年份是不是闰年的规则有

7、一下两点,满足其中之一就是闰年: (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

8、; break; /*可缺省*/ ,c1cn 常量(整数、字符、常量表达式如3+4,不含变量或函数),switch(score) case 5: printf(“Very good!”); case 4: printf(“Good!”); case 3: printf(“Pass!”); case 2: printf(“Fail!”); default : printf(“data error!”); ,switch语句执行流程:,图 去掉break语句的switch结构的执行过程,功能: 1、首先计算条件表达式的值,然后找到与其相等的常量表达式的case分支去执行语句,然后退出switch语

9、句。 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)

10、条件表达式和常量表达式的数据类型必须一致,常量表达式中不能包含变量。实际上,switch语句的重点就在于如何构造条件表达式,并让它的值正好能够匹配n个常量表达式的值。 (3) 多个case 可以共同使用相同的语句i。 switch (s) case 1: case 2: case 4: case 5: printf(“%d“,x);break; ,(4) 每个常量表达式应不相等,因为它类似于语 句标号的作用,case部分与default的顺序可自由 书写。若每个case后包含break,则顺序不影响 最后的执行结果。反之,则有可能影响执行结果 s=2; switch (s) case 1: p

11、rintf(“1“);break; case 2: printf(“2“);break; case 3: printf(“3“);break; 结果?,switch (s) case 1: printf(“1“); case 2: printf(“2“); case 3: printf(“3“); 结果?,(5) 语句i可以用复合语句,而且允许省略花括号。 (6) switch语句可以嵌套,即在一个switch语句中嵌套另一个switch语句,但是要注意break只能跳出最内层的switch语句。,例 main() int x=1,y=0,a=0,b=0; switch(x) case 1:

12、switch(y) case 0: a+; break; case 1: b+; break; case 2: a+;b+; break; case 3: a+;b+; printf(“na=%d,b=%d”,a,b); ,运行结果:a=2,b=1,【例3】用switch完成:根据输入的百分制按五分制的成绩输出。,#include “stdio.h“ main() int score,s,sum; char grade; printf(“please input score:“); scanf(“%d“, ,#include main() int c; printf(“Enter m or n

13、 or h or other:“); c=getchar(); switch(c) case m: printf(“nGood morning!n“);break; case n: printf(“nGood night!n“); break; case h: printf(“nHello!n“); break; default : printf(“n?n“); break; ,例4根据输入字母输出字符串,例五:switch语句,main() char s; scanf(“%c”, ,输入“c”,求输出结果。,结果: 6069 60 错误输入,?!,例六:switch语句 示例,main()

14、char s; scanf(“%c”, ,我的成绩应该是6069!,什么!“60”? “错误输入”?怎么会这样?!,不好意思,我属于C级!,运行结果: 6069 60 错误输入,例七:switch语句 示例,解决方法break语句: main() char s; scanf(“%c”, ,这才差不多!,break!,运行结果: 6069,例八:switch语句 示例,main() int x=1,y=0,a=0,b=0; switch(x) case 1 : switch(y) case 0 : a+;break; case 1 : b+;break; case 2 : a+;b+;break

15、; case 3 : 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,36,7,编写一程序从键盘输入星期的序号,则输出其对应的英文。比如,输入6,则输出“Saturday”。,附录,求解闰年的程序:,main() int year,leap; scanf(“%d”, ,main() int year,leap; if (year%4!=0) leap=0; else if (year%100!=0) leap=1; else if (year%400!=0) leap=0; else leap=1; if (leap) printf(“%d is“,year); else printf(“%d is not“,year); printf(“a leap year.n“); ,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1