c语言教学课件之第5章选择结构程序设计

上传人:shaoy****1971 文档编号:115458411 上传时间:2019-11-13 格式:PPT 页数:52 大小:1.07MB
返回 下载 相关 举报
c语言教学课件之第5章选择结构程序设计_第1页
第1页 / 共52页
c语言教学课件之第5章选择结构程序设计_第2页
第2页 / 共52页
c语言教学课件之第5章选择结构程序设计_第3页
第3页 / 共52页
c语言教学课件之第5章选择结构程序设计_第4页
第4页 / 共52页
c语言教学课件之第5章选择结构程序设计_第5页
第5页 / 共52页
点击查看更多>>
资源描述

《c语言教学课件之第5章选择结构程序设计》由会员分享,可在线阅读,更多相关《c语言教学课件之第5章选择结构程序设计(52页珍藏版)》请在金锄头文库上搜索。

1、第1张,聪明出于勤奋,天才在于积累 华罗庚,2,5.1 关系运算符和关系表达式 5.2 逻辑运算符和逻辑表达式 5.3 if语句 5.4 switch语句 5.5 程序举例 习题,第5章 选择结构程序设计,第3张,本章大纲,选择结构程序设计(4学时) 教学内容: 关系运算符和关系表达式 逻辑运算符及逻辑表达式 if语句及条件运算符 switch语句 选择结构的C程序的编写,第4张,基本要求: 掌握关系运算符与关系表达式; 掌握逻辑运算符与逻辑表达式; 掌握if语句的几种形式; 掌握if语句的嵌套应用; 掌握条件运算符的应用; 掌握switch-case语句的应用。 重点:if语句;选择结构的C

2、程序的编写 难点:选择结构的C程序的编写,第5张,5.1 关系运算符和关系表达式,关系运算:实际上是“比较运算”。 将两个值进行比较,判断其比较的结果是否符合给定的条件。,谁会赢?,判断题 35 ( ),第6张,5.1.1 关系运算符及其优先次序, (小于) = (小于或等于) (大于) = (大于或等于) = = (等于) != (不等于),1.C语言提供的关系运算符种类:,高,优先级相同,低,优先级相同,第7张,从左向右,2.关系运算符的优先次序:,3.关系运算符的结合性:,关系运算符,算术运算符,赋值运算符,低,高,例如:ca+b 等效于c(a+b) a=bc等效于a=(bc) a=bc

3、等效于a=(bc),第8张,5.1.2 关系表达式,用关系运算符将两个表达式连接起来的式子。,表达式可以是: 1.算术表达式 2.关系表达式 3.逻辑表达式 4.赋值表达式 5.字符表达式,例如: ab, abbc, (a=3)(b=5), ab, (ab)(bc),只有两种:真和假,在C语言里分别用1和0 来表示。,用1和0来表示的原因在于:c语言没有逻辑型数据,以1代表“真”,以“0”代表“假”。,2.关系表达式的结果:,1.关系表达式:,第9张,例题: 假设a=3,b=2,c=1 下列这些表达式的结果是什么?,例如: ab, abbc, (a=3)(b=5), ab, (ab)(bc)

4、ab c,1 1 0 1 1 0,第10张,5.2 逻辑运算符和逻辑表达式,5.2.1 逻辑运算符及其优先次序,1.C语言提供的逻辑运算符种类:,& 逻辑与 | 逻辑或 ! 逻辑非,第11张,2.逻辑运算规则:,a&b若a、b为真,则a&b为真。 a|b 若a、b之一为真,则a|b为真。 !a 若a为真,则!a为假。,例如: 1)若a=4,则!a的值为0 2) 若a=4,b=5,则a&b的值为1 3) a、b值同前,a|b的值为1 4) 4&0|2的值为1,第12张,图5.2,关系运算符,算术运算符,赋值运算符,低,高,&,!(非),3.逻辑运算符的优先次序:,例如: (ab) & (xy)

5、ab & xy (a=b)|(x=y) a=b|x=y (!a)|(ab) !a|ab,|,第13张,5.2.2 逻辑表达式,用逻辑运算符将关系表达式或逻辑量连接起来的式子。,是一个逻辑量“真”或“假”。 C语言以数值1代表“真”,以0代表“假”.,运算过程中,判断一个量为“真”为或“假”时,以0代表“假”,以非0代表“真”。,例如: 53&84-!0,1.逻辑表达式:,2.逻辑表达式的结果:,第14张,图5.3,在逻辑表达式的求解中,并不是所有的逻辑运算符都被执行,只是在必须执行下一个逻辑运算符才能求出表达式的解时,才执行该运算符。,a,b,c,假,假,假,真,真,真,假,真,逻辑与短路 a

6、 & b & c,图5.4,a,b,c,真,真,真,假,假,假,真,假,逻辑或短路 a | b | c,3.逻辑短路,第15张,4.例题,(1)如果有下面的逻辑表达式,假设a=1,b=2,c=3,d=4,m1,n1 (m=ab) & (n=cd) 则表达式的结果是多少?m和n的值是多少? 0,m=0,n=1,表达式的值为0,m=0,n=1 解释:由于“ab”的值为0,因此m=0,出现逻辑与短路,所以“n=cd”不被执行,因此n的值不是0而仍保持原值。,第16张,(2)要判别某一年year是否闰年。 闰年的条件是符合下面二者之一: 能被4整除,但不能被100整除。 能被4整除,又能被400整除。

7、 用一个逻辑表达式表示则为: (year4=0 & year100!=0)|year400=0,第17张,5.3 if语句,if语句是用来判定所给定的条件是否满足,根据判定的结果(真或假)决定执行给出的两种操作之一。,if(表达式) 语句,if(表达式) 语句1 else 语句2,if(表达式1) 语句1 else if(表达式2)语句2 else if(表达式3) 语句3 else if(表达式m) 语句m else语句n,5.3.1 if语句的三种形式,第18张,1 if语句的第一种形式,语法格式: if(表达式) 语句,例如: if (x60) printf(“及格“);,表达式,真,语

8、句,假,图5-5 (a),第19张,2 if语句的第二种形式,语法格式: if(表达式) 语句1 else 语句2,例如: if (x60) printf(“及格“); else printf(“不及格“);,表达式,真,语句1,假,图5-5(b),语句2,注意else子句不能作为语句单独使用,它必须是if语句的一部分,与if配对使用。,第20张,3 if语句的第三种形式,if(表达式1) 语句1 else if(表达式2)语句2 else if(表达式3) 语句3 else if(表达式m) 语句m else语句n,if(x90) printf(“优秀”); else if(x80) pri

9、ntf(“良”); else if(x70) printf(“中”); else if(x60) printf(“及格”); else printf(“不及格“);,表达式1,真,语句1,假,语句2,表达式2,真,假,语句3,表达式3,真,假,语句4,第21张,说明:,(1)三种形式的if语句中的“表达式”,一般为逻辑表达式或关系表达式。表达式的类型可以是任意的数值类型(包括整型、实型、字符型、指针型数据) (2) 第二、第三种形式的if语句中,在每个else前面有一分号,整个语句结束处有一分号,if (x0) printf (“%f“,x); else printf(“%f“,-x);,if

10、(a=b & x=y) printf(“a=b,x=y”); if(3) printf(“k”); if(a) printf(“%d“,a);,第22张,(3)在if和else后面可以只含一个内嵌的操作语句,也可以有多个操作语句,此时用花括号“”将几个语句括起来成为一个复合语句。,if (abc printf(“area=%6.2f”,area); else printf(“it is not a trilateral”);,第23张,例5.1输入两个实数,按代数值由小到大的次序输出这两个数。,main() float a,b,t; scanf(“%f,%f“, ,3.6,-3.2(回车) -

11、3.20, 3.60,开始,ab?,交换a和b,输出a和b,Y,N,结束,第24张,1,3,2,酱油 (a),醋 (b),酱油 (a),醋 (b),空瓶 (t),t=a;,酱油,空,a=b;,醋,b=t;,空,酱油,空,妈妈告诉我,要把酱油和醋交换一下,第25张,5.3.2 if语句的嵌套,if( ) if( )语句1 else语句2 else if( )语句3 else语句4,在if语句中又包含一个或多个if语句称为if语句的嵌套。一般形式如下:,if() if()语句1 else if()语句2 else 语句3,else总是与它上面的最近的if配对,第26张,例5.3有一函数:编一程序,

12、输入一个x值,输出y值。,若 x 0 y = 1 输出y,开始,输入x,x0,x=0,y=0,y=-1,y=1,输入x,结束,Y,N,Y,N,图5.7,第27张,程序1:,main() int x,y; scanf(“%d“,&x); if(x0)y=-1; else if(x=0) y=0; else y=1; printf(“x=%d,y=%dn“,x,y); ,第28张,图5.9,y=-1; if(x!=0) if(x0) y=1; else y=0;,程序3:,x0,x0,y=1,y=0,Y,N,Y,N,y=-1,第29张,5.3.3 条件运算符,例: 若有以下if语句: if (ab

13、) max=a; else max=b; 可以用下面的条件运算符来处理: max=(ab)?ab;,若if语句中,在表达式为“真”和“假”时,都只执行一个赋值语句且给同一个变量赋值时,可以用简单的条件运算符来处理。,第30张,表达式1 ?表达式2表达式3,1.条件表达式的一般形式:,c语言中唯一的一个三目运算符,2.条件运算符的执行顺序:,先求解表达式1, (1)若表达式1的值为非0(真)则求解表达式2,此时表达式2的值就作为整个条件表达式的值。 (2)若表达式1的值为0(假),则求解表达式3,表达式3的值就是整个条件表达式的值。,表达式1,条件表达式 取表达式2的值,条件表达式 取表达式3的

14、值,真,假,图5.11,第31张,关系运算符,算术运算符,赋值运算符,低,高,&,!(非),如果有 ab?ab1 相当于 ab?a(b1),3.条件运算符优先级,|,条件运算符,第32张,4.条件运算符的结合方向,“自右至左”,如果有以下条件表达式: ab?acd?cd 相当于 ab?a(cd?cd) 如果a=1,b=2,c=3,d=4,则条件表达式的值等于多少?,4,第33张,5.说明:,如 x? ab x是整型变量,若x=0,则条件表达式的值为b。,如 xy?115 如果x=y,则条件表达式的值为15,若xy,值应为1,由于15是浮点型,比整型高,因此,将1转换成浮点型1.0。,(1)表达

15、式1的类型可以与表达式2和表达式3的类型不同。 (2)表达式2和表达式3的类型也可以不同,此时条件表达式的值的类型为二者中较高的类型。,第34张,例5.4输入一个字符,判别它是否大写字母,如果是,将它转换成小写字母;如果不是,不转换。然后输出最后得到的字符,开始,ch是大写字母?,将ch转换成小写,输出ch,Y,N,结束,输出ch,怎么判断ch是大写还是小写?,第35张,main() char ch; scanf(“%c“,& ch); ch=(ch=A & ch=Z)?(ch+32)ch; printf(“%c“,ch) ,A(回车) a,第36张,5.4 switch 语 句,switch语句是多分支选择语句。用来实现如图所表示的多分支选择结构。,表达式,语句A,语句B,语句M,语句N,p=p1,p=p2,p=pn,p=pm,switch结构只能对等式进行测试。,第37张,1.一般形式:,switch(表达式) case 常量表达式1:语句1 case 常量表达式2:语

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

当前位置:首页 > 中学教育 > 职业教育

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