vcch05

上传人:小** 文档编号:59946897 上传时间:2018-11-12 格式:PPT 页数:47 大小:2.11MB
返回 下载 相关 举报
vcch05_第1页
第1页 / 共47页
vcch05_第2页
第2页 / 共47页
vcch05_第3页
第3页 / 共47页
vcch05_第4页
第4页 / 共47页
vcch05_第5页
第5页 / 共47页
点击查看更多>>
资源描述

《vcch05》由会员分享,可在线阅读,更多相关《vcch05(47页珍藏版)》请在金锄头文库上搜索。

1、封面,版权声明,版权声明,本电子教案版权所有人为姜学锋 20012005,西北工业大学计算机学院 未经授权,不得复制、修改、商业发行,本章目录,选择结构程序设计,5.1 关系运算符和关系表达式 5.2 逻辑运算符和逻辑表达式,5.3 if语句 5.4 switch语句 5.5 条件判断程序设计, 教学要求 本章小节 专题目录,5.1 关系运算符和关系表达式,5.1.1 关系运算符 1. C语言提供6种关系运算符: 大于 = 大于或等于 = = 等于(相等) != 不等于(相等) 2. 优先级: (1) 优先级相同, 优先级相同。 (2) 优先级比 优先级高。 (3)关系运算符的优先级比算术运算

2、符的优先级低,比逻辑运算符的优先级高。,5.1.1 关系运算符,圆括号运算符 () 算术运算符 、 (类型) 、 、 关系运算符 、= 、! 逻辑运算符 !、&、| 赋值运算符 、 、&、| 逗号运算符 ,,高,低,5.1.2 关系表达式,3. 关系运算符是双目运算符,结合性是“自左向右” 5.1. 关系表达式 1. 由关系运算符连接两个表达式的式子称为关系表达式。 例如: ab,a+b = c+d 相当于 (a+b) = (c+d) (a=3) (b=5),a != b 2. 关系表达式的值: 关系表达式的值是逻辑型的结果,只有两个值,即“真”与“假”,或者“1”与“0。其内存类型为 uns

3、igned int 3. 关系运算符两边的表达式可以为C语言的任意表达式,C语言根据两边的数学关系比较情况来确定关系表达式的值。,5.1.2 关系表达式,关系表达式的值是在内存中的存储如下: 关系表达式的值 内存形式unsigned int “1” 任何非零数据 “0” 零 例如: int a,b=2,c=1 ; a = (bc) ; a = (cb) ; a的内存值为非零数据值 a的内存值为0 如果在Turbo C中,a的非零值为1。 需要记住,“真”永远大于“假”, 例如: int a=1,b=2,c=3,d=4,e ; e = (a (cd) e非零值为1,5.1.2 关系表达式,4.

4、关系运算表达式的值输出使用整型类型输出,其结果不是整型数据的1就是0。 例如: int a=1,b=2; printf(“%dn”,ab) 输出值为0 例如: float a=3.14,b=9.8; printf(“%dn”,ab) 输出值为1,参考资料,要得到一个关系表达式的值,可以这样做: 1. 首先将C程序转换成汇编程序(Borland C+ 3.1提供的功能) 2. 分析汇编程序就知道了,对于本例a的非零值为1。,; int a, b=2, c=1 ; mov dx,2 mov bx,1 ; a = (bc) ; cmp dx,bx jle short 186 mov ax,1 jmp

5、 short 1114 186: xor ax,ax 1114: mov word ptr bp-2,ax,FAQ答疑,1. abc在数学上是集合的表达,而在C语言中是一个关系表达式,它是一个数值,不能象数学那样表达集合的概念。 2. 在C程序中,abc被解释为比较a的值与(bc)的关系表达式的值。 abc在数学上被解释为那些小于a值,且大于c值的值均是b的值;这对于C语言来说是一个即包含关系运算,又包含逻辑运算的表达。 3. abc对初学者常常是一个陷阱,圈套就是你平常的数学习惯,而猎物就是你的生命值。,5.2 逻辑运算符和逻辑表达式,5.2.1 逻辑运算符 1. C语言提供三种逻辑运算符:

6、 & 逻辑与(AND,数学上“且”的概念) | | 逻辑或(OR,数学上“或”的概念) ! 逻辑非(NOT,数学上“非此”的概念) 2. 优先级: (1)逻辑非的优先级高于逻辑与的优先级。 (2)逻辑与的优先级高于逻辑或的优先级。 (3)逻辑运算符的优先级比关系运算符的优先级低。 3. 结合性:自左向右,5.2.1 逻辑运算符,4. “&”和“| |”是双目运算符,“!“是单目运算符。其运算方法按如下的逻辑真值表来计算。,a b !a !b a & b a | | b 真 真 假 假 真 真 真 假 假 真 假 真 假 真 真 假 假 真 假 假 真 真 假 假,5.2.2 逻辑表达式,5.2

7、.2 逻辑表达式 1. 用逻辑运算符将表达式连接起来的式子为逻辑表达式。 例如:a & b ,(ab) | (cb) & bc) 2. 逻辑表达式的值: 逻辑表达式的值是逻辑型的结果,只有两个值,即“真”与“假”,或者“1”与“0。其内存类型为 unsigned int 3. 逻辑运算符两边的表达式可以为C语言的任意表达式,逻辑运算符总是将其两边(双目)或一边(单目)的表达式的值理解成逻辑值,理解时按下面的规则进行: (1)如果表达式值不为0,则其逻辑值为“真”。 (2)如果表达式值为0,则其逻辑值为“假”。,5.2.2 逻辑表达式,例如:int a=4 ; a printf(“%dn”,(!

8、(ab) 输出值为1,FAQ答疑,1. 逻辑值在C语言的内存按unsigned int处理,因而逻辑值的输入可以用整型类型做到。 2. 通常,逻辑结果不是用数值来表示的,于是在C程序中要增加用别的形式(例如:字符T表示1,字符F表示0)来表示,下面就是其中一例: 3. 逻辑输出结果也可以用别的形式来表示,在输出时根据其“1”和“0”选择输出结果。,int a,b,sum; a = getchar() a = (a=Y) | (a=y);,5.2.2 逻辑表达式,5. 逻辑表达式与别的表达式混合运算时,应根据优先级别和结合性来统一考虑。 例如: 53 & 2 | | 83) & 2 | | (8

9、 3 为 1,1 & 2 | | 8 4 !0 (2) 1 & 2 为 1, 1 | | 8 4 !0 (3) !0 为 1, 1 | | 8 4 1 (4) 4 1 为 3, 1 | | 8 3 (5) 8 3 为 0, 1 | | 0 (6) 1 | | 0 为 1 运算值为1。 注意:当C语言程序在解析表达式时,如果某运算符的运算顺序并不影响整个表达式的最后结果,则编译器可以“暂时忘记”运算符的优先级别的要求。本例中的4 !0的处理即是如此。其正确的顺序以编译出的汇编程序为结果。,5.2.2 逻辑表达式,6. 逻辑表达式“a & b”实质的运算(机器指令)可以用下图表示:,a成立,设置1

10、,设置0,Y,N,b成立,Y,N,计算a,计算b,5.2.2 逻辑表达式,7. 逻辑表达式“a | | b”实质的运算(机器指令)可以用下图表示:,a成立,设置0,设置1,Y,N,b成立,Y,N,计算a,计算b,5.2.2 逻辑表达式,由于逻辑表达式(“&”,“| |”)的求解实际上是由机器指令的跳转等指令形成的,因而当在顺序求解表达式时,只要求解的结果已经符合跳转逻辑,则该表达式后续的步骤就不再执行: 例如: a & b & c 如果执行时a的结果为“假”,则b、c不会被执行。 如果执行时a的结果为“真”和b的结果为“假”,则c不会被执行。 例如: a | | b | | c 如果执行时a的

11、结果为“真”,则b、c不会被执行。 如果执行时a的结果为“假”和b的结果为“真”,则c不会被执行。 在程序设计时应给予注意。,5.3 if语句,5.3.1 if 语句 1. 描述:判定给定条件,根据判定结果(逻辑值)来决定相应的操作。 2. 语法: if (表达式) 语句1 ; if (表达式) 语句1 ; else 语句2 ; 3. 注释:形式 的if 语句,判定表达式是否为“真”(即非零),如果为“真”,则执行语句1,然后再继续执行下一语句;否则继续执行下一语句。 形式 的if 语句,判定表达式是否为“真”,如果为“真”,则执行语句1;否则执行语句2。两种操作执行后继续执行下一语句。,5.

12、3.1 if语句,4. if 语句中的表达式、语句说明 if 语句中的表达式的值应该是逻辑值,因而表达式通常应是关系表达式和(或)逻辑表达式;如果是其它表达式或非unsigned int类型的数据将被自动进行类型转换。转换后的数据按非0和0当成逻辑值。 例如: if (“This is c program”) printf(“run if”); 指针类型 if (1.678) printf(“run if”); 浮点类型 if (A) printf(“run if”); 字符类型 if 语句中的语句可以是: 任意一个C语句,后面有分号。 一个复合C语句,后面没有分号。,5.3.1 if语句,5

13、. if 语句的流程图表示 (1) 形式 的if 语句 形式 的if 语句,表达式为“1”,语句1,Y,N,表达式为“1”,语句2,语句1,Y,N,5.3.2 if 语句的其它形式,5.3.2 if 语句的其它形式 由于if 语句中的语句1(或语句2)可以是任何的C语句,因而也可以再是一个if 语句,从而有下面不同的if 语句形式。 1. 连续条件判定: 语法: if (表达式1) 语句1 ; else if (表达式2) 语句2 ; else if (表达式3) 语句3 ; else if (表达式4) 语句m ; else 语句n ; 从外到里析出相应的if 语句。,5.3.2 if 语句

14、的其它形式,2. 嵌套的if 语句: 语法: if (表达式1) if (表达式11) 语句1 ; else 语句2 ; else if (表达式12) 语句3; else 语句4 ; 从外到里析出相应的if 语句,else 部分总是与其上最接近的if 语句配对。如果对应的if 语句没有else部分,则应用将这个if 语句“复合”起来,形成复合语句。,5.3.3 if 语句的风格,5.3.2 if 语句的风格 C语言if 语句的Hungarian风格: 1. if (表达式1) 语句1 ; 2. if (表达式1) (内嵌的语句) 3. if (表达式1) 语句1 ; else 语句2 ;,5

15、.3.3 if 语句的风格,4. if (表达式1) (内嵌的语句) else (内嵌的语句) 5. if (表达式1) else if (表达式2) else ,5.3.4 if 语法示例,5.3.2 if 语句的语法示例: 1. if (xy) printf(“XYn”); 2. if (xy)printf(“XYn”); else printf(“Xy) t = x ; x = y ; y = t ; ,两个数按大小比较的技巧,5.3.4 if 语法示例,4. if (b = = 0) printf(“Divided by 0n”); else printf(“a/b=%dn”.a/b); 4. 已知:a=2,b=1,c=0,d=4 if (a=b)&(b=c)&(c=d) printf(“a=%d,b=%d,c=%dn”,a,b,c); else printf(“a=%d,b=%d,d=%dn”,a,b,d);,5.3.4 if 语法示例,例5-1 P93,两个实数排序输出 main() float

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

当前位置:首页 > 商业/管理/HR > 管理学资料

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