选择结构程序设计(2)ppt培训课件

上传人:bin****86 文档编号:54622963 上传时间:2018-09-16 格式:PPT 页数:37 大小:354KB
返回 下载 相关 举报
选择结构程序设计(2)ppt培训课件_第1页
第1页 / 共37页
选择结构程序设计(2)ppt培训课件_第2页
第2页 / 共37页
选择结构程序设计(2)ppt培训课件_第3页
第3页 / 共37页
选择结构程序设计(2)ppt培训课件_第4页
第4页 / 共37页
选择结构程序设计(2)ppt培训课件_第5页
第5页 / 共37页
点击查看更多>>
资源描述

《选择结构程序设计(2)ppt培训课件》由会员分享,可在线阅读,更多相关《选择结构程序设计(2)ppt培训课件(37页珍藏版)》请在金锄头文库上搜索。

1、第五章 选择结构程序设计,要设计选择结构程序,要考虑两个方面的问题:一是在C语言中如何来表示条件,二是在C语言中实现选择结构用什么语句。5.1 关系运算及其表达式 5.2 逻辑运算及其表达式 5.3 if语句 5.4 switch语句 5.5 选择结构程序举例,5.1 关系运算符和关系表达式关系运算实质是比较运算,它是将两个值进行比较,判断其比较的结果是否符合给定的条件,其结果为真(1)或者为假(0)。 5.1.1关系运算符及其优先次序 C语言提供了6种关系运算符:, 大于 = 大于或等于,= = 等于!= 不等于,优先级相同(高),优先级相同(低),说明: 1)关系运算符的优先级低于算术运算

2、符; 2)关系运算符的优先级高于赋值运算符,5.1.2 关系表达式用关系运算符将两个表达式(可以是算术表达式或关系表达式,逻辑表达式、赋值表达式、字符表达式)连接起来的式子,称为关系表达式。下面为一些合法的关系表达式: a+bb+c (a=3)(b=5) ab关系表达式的结果只有两种:真或假;在C语言中,以数值1代表“真”,数值0代表“假”。 例:假设a=3,b=2,c=1,则: (ab) = = c d=ab f=abc,结果为:表达式的值为1(真);,结果为:d 的值为1,表达式的值为1 ;,结果为:f 的值为0,表达式的值为0 ;,5.2 逻辑运算符和逻辑表达式 5.2.1 逻辑运算符及

3、其优先次序 C语言提供三种逻辑运算符:,(1)& 逻辑与(与运算符) (2) | | 逻辑或(或运算符) (3) ! 逻辑非(非运算符),说明:1)“&”和“| |”为双目运算符,“!”为单目运算符;2)逻辑运算的结果只有两种:真或假。逻辑运 算的真值表详细情况见书P93表5.1。,几种运算符的优先次序为:,例:!a&b| |xy&c,5.2.2 逻辑表达式给出逻辑运算结果: 数值1代表“真”,数值0代表“假”判断一个量是否为“真” : 0代表“假”,非0代表“真” 例:1)若a=4,则!a=0;2)若a=4,b=5 则 a&b=1;a | | b=1;! a | | b=1;3)53&2 |

4、 8b)&(n=cd),如果“ab”的值为0,则n将不进行赋值运算而保留原值(Why?);,一个重要的例子:判断某一年是否为闰年的方法。而为闰年的条件是符合下面两者之一:(1)能被4整除,但不能被100整除;(2)能被4整除,又能被400整除; 写出逻辑表达式: 首先分析逻辑结构:1、条件(1)和条件(2)的关系应该是“或”;2、而每个条件内部应该为“与”关系;3、条件(2)内,满足被400整除的一定满足被4整除,因此只需一个逻辑表达式即可; 所以最后的逻辑表达式为: (year%4=0)&(year%100!=0)| |(year%400=0) 根据运算符的优先级关系,上式可简化为: yea

5、r%4=0 & year%100!=0 | | year%400=0,5.3 if 语句,5.3.1 if 语句的三种形式: 1. if (表达式) 语句; 执行过程,如左图:if (xy) printf (“%d”,x);,表达式,语句,假(0),真(非0),XY,printf (“%d”,x);,假(0),真(非0),2. if (表达式) 语句1; else 语句2; 例如: if (xy) printf (“%d”,x); else printf(“%d”,y);,3. if (表达式1) 语句1; else if (表达式2) 语句2;else if (表达式3) 语句3;else

6、if (表达式m) 语句m;else 语句n;,例: if (number500) cost=0.15; else if (number300) cost=0.10; else if (number100) cost=0.075; else if (number50) cost=0.05; else cost=0;,number500,cost=0.15,假,真,cost=0.10,真,假,cost=0.075,cost=0.05,真,假,cost=0,假,真,number300,number100,number50,说明: 1)if 语句中在if后面都有表达式,一般为逻辑表达式或关系表达式,

7、也可以为其它表达式;如果表达式的值为0,则按“假”处理,如果为非0,则按“真”处理; 例如:if (3) printf(“O.K.”); 直接执行打印“O.K.”if (a) printf(“%d”,a); 打印a的ASCII码97 2)注意在if 语句每个语句后都有分号;if (number500) cost=0.15;else if (number300) cost=0.10;else if (number100) cost=0.075;else if (number50) cost=0.05;else cost=0;,3) 在if和else后面可以只含一个内嵌的操作语句,也可以有多个操作

8、语句,此时须用花括号“ ”将几个语句括起来成为一个复合语句。 例:if (a b) m = a ; printf(“The MAX number is %d”, m);else m = b;printf(“The MAX number is %d”, m);,例5.1:输入两个实数,按代数值由小到大的次序输出这 两个数; 分析:这是一个简单而重要的程序,算法的关键在与设 置一个中间交换变量,用于比较两个实数的大小后进行次序的变换; 程序: main( ) float a, b, t;scanf(“%f,%f”, ,例5.2 输入3个数a、b、c,要求按由小到大的顺序输出; 分析:此题算法比上题

9、稍微复杂一些。上题为两个变量比较大小,只需进行一次比较,而本题为三个变量,则需进行三次比较。其伪代码算法为:if ab 将a和b对换 (对换之后,a比b小)if ac 将a和c对换 (对换之后,a比c小,a为最小)if bc 将b和c对换 (对换之后,b比c小,b为次小)经过三次比较和变换后:a为最小值,b为次小值,c为最大值。程序可写为:,#include Void main( ) float a, b, c, t;scanf(“%f,%f,%f”, ,5.3.2 if语句的嵌套,一般形式:if( )if ( ) 语句1else 语句2elseif ( ) 语句3else 语句4 注意:if

10、与else的配对关系。else总是与它上面的最近的 if 配对。,if( )if ( ) 语句1 elseif ( ) 语句2else 语句3if( ) if ( ) 语句1 elseif ( ) 语句2else 语句3,此if,else配对,此if,else配对,它们共同构成第 一个If的内嵌语句,加上一个花括符,限定了内嵌if语句的范围,可避免上述错误的出现,例5.3有一函数:编一程序,输入一个x值,输出y值。算法a:若x0 y=1输出x 算法b:输入x若x0 y=1输出y,算法2之变形算法的完整程序和简要流程图: main( ) int x,y;scanf(“%d”, ,x=0,Y,y

11、= -1,x0,Y,N,N,y = 1,y =0,错误例之一的程序及流程图片段: y = -1 if (x!=0)if (x0) y=1; else y=0,x!=0,Y,y = -1,x0,Y,N,N,y = 1,y =0,此程序的错误在于当x=0时使y= -1,而产生错误的原因是认为第二行的if和第四行的else配对,书P101程序4也是 犯了同样的错误,5.3.3 条件运算符,条件运算符的引入:简化某些简单的if语句。例如:if (ab) max=a;else max=b;可以写为:max=(ab)?a:b; 条件表达式的一般形式为: 表达式1? 表达式2:表达式3 这是C语言中惟一的三

12、目运算,其流程图如左图所示。,表达式1,条件表达式 取表达式2的值,条件表达式 取表达式3的值,真(非0),假(0),说明: 1)执行顺序:先求解表达式1,若为真(非0),则求解表达式2,并把表达式2的值作为整个条件表达式的值;否则求解表达式3,把表达式3的值作为整个条件表达式的值; 例:max=(ab)?a:b 2)条件运算符优先于赋值运算符,而低于关系运算符和算术运算符; 所以:max=(ab)?a:b,可以写成:max=ab?a:b ab?a:b+1相当于ab?a:(b+1),而不是(ab?a:b)+1 3)条件运算符的结合方式为“自右向左”。 如:ab?a:cd?c:d相当于ab?a:

13、(cd?c:d),4)条件表达式不能取代一般的if语句,只有在if语句中内嵌的语句为赋值语句,且两个分支都给同一变量赋值时才能代替if语句。if (ab) max=a;else max=b; 5)条件表达式中,表达式1的类型可以与表达式2和表达式3的类型不同。表达式2和表达式3的类型也可以不同,而表达式的值取它们之中较高的类型。 例1:设x为整型变量,有x?a:b 例2: xy?1:1.5,当xy时,表达式的值转换为1.0,例 5.4 输入一个字符,判断它是否为大写字母,如果是,将它转换为小写字符;如果不是,不转换。然后输出最后得到的字符。 main( ) char ch;scanf (“%c

14、”, 此程序介绍一个大小写字母转换的方法,值得注意和掌握。,5.4 switch语句,一般形式: switch (表达式) case 常量表达式1:语句1case 常量表达式2:语句2case 常量表达式n:语句ndefault: 语句n+1 流程图如右图所示。,表达式= 常量表达式1,表达式= 常量表达式2,表达式= 常量表达式n,语句1,语句2,语句n,default,语句n+1,例:要求按照考试成绩的登记打印出百分制分数段。 switch(grade) caseA: printf(“85100n”);caseB: printf(“7084n”);caseC: printf(“6069n”);caseD: printf(“60n”);default : printf(“errorn”); 如果grade的值等于A,则将连续输出:851007084 606960error,产生这样结果的原因是: “case常量表达式”只是起语句标号作用,并不是在该处进行条件判断。因此,根据switch后面表达式的值找到匹配的入口标号,就从此开始执行下去,不再进行判断。而这种流程控制并不是我们通常所希望的。,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号