收藏 分享(赏)

计算机二级C语言辅导_第四章.ppt

上传人:gnk289057 文档编号:10249238 上传时间:2019-10-25 格式:PPT 页数:39 大小:306.50KB
下载 相关 举报
计算机二级C语言辅导_第四章.ppt_第1页
第1页 / 共39页
计算机二级C语言辅导_第四章.ppt_第2页
第2页 / 共39页
计算机二级C语言辅导_第四章.ppt_第3页
第3页 / 共39页
计算机二级C语言辅导_第四章.ppt_第4页
第4页 / 共39页
计算机二级C语言辅导_第四章.ppt_第5页
第5页 / 共39页
点击查看更多>>
资源描述

1、第四章,选择结构,4.1.1 关系运算符,C语言有6种关系运算符:、=、=、!= 关系成立:关系运算的值为1(表示逻辑真); 关系不成立:关系运算的值为0(表示逻辑假)。 例如:53 值为15=3 值为05=3 值为05!=3 值为1,例如:1.0/3.0 *3.0= =1.0 ?由于1.0/3.0得到的值用有限位保存,是近似值,所以1.0/3.0*3.01.0。,注意:浮点数是用近似值表示的。 “= =”用于两个浮点数的判断时,由于存储误差,会得出错误的结果。,4.1.2关系表达式 1、 关系表达式的构成 关系表达式是用关系运算符将两个表达式连接起来,进行关系运算的式子。例如:a+bb+c

2、比较两个算术表达式的值a=2*b 比较变量的值和算术表达式的值ab 比较两个字符ASCII码值,关系表达式,2、 关系运算符的优先级 (1)和=为同一级,= =和!=为同一级。前者优先级高于后者。 (2)关系运算符优先级低于算术运算符。 例如:a+bb+c等效于(a+b) (b+c)。(2+a)= =(b-a)等效于2+a= =b-a。,3、 关系运算符的结合律C语言规定关系表达式采取左结合律。表达式中出现优先级别为同一级别的运算符时,按从左到右结合方向处理。例如:int a=2,b=3,c=1ab32先计算63,结果是1,再计算12,关系表达式的值为:1,关系表达式,4.1.3逻辑运算符,C

3、语言没有逻辑类型数据,进行逻辑判断时: 数据的值为非0,则认作逻辑真, 数据的值为0,则认作逻辑假; 而逻辑表达式的值为真,则用整形数1表示。 逻辑表达式的值为假,则用整形数0表示。,逻辑运算符有3个:!、& 、 | | 表示逻辑非、逻辑与、逻辑或运算。注:由于C语言依据判断数据是否为非0或0来判断逻辑真和逻辑假,所以逻辑运算的操作数类型可以是字符型、整型或浮点型。,1、 逻辑非 !逻辑非是单目运算符(也就是说参加运算的操作数只有一个)。 若操作数本身的值为0,逻辑非运算后的结果为1(逻辑真) 当操作数值为非0时,逻辑非运算的结果为0。 例如:int a=5,b=3; !a 结果为0,即a为非

4、0。!(ab) 结果为1。因为ab的值为0,即取ab的非。,2、 逻辑与 & 逻辑与是双目运算(也就是说参加运算的操作数有两个),当参加逻辑与运算的两个操作数值均为非0(逻辑真)时,结果才为真;否则为0(逻辑假)。 例如: int a=5,b=3; a & b 结果为l,即a与b均不为0。 (a0) 结果为0,因为ab的值为0。,3、 逻辑或 | |逻辑或也是双目运算,参加或运算的两个操作数中,只要有一个操作数值为非0(逻辑真),结果就为l(逻辑真);否则为0(逻辑假)。 例如: int a=5,b=3; a | | b 结果为l。 (a0) 结果为l,因为a0的值为l。,在谈到逻辑运算时,我

5、们常用一个真值表来表示,如下:,为理解与、或、非的含义,引入三个电路,如图所示。,在上图中,我们给出三个指示灯的控制电路,根据串、并联电路的工作原理,我们可以得出:,在图(a)中,只有当两个常开按钮同时按下时,指示灯才会亮;与 在图(b)中,只要两个常开按钮中任何一个按下,指示灯都会亮;或 在图(c)中,没有按按钮时,电路是接通的,所以指示灯亮,按下按钮时,指示灯反而不亮。 非,逻辑表达式,1、 逻辑运算表达式的构成 用逻辑运算符将表达式连接起来就构成了逻辑表达式。例如, !(ab) 对关系表达式的值取非 (ab)&(bc) 对两个关系表达式进行逻辑与运算 (ab)&(bc)| |(b=0),

6、2、 逻辑运算符优先级,C语言逻辑运算符的优先级规定如下:,优先级顺序为!&| |。, ! 高于算术运算符,&,| |低于关系运算符。,3、 逻辑运算符的结合律,C语言逻辑运算符采用左结合律。表达式中出现优先级别为同一级别的运算符时,按从左到右的结合方向处理。例如: a&b&c 计算顺序为从左自右,即:(a&b)&c。,4、 C语言逻辑表达式的特性,在多个&运算符相连的表达式中,计算从左至右进行时,若遇到运算符左边的操作数为0(逻辑假),则停止运算。因为此时已经可以断定逻辑表达式结果为假。 在多个|运算符相连的表达式中,计算从左至右进行时,若遇到运算符左边的操作数为l(逻辑真),则停止运算,因

7、为已经可以断定逻辑表达式结果为真。,4.2 if条件语句,择条件语句 if,if语句的说明,条件运算符,4.2选择型程序设计 if语句的三种形式 形式一: 格式:if (表达式) 语句1语句2 执行过程:,例:if (xy)printf(“%d”,x);x=y;,形式二: 格式:if (表达式) 语句1else语句2语句3 执行过程:,例:if (xy) max=x;else max=y;x=y;,形式三: 格式:,if ( 表达式1 ) 语句1 else if (表达式2 ) 语句2 else if (表达式3 ) 语句3 . else 语句,执行过程:,例:if (x1000) y=0.4

8、; else if (x800) y=0.3;else if (x600) y=0.2;else if (x400) y=0.1;else y=0;,如:if(a=b,说明1: if后面的表达式类型任意,if(x) if(x!=0)if(!x) if(x=0) 语句可以是复合语句,例 考虑下面程序的输出结果: #include main() int x,y;scanf(“%d,%d”, ,错误!,在if 语句和else语句中若 有多个操作语句,则应 用花括号 将它们括起 成为一个复合语句。,补足程序段-1,输入两个整数,按从小到大的顺序 输出它们。,t=a; a=b; b=t;,条件语句举例-

9、2,输入三个整数,按从小到大的顺序 输出它们。,#include main( ) int a, b, c, t;scanf(“%d, %d, %d“, ,t=a; a=b; b=t;,t=a; a=c; c=t;,t=b; b=c; c=t;,4.3 条件运算符和条件表达式,C语言提供了一个可以代替某些if-else语句的简便易用的操作符“?”和“:”,该操作符是三目运算符,其一般形式是:表达式1 ?表达式2:表达式3操作符?的作用:在计算表达式1之后, 如果数值为true(真),则计算表达式2,并将结果作为整个表达式的数值; 如果表达式1的值为false(假),则计算表达式3的 值,并以它的

10、结果作为整个表达式的值。,例:x=10;if (x9) y=100;else y=200; 可以用下面的条件运算符来处理:x=10;y=(x9)?100:200;,注意: 条件运算符要求有3个操作对象。 条件运算符的优先级别比关系运算符和算术运算符都低。因此y=(x9)?100:200 括号可以不要,可写成y=x9?100:200如果有 ab?a:b+1 相当于ab?a:(b+1),而不相当于(ab?a:b)+1条件运算符的结合方向为“自右向左”。如:ab?a:cd?c:d 相当于: ab?a:(cd?c:d) 如果a=1,b=2,c=3,d=4,则条件表达式的值等于4。,Switch语句,s

11、witch语句是一种分支控制语句。特点:是可以根据一个表达式的多种值,选择多个分支,因而也称为分情况语句和开关语句。实际问题中常常需要用到多分支结构,例如,学生成绩分档次(85分以上为“A”等,7084分为“B”等,6069分为“C”等)。,Switch语句,执行过程:,switch(表达式) case 常量1:语句1; case 常量2:语句2; case 常量n:语句n; default: 语句n+1; ,当“表达式”=“常量表达式1”时, 从“语句1”开始执行;,当“表达式”=“常量表达式2”时, 从“语句2”开始执行;,当“表达式”=其它值时,从“语句n+1”开始执行;,Switch语

12、句中使用break语句:,switch (表达式) case 常量1 : 语句系列1;break;case 常量2 : 语句系列2;break;case 常量m : 语句系列m;break;default : 语句系列m+1;,执行过程:,main() char s;scanf(“%c”,输入“C”,求输出结果。,结果:606960错误输入,?!,main() char s;scanf(“%c”,我的成绩应该是6069!,什么!“60”? “错误输入”?怎么会这样?!,不好意思,我属于C级!,运行结果:606960错误输入,解决方法break语句: main() char s;scanf(“%

13、c”,这才差不多!,break!,运行结果:6069,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); ,说明 1、每个case常量表达式的值必须互不相同,否则会出现互相矛盾的结果。 2、允许多个case共用一个执行语句。,求程序运行结果。,结果:a=2,b=1。,如果x=2?,结果:a=1,b=1,如果x=3?,结果:a=1,b=1,Swi

14、tch语句,常量1,常量2,常量n是常量表达式,且值必须互不相同 case后可包含多个可执行语句,且不必加 switch可嵌套 多个case可共用一组执行语句 当每一个case语句后均有break语句时,case出现的次序不影响执行结果。(default总是放在最后,这时,deafult后不需要break语句)。,说明:,#include main() int xscanf(“%d“, ,x/10,例:,设有语句:int a=1,b=0;则执行下面语句后输出为( ) switch(a) case 1 :switch(b):case 0 : printf(“*0*”);break;case 1

15、:printf(“*1*”);break;case 2 : printf(“*2*”);break; ,A. *0* B.*0*2* C.*0*1*2* D.错误,B.*0*2*,B,goto语句,功能,将控制执行权转移到指定的语句标号处。,格式,goto 语句标号;,语句标号,用标识符表示转移语句的入口目的 地址。不能用整数作语句标号。,举例,goto max; max: x=,loop: if (x=0) n+; sum+=x;scanf(“%f”, ,用goto语句构成循环,使用goto的原则,使用之后,程序仍然是单入口,单出口 不要使用一个以上的标号 不要用goto往回跳,要向下跳 不要让goto制造出永远不会被执行的代码 重点提示:滥用goto语句将使得程序的流程毫无规律,可读性差,对于初学者来说应尽量不采用。,

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

当前位置:首页 > 企业管理 > 管理学资料

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


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

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

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