C语言程序设计 教学课件 ppt 作者 978-7-302-24345-8 kj-第4章选择结构程序的设计

上传人:E**** 文档编号:89343908 上传时间:2019-05-23 格式:PPT 页数:45 大小:338.50KB
返回 下载 相关 举报
C语言程序设计  教学课件 ppt 作者 978-7-302-24345-8 kj-第4章选择结构程序的设计_第1页
第1页 / 共45页
C语言程序设计  教学课件 ppt 作者 978-7-302-24345-8 kj-第4章选择结构程序的设计_第2页
第2页 / 共45页
C语言程序设计  教学课件 ppt 作者 978-7-302-24345-8 kj-第4章选择结构程序的设计_第3页
第3页 / 共45页
C语言程序设计  教学课件 ppt 作者 978-7-302-24345-8 kj-第4章选择结构程序的设计_第4页
第4页 / 共45页
C语言程序设计  教学课件 ppt 作者 978-7-302-24345-8 kj-第4章选择结构程序的设计_第5页
第5页 / 共45页
点击查看更多>>
资源描述

《C语言程序设计 教学课件 ppt 作者 978-7-302-24345-8 kj-第4章选择结构程序的设计》由会员分享,可在线阅读,更多相关《C语言程序设计 教学课件 ppt 作者 978-7-302-24345-8 kj-第4章选择结构程序的设计(45页珍藏版)》请在金锄头文库上搜索。

1、第1页,第4章 选择结构程序的设计,本章概述 本章的学习目标 主要内容,第2页,本章概述,首先介绍条件表达式和逻辑表达式 其次介绍了选择结构的基本语句If语句及其三种形式 switch语句的介绍 if语句和switch语句的嵌套使用 相应程序举例,第3页,本章的学习目标,本章教学目的: 掌握关系表达式和逻辑表达式的使用方法,能使用if和switch 语句编写简单的程序。 本章教学重点: if和switch 语句 本章教学难点: if和switch语句的嵌套,第4页,主要内容,4.1 关系运算及关系表达式 4.2 逻辑运算及逻辑表达式 4.3 if语句 4.4 switch语句 4.5 if语句

2、和switch语句的嵌套形式 4.6 程序举例,第5页,4.1 关系运算及关系表达式,所谓“关系运算”实际上就是“比较运算”,即将两个数据进行比较,判定两个数据是否符合给定的关系。 例如,“a b”中的“”表示一个大于关系运算。 如果a的值是5,b的值是3,则大于关系运算“”的结果为“真”,即条件成立; 如果a的值是2,b的值是3,则大于关系运算“”的结果为“假”,即条件不成立。,第6页,4.1 关系运算及关系表达式,4.1.1 关系运算符及其优先次序 1关系运算符 C语言提供6种关系运算符: (大于), =(大于或等于), =(等于), !=(不等于) 2优先级 在关系运算符中,前4个优先级

3、相同,后2个也相同,且前4个高于后2个。,第7页,4.1 关系运算及关系表达式,注意: 在语言中,“等于”关系运算符是双等号”= =”,而不是单等号“= ”(赋值运算符)。 应避免对实数作相等或不等的判断,如 1.0/3.0*3.0= =1.0 ,可改写为:fabs(1.0/3.0*3.0-1.0)1e-6 程序员在写代码的时候,很容易把关系运算符的双等号 “= =”,误写成单等号“= ”(赋值运算符),这样的错误很难发现(C的编译器不会给你错误提示!) 有些程序员这样来: 你原打算写:A= =1 可以把常量放在前面,改为1= =A 这样如果你不小心错写成1= A,编译器就会报错,第8页,4.

4、1 关系运算及关系表达式,4.1.2 关系表达式 1关系表达式的概念 所谓关系表达式是指,用关系运算符将两个表达式连接起来,进行关系运算的式子。关系运算符的两端可以是算术表达式、赋值表达式、字符表达式、关系表达式等。 例如,下面的关系表达式都是合法的 ab,a+bc-d,(a=3)=b,(ab)= =(bc) 2关系表达式的值逻辑值(非“真”即“假”)。,第9页,4.1关系运算及关系表达式,注意: 可以把关系表达式的值赋给其他变量, z= (xy+3) 当x=23,y=12时,z的值为1。 a=(b!=c) 当b=2、c=2时,a的值为0。 关系运算符是自左至右的结合方向, 若a=3、b=2、

5、c=1, y=(abc) ,则y 的值为0。 因为按照自左至右的结合方向,先执行关系运算“ab”得值为1(“真”),再执行关系运算“1c”,得值为0(“假”),因此y为0。,第10页,4.1关系运算及关系表达式,关系运算符的优先级低于算术运算符。关系运算符的优先级高于赋值运算符。根据优先级的规定,下面左边的关系表达式可以简化为下面右边的形式: (b*b-4*a*c)=0 b*b-4*a*c=0 z= (xy+3) z= xy+3 (ab)= = c ab= =c a=(b!=c) a=b!=c 当然为提高程序的可读性、可维护性你不妨多使用括号,因为C语言中的有些优先级很容易让你不小心犯错。,第

6、11页,4.2 逻辑运算及其表达式,关系表达式只能描述单一条件,例如“x=0”。如果需要描述“x=0”、同时“x10”,就要借助于逻辑表达式了。 4.2.1 逻辑运算及其优先次序 逻辑运算符及其运算规则 (1)C语言提供三种逻辑运算符: ! 逻辑非(相当于“否定”) & 逻辑与(相当于“同时”,AND) | 逻辑或(相当于“或者”,OR) “&”和“| |”是“双目运算符”,它要求有两个运算对象; “!”是“单目运算符”,只要求有一个运算对象.,第12页,4.2 逻辑运算及其表达式,4.2.1 逻辑运算及其优先次序 逻辑运算符及其运算规则 (1)逻辑运算规则如下: a&b :若a和b为真,则a

7、&b为真;若a、b至少有一个为假,则a&b为假。 a | | b : 若a和b为假,则a | | b为假;若a、b至少有一个为真,则a | | b为真。 !a : 若a为真,则!a为假;若a为假,则!a为真。,第13页,4.2 逻辑运算及其表达式,(2)三种逻辑运算的优先次序为:!(逻辑非)高于&(逻辑与),&(逻辑与)高于|(逻辑或)。 逻辑运算符中的“&”和“| |”低于关系运算符,“!”高于算术运算符。 根据优先级的规定,下面左边的关系表达式可以简化为下面右边的形式: (x0)&(y0) x0 & y0 (x= =3)| |(y!= 6) x= =3 | | y!= 6 (x0) & (

8、!z) x0 & !z,第14页,4.2 逻辑运算及其表达式,4.2.2 逻辑表达式 1逻辑表达式的概念 所谓逻辑表达式是指,用逻辑运算符将1个或多个表达式连接起来,进行逻辑运算的式子。在C语言中,用逻辑表达式表示多个条件的组合。 例如,(year%4=0)&(year%100!=0)|(year%400=0)就是一个判断一个年份是否是闰年的逻辑表达式。 逻辑表达式的值也是一个逻辑值(非“真”即“假”)。,第15页,4.2 逻辑运算及其表达式,4.2.2 逻辑表达式 2逻辑量的真假判定和非 语言用整数“”表示“逻辑真”、用“”表示“逻辑假”。但在判断一个数据的“真”或“假”时,却以和非为根据:

9、如果为,则判定为“逻辑假”;如果为非,则判定为“逻辑真”。 例如,假设num=12,则: !num的值= , num=1 num31的值=1。,第16页,4.2 逻辑运算及其表达式,3说明 逻辑运算符两侧的操作数,除可以是和非的整数外,也可以是其它任何类型的数据,如实型、字符型等。 注意:在逻辑表达式的求解中,并不是所有的逻辑运算符都被按顺序执行,若计算到某一步时,逻辑表达式的值是“真”是“假”已经明确,则不再执行后面的逻辑运算符。例如: (1)对于逻辑表达式a & b & c , 只有a为真(非0)时,才需要判别b的值,只有a和b都为真的情况下才需要判别c的值。只要a为假,就不再去判断b和c

10、(此时整个表达式已确定为假)。如果a为真,b为假,就不再去判断c。 (2)对于逻辑表达式a | | b | | c, 只要a为真(非0),就不再去判断b和c。只有a为假,才去判断b。a和b都为假时,才去判断c。,第17页,4.3 if语句,if语句是用来判定所给定的条件是否满足,根据判定的结果(真或假),决定执行哪条分支的语句。 4.3.1 if语句的三种形式 1第一种if语句格式如下: if(表达式)语句 它的执行过程见图,若表达式为“真”,则执行该语句, 否则不执行该语句。,第18页,4.3 if语句,例4.1 从键盘输入一个整数x,如果x0,则打印x的值。 # include int m

11、ain() int x; printf(“Input x:“); scanf(“%d“, ,第19页,4.3 if语句,2第二种if语句格式如下: if(表达式) 语句1 else 语句2 它的执行过程是: 若表达式为“真”,则执行该语句1,否则执行语句2,语句1和语句2只能有其中一个语句被执行到。,第20页,4.3 if语句,# include int main() int a; printf(“输入一个整数:“); scanf(“%d“, ,例4.2 从键盘输入一个整数,判断该整数是奇数还是偶数。,第21页,3第三种if语句格式如下:,3第三种if语句格式如下: if(表达式1) 语句1

12、else if(表达式2) 语句2 else if(表达式n-1) 语句n-1 else 语句n,第22页,3第三种if语句格式如下:,第23页,4.3 if语句,# include int main() float x,y; printf(“Input x:“); scanf(“%f“, ,例4.3 输入x,计算并输出下列分段函数y的值。,第24页,4.3 if语句,4.3.2 条件运算符 条件运算符要求有3个操作对象,称为三目运算符,它是C语言中唯一的一个三目运算符。条件表达式的一般形式如下: 表达式1?表达式2:表达式3 它的执行过程是:先求解表达式1,若表达式1为“真”,则取表达式2的

13、值为该条件表达式的值,否则取表达式3的值为该条件表达式的值。 例如以下的if语句: if(x=y)s=x*y; else s=x+y; 可以用下面的条件运算符来处理: s=(x=y)?(x*y) :(x+y) ; 其中“(x=y)?(x*y) :(x+y)”是一个“条件表达式”。,第25页,4.3 if语句,4.3.2 条件运算符 说明: (1)条件运算符优先于赋值运算符。 因此上面在“s =(x=y)?(x*y) :(x+y) ;”中,是先求解条件表达式,再将它的值赋给s。 (2)条件运算符的优先级别低于关系运算符和算术运算符。因此条件表达式: s =(x=y)?(x*y) :(x+y) ;

14、 括号可以不要,写成下面形式: s = x=y ?x*y :x+y ;,第26页,4.3 if语句,4.3.2 条件运算符 说明: (3)条件运算符的结合方向为“自右至左”。 所以下面的条件表达式: x8?0:y3?1:-1 相当于 x8?0:(y3?1:-1) (4)条件表达式中“表达式2”和“表达式3” 不仅可以是数值表达式,也可以是赋值表达式或函数表达式。例如: xy ?(z=x+y):(z=x*y) 或 xy ?putchar(A):putchar(a) 即xy成立时,上面条件表达式的值是putchar(A);否则上面条件表达式的值是putchar(a)。函数putchar的返回值是参

15、数本身,即显示的字符。,第27页,4.3 if语句,例4.4 输入一个2位整数,判断它的十位数码是否为3,如果是3,将它乘以10;如果不是,将它乘以6。然后输出乘以10或乘以6后的结果。 # include int main() int m, k; scanf(“%d“, ,第28页,4.4 switch语句,1switch语句的一般形式 switch(表达式) case 常量表达式1:语句组;break; case 常量表达式2:语句组;break; case 常量表达式:语句组;break; default:语句组;break; ,第29页,4.4 switch语句,2执行过程 (1)当s

16、witch后面“表达式”的值,与某个case后面的“常量表达式”的值相同时,就执行该case后面的语句(组);当执行到break语句时,跳出switch语句,转向执行switch语句的下一条。 (2)如果没有任何一个case后面的“常量表达式”的值,与“表达式”的值匹配,则执行default 后面的语句(组)。然后,再执行switch语句的下一条。,第30页,4.4 switch语句,3注意问题: (l)switch后的表达式的类型与常量表达式的类型必须一致。 (2)每一个case的常量表达式的值必须互不相同,否则就会出现互相矛盾的现象。 (3)在case后面虽然包含了一个以上执行语句,但可以不用花括弧括起来,

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

当前位置:首页 > 高等教育 > 大学课件

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