收藏 分享(赏)

第五章 选择结构程序设计.ppt

上传人:无敌 文档编号:1154624 上传时间:2018-06-15 格式:PPT 页数:37 大小:187.50KB
下载 相关 举报
第五章 选择结构程序设计.ppt_第1页
第1页 / 共37页
第五章 选择结构程序设计.ppt_第2页
第2页 / 共37页
第五章 选择结构程序设计.ppt_第3页
第3页 / 共37页
第五章 选择结构程序设计.ppt_第4页
第4页 / 共37页
第五章 选择结构程序设计.ppt_第5页
第5页 / 共37页
点击查看更多>>
资源描述

1、一、关系运算符和表达式1、关系运算符 在程序中经常需要比较两个量的大小关系, 以决定程序下一步的工作。比较两个量的运算符称为关系运算符。 在语言中有以下关系运算符: 大于 = 大于或等于 = 等于 != 不等于 关系运算符都是双目运算符,其结合性均为左结合。 关系运算符的优先级低于算术运算符,高于赋值运算符。 在六个关系运算符中,,=的优先级相同,高于=和!=,=和!=的优先级相同。,第五章 选择结构程序设计,2、关系表达式 关系表达式的一般形式为: 表达式 关系运算符 表达式 例如:a+bc-d,x3/2 a+1(bc),a!=(c=d)等。关系表达式的值是“真”和“假”,用“1”和“0”表

2、示。 如: 50的值为“真”,即为1。 (a=3)(b=5)由于35不成立,故其值为假,即为0。,#include main() char c=k; int i=1,j=2,k=3; float x=3e+5,y=0.85; printf(%d,%dn,a+5=k+1); printf(%d,%dn,1j5,x-5.25b & cd等价于(ab) & (cd) !b=c|dc & x+yc) & (x+y)0 & 42 由于50为真,42也为真,&结果为真。 加速法则:若0&x,则x不进行运算。 2.或运算| 参与运算的两个量只要有一个为真,结果就为真。 两个量都为假时,结果为假。 例如:50

3、|58,由于50为真,|结果也就为真。 加速法则:若1|x,则x不进行运算。,3.非运算! 参与运算量为真时,结果为假;参与运算量为假时,结果为真。例如:!(50)的结果为假。 虽然编译在给出逻辑运算值时,以“1”代表“真”,“0 ”代表“假”。 但反过来在判断一个量是为“真”还是为“假”时,以“0”代表“假”,以非“0”的数值作为“真”。例如:由于5和3均为非“0”因此5&3的值为“真”,即为1。又如:5|0的值为“真”,即为1。,3、逻辑表达式 逻辑表达式的一般形式为: 表达式 逻辑运算符 表达式 其中的表达式可以又是逻辑表达式,从而组成了嵌套的情形。例如: (a&b)&c 根据逻辑运算符

4、的左结合性,上式也可写为: a&b&c 逻辑表达式的值是式中各种逻辑运算的最后值,以“1”和“0”分别代表“真”和“假”。,#include main() char c=k; int i=1,j=2,k=3; float x=3e+5,y=0.85; printf(%d,%dn,!x*!y,!x); printf(%d,%dn,x|i 本例中!x和!y分别为0,!x*!y也为0,故其输出值为0。由于x为非0,故!x的逻辑值为0。对x| i & j-3式,先计算j-3的值为非0,再求i & j-3的逻辑值为1,故x|i&j-3的逻辑值为 1。对ij&xy式,由于ij的值为1,而xb) a+; b

5、+; else a=0; b=10; ,5、语句的嵌套 当if语句中的执行语句又是if语句时,则构成了if 语句嵌套的情形。其一般形式可表示如下: if(表达式) if语句; 或者为 if(表达式) if语句; else if语句;,在嵌套内的if语句可能又是if-else型的,这将会出现多个if和多个else重叠的情况,这时要特别注意if和else的配对问题。例如: if(表达式1) if(表达式2) 语句1; else 语句2;,应该理解为: 还是应理解为: if(表达式1) if(表达式1) if(表达式2) if(表达式2) 语句1; 语句1; else 语句2; else 语句2;

6、为了避免这种二义性,语言规定,else 总是与它前面最近的if配对,因此对上述例子应按前一种情况理解。,#include main() int a,b; printf(please input A,B:); scanf(%d%d, 本例中用了if语句的嵌套结构。 采用嵌套结构实质上是为了进行多分支选择,实际上有三种选择即AB、A20|xx) printf(Good); else printf(Bad); C规定: else语句与它最近的一个if配对 若为了使else与if(x20|x20|xx) printf(Good); else printf(Bad);,. 可用阶梯式if-else-if

7、结构来实现多种条件的选择 阶梯式结构的一般形式为: if (表达式1) 语句1; else if (表达式2) 语句2; else if (表达式3) 语句3; . . else 语句n;这种结构是从上到下逐个对条件进行判断, 一旦发现条件满足就执行与它有关的语句, 并跳过其它剩余阶梯; 若没有一个条件满足, 则执行最后一个else语句n。最后这个else常起着缺省条件的作用。,四. 条件运算符和条件表达式1. 条件运算符 ? : 是 C语言唯一的一个三目运算符, 其功能为:若在 If 语句中,无论条件表达式为真或为假,均是用赋值语句对同一个变量赋值时,可用条件运算符处理。即? if (ab)

8、 max = a ; else max = b ; 等价于 max = (ab) ? a: b ;,2条件表达式一般形式是: ? : 求值过程是: 先求表达式1的值, 若为真, 则求表达式2 的值并把它作为整个表达式的值; 若表达式1 的值为假, 则求表达式3 的值并把它作为整个表达式的值。,3说明:,) 条件运算符的优先级,算术运算符关系运算符条件运算符赋值运算符,(高)(低),max = (ab) ? a : b ;与max = ab ? a : b ;等价,y= ab ? a : (b+1) ; 与 y = ab ? a : b+1 ;等价,2) 条件运算符的结合性: 自右向左,例: a

9、=1 , b=2 ,c=3 ,d=4, 则条件表达式a b ? a : c d ? c: d 的值为4,3) 条件表达式不能取代一般的 if 语句,只能取代if 语句中特殊的一种.例: if (a b) printf (%d, a); else printf (%d, b);可用 printf(%d, a b ? a: b );取代.,) 条件表达式中,表达式的类型可与表达式及不同,表达式和 表达式的类型也可不同,而条件表达式值的类型取表达式和中的较高者例:int x, y; x ? a:b 值为字符型 x y ? 1 : 1.5 值为实型,例:求a,b,c中的绝对值最大的数#include

10、#include main()float a,b,c,max;printf(“input three data:n”);scanf(“%f%f%f ”,一般形式为: switch(表达式) case 常量表达式1: 语句1或空; case 常量表达式2: 语句2或空; . . case 常量表达式n: 语句n或空; default: 语句n+1或空; 说明: 1.执行switch语句时, 将表达式的值逐个与case后的常量进行比较, 若与其中一个相等, 则执行该常量下的语句, 若不与任何一个常量相等, 则执行default 后面的语句。,五、 switch语句,2. switch中表达式与ca

11、se后的常量可为任何类型3. 每一个case后常量表达式的值必须互不相同,否则出现矛盾。4. 每个case或default后的语句可以是复合语句, 但不需要使用和括起来。执行完一个case后面语句后,流程控制转移到下一个case 继续执行因此,若想在不同情况下执行不同的语句,必须使用break语句。,break语句的功能:将程序流程控制跳出整个switch语句,执行switch语句的下一条语句,switch(grade) case A: printf(85100n);break; case B: printf(7084n); break; case C: printf(6069n); brea

12、k; case D: printf(60n); break; default: printf(Errorn);,6.多个 case 可共用一组执行语句例:,case A: case B: case C: printf(60n); break;,例:,选择结构程序设计举例,例: 将任意三个整数按从大到小的顺序输出。,#include stdio.hvoid main()int x,y,z,t;scanf(%d,%d,%d,例: 给一个不多于4位的正整数,求出它是几位数,逆序打印出各位数字。,#include stdio.hvoid main()int x,a,b,c,d; /*a,b,c,d代表

13、千位、百位、十位、个位*/scanf(%d,例: 任意输入三个数,判断能否构成三角形?若能构成三角形,是等边三角形、等腰三角形还是其它三角形?,#include stdio.hvoid main()float a,b,c;scanf(%f,%f,%f,例: 从键盘输入一个年份,判断是否是闰年。,#include stdio.hvoid main()int year; scanf(%d,1.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; case 3:a+;b+; printf(“a=%d,b=%dn”,a,b);,结果:a=2,b=1,课堂练习,2.程序填空: 以下程序判断输入的整数能否被3或7整除.main()int x,f=0;scanf( “%d”,

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

当前位置:首页 > 企业管理 > 经营企划

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报