收藏 分销(赏)

第4章-选择结构.ppt

上传人:二*** 文档编号:12786216 上传时间:2025-12-07 格式:PPT 页数:43 大小:653KB 下载积分:5 金币
下载 相关 举报
第4章-选择结构.ppt_第1页
第1页 / 共43页
本文档共43页,全文阅读请下载到手机保存,查看更方便
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第,4,章 选择结构,本章要点,:,4.1,关系运算和逻辑运算,4.2 if,语句和用,if,语句构成的选择结构,4.3,条件表达式构成的选择结构,4.5,语句标号和,goto,语句,4.1,关系运算和逻辑运算,4.1.1 C,语言中的逻辑值,C,语言中,参与逻辑运算的量为非零值或整数零,非零值和整数零分别表示运算量为“真”或“假”。逻辑运算的结果值,即逻辑表达式的值应该是一个逻辑值“真”或“假”。,C,语言编译系统在给出逻辑运算结果时,以数值,1,代表“真”,以,0,代表“假”,但在判断一个量是否为“真”时,以,0,代表“假”,以非,0,代表“真”。,4.1.2,关系运算符和关系表达式,关系运算实际上就是“比较运算”,将两个数进行比较,判断比较的结果是否符合指定的条件。,1,关系运算符,关于关系运算符的说明:,(,1,)表,4-1,中前,4,种运算符(,、,、,=,)的优先级别相同,后两种也相同。前,4,种优先级别高于后两种。如,“,”,优先级别高于“,!=”,。,(,2,)关系运算符与算术运算符、赋值运算符的优先级关系如下:,算术运算符(高),关系运算符(中),赋值运算符(低),即:算术运算符优先级别高于关系运算符,关系运算符优先级别又高于赋值运算符。,(,3,)关系运算符的结合方向是“自左向右”。,C,语言有六种关系运算符,如表,4-1,所示。,表,4.1 C,语言中的关系运算符,运算符,名称,优先次序,小于,优先级相同(高),大于,=,大于或等于,=,(连续两个,=,),等于,优先级相同(低),!=,不等于,2,关系表达式及关系表达式的值,用关系运算符将两个表达式(算术表达式、关系表达式、逻辑表达式、赋值表达式、字符表达式等)连接起来的式子,称关系表达式。例如,,a=b,,,a=c,等。,在,C,语言中,关系表达式的结果值为,1,或,0,。当关系表达式成立时,其结果值为,1,,否则,其值为,0,。若,a=10,b=6,表达式,a=b,为“真“,其值为,1,。,当关系运算符两边的值类型不一致时,系统将自动进行转换。转换规则与双目运算中的类型转换规则相同。,关系运算示例:,试求,x=531,的值。,分析:,x=531,相当于:,x=(53)1,=11,=0,故,x,的值为,0,。,关系表达式主要用于选择结构中的条件判断。,重点提示,:,表示“等于”关系的运算符“,=”,和“不等于”关系的运算符“,!=”,与数学中的表示方法不同。在使用它们时请予以注意,以免写错关系运算符而导致错误的结果。例如,欲判断,x,是否等于,0,,如果写成:,x=0,就不是判断,x,是否等于,0,的含义了,而成了把,0,赋值给变量,x,。正确的写法应为:,x=0,。,4.1.3,逻辑运算符和逻辑表达式,1,C,语言中的逻辑运算符,关系表达式只适于描述单一的条件,对于较复杂的复合条件就需要将若干个关系表达式连接起来才能描述,如描述“,x,大于,0,且不等于,2”,,就需要将两个关系表达式,x0,和,x!=2,连接起来:,x0&x!=2,。其中“,&”,是,C,语言中的逻辑运算符。,C,语言提供了三种逻辑运算符,如表,4.2,所示。,表,4.2 C,语言中的逻辑运算符,运算符,名称,示例,示例说明,说明,优先次序,!,逻辑非,!a,a,非,单目运算符,高,低,&,逻辑与,a&b,a,与,b,双目运算符,|,逻辑或,a|b,a,或,b,双目运算符,关于逻辑运算符的说明:,(,1,)逻辑运算符的优先次序如下:,!,(高),&,(中),|,(低),(,2,)逻辑运算符具有自左向右的结合性,(,3,)逻辑运算符与赋值运算符、关系运算符、算术运算符的优先次序如下:(由高到低),!(逻辑非),算术运算,关系运算,&,(逻辑与),|,(逻辑或),赋值运算,例如:,a=b)&(xy),可以写为:,a=b&xy,(a=b)|(x=y),可以写为:,a=b|x=y,(!a)|(a=b),可以写为:,!a|a=b,2,逻辑表达式和逻辑表达式的值,用逻辑运算符将关系表达式或逻辑值连接起来的式子称逻辑表达式。一个逻辑表达式中可以包含多个逻辑运算符,如,xy&a=5&2|6=5,,在关系运算符,=,两侧的,8,和,5,作为数值参加关系运算,,8=5,的值为,1,。,再进行,1&2|65-!0,运算。自左至右扫描求解,,&,两侧的,1,和,2,作为逻辑运算对象,因为参加运算的皆为非,0,,故结果为,1,。,接下来进行,1|65-!0,运算。,6,的左侧为,|,运算符,右侧为,运算符,根据优先级别,应先进行,的运算。即先进行,65-!0,运算。现在,5,的左侧为,运算符,右侧为,-,运算符,而,-,优先于,,因此,应先进行,5-!0,的运算。又由于,!,的优先级别最高,故先进行,!0,的运算,得结果,1,。,然后进行,5-1,运算。得结果为,4,。,下面再进行,6b),printf(%d%dn,a,b);,else,printf(%d%dn,a,b);,else,printf(%d=%dn,a,b);,程序运行结果为:,Please enter two integers:,3,57,357,Please enter two integers:,9,-6,9-6,Please enter two integers:,456,456,456=456,里层的,ifelse,语句是外层条件语句,if,下的嵌套语句,它虽然占据多个书写行,却不是复合语句,可以作为一个语句看待,因此无须用一对大括号括起来。,重点提示,:,在嵌套内的,if,语句既可以是,if,语句形式也可以是,ifelse,语句形式,这就会出现多个,if,和多个,else,重叠的情况。此时要特别注意,if,和,else,的配对问题。,if,和,else,配对规则为:,else,总是与它前一个最近的,if,配对。,4.3,条件表达式构成的选择结构,对于有些选择分支结构,,C,语言另外还提供了一个特殊的运算符,条件运算符,由此构成的表达式也可以形成简单的选择结构,这种选择结构能以表达式的形式内嵌在允许出现表达式的地方,使得可以根据不同的条件使用不同的数据参与运算。,1,条件运算符,条件运算符由两个符号“,?”,和“,:”,组成,要求有,3,个操作对象,称三目(元)运算符,它是,C,语言中唯一的三目运算符。,2,条件表达式,条件表达式的一般形式为:,表达式,1,?表达式,2,:表达式,3,它的执行过程如图,4.5,所示。以下是几点说明:,(,1,)通过情况下,表达式,1,是关系表达式或逻辑表达式,用于描述条件表达式中的条件,表达式,2,和表达式,3,可以是常量、变量或表达式。,(,2,)条件表达式的执行顺序为:先求解表达式,1,,若值为非,0,,表示条件为真,则求解表达式,2,,此时表达式,2,的值就作为整个条件表达式的值;若表达式,1,的值为,0,,表示条件为假,则求解表达式,3,,表达式,3,的值就是整个条件表达式的值。,(,3,)在程序中,通过把条件表达式的值直接赋予某个变量。,例如:,min=(a0?1:x0?1:(x60n);,break;,在,A,、,B,两种情况下,均执行相同的语句,即输出“,60”,。,(,5,)在,switch,语句中,只有最后一个分支(,default,)中的,break,语句的存在于否不影响执行结果。因为没有这个,break,语句,执行该分支的所有语句后也会自动退出,switch,语句。而其余各分支中的,break,语句有与无时的流程是完全不同的。例如在上例中,如果,caseA,、,B,后面没有,break,语句,则当,grade=A,时,程序从,printf(85,100n),开始执行,输出结果为:,85,100,70,84,error,这是因为,case,后面的常量表达式实际上只起语句标号作用,而不起条件判断作用,即“只是开始执行处的入口标号”。因此,一旦与,switch,后面圆括号中表达式的值匹配,就从此标号处开始执行,而且执行完一个,case,后面的语句后,若没遇到,break,语句,就自动进入下一个,case,继续执行,而不再判断是否与之匹配,直到遇到,break,语句才停止执行,退出,break,语句。因此,若想执行一个,case,分支后立即跳出,switch,语句,就必须在此分支的最后添加一个,break,语句。,重点提示,:,在,switch,语句中,,default,总是放在最后,这时,,default,后不需要,break,语句。因此只有最后一个分支(,default,)中的,break,语句的存在于否不影响执行结果。,4.5,语句标号和,goto,语句,4.5.1,语句标号,在,C,语言中,语句标号不必特殊加以定义,标号可以是任意合法的标识符,当在标识符后面加一个冒号,该标识符就成为一个语句标号。如,student:,等。注意,,C,语言中,语句标号必须是标识符,而不能是数值常量形式,标号可以和变量同名。,通常,标号用作,goto,语句的转向目标。如:,goto state;,C,语言中,可以在任何语句前加上语句标号,如:,state:printf(“endn”);,4.5.2 goto,语句,goto,语句称为无条件转向语句,,goto,语句的一般形式为:,goto,语句标号,goto,语句的作用是把程序的执行转向语句标号所在的位置,这个语句标号必须与此,goto,语句同在一个函数内。,重点提示:,滥用,goto,语句将使得程序的流程毫无规律,可读性差,对于初学者来说应尽量不采用。,
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 环境建筑 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服