全国计算机等级考试实用应试教程二级c语言_第4章__选择结构

上传人:j7****6 文档编号:61624369 上传时间:2018-12-07 格式:PPT 页数:43 大小:386.50KB
返回 下载 相关 举报
全国计算机等级考试实用应试教程二级c语言_第4章__选择结构_第1页
第1页 / 共43页
全国计算机等级考试实用应试教程二级c语言_第4章__选择结构_第2页
第2页 / 共43页
全国计算机等级考试实用应试教程二级c语言_第4章__选择结构_第3页
第3页 / 共43页
全国计算机等级考试实用应试教程二级c语言_第4章__选择结构_第4页
第4页 / 共43页
全国计算机等级考试实用应试教程二级c语言_第4章__选择结构_第5页
第5页 / 共43页
点击查看更多>>
资源描述

《全国计算机等级考试实用应试教程二级c语言_第4章__选择结构》由会员分享,可在线阅读,更多相关《全国计算机等级考试实用应试教程二级c语言_第4章__选择结构(43页珍藏版)》请在金锄头文库上搜索。

1、第4章 选择结构,本章要点: 4.1 关系运算和逻辑运算 4.2 if语句和用if语句构成的选择结构 4.3 条件表达式构成的选择结构 4.4 switch语句以及用switch语句和break语句构成的选择结构 4.5 语句标号和goto语句,4.1 关系运算和逻辑运算,4.1.1 C语言中的逻辑值 C语言中,参与逻辑运算的量为非零值或整数零,非零值和整数零分别表示运算量为“真”或“假”。逻辑运算的结果值,即逻辑表达式的值应该是一个逻辑值“真”或“假”。C语言编译系统在给出逻辑运算结果时,以数值1代表“真”,以0代表“假”,但在判断一个量是否为“真”时,以0代表“假”,以非0代表“真”。,4

2、.1.2 关系运算符和关系表达式 关系运算实际上就是“比较运算”,将两个数进行比较,判断比较的结果是否符合指定的条件。 1关系运算符 关于关系运算符的说明: (1)表4-1中前4种运算符(、=)的优先级别相同,后两种也相同。前4种优先级别高于后两种。如,“”优先级别高于“!=”。 (2)关系运算符与算术运算符、赋值运算符的优先级关系如下: 算术运算符(高)关系运算符(中)赋值运算符(低) 即:算术运算符优先级别高于关系运算符,关系运算符优先级别又高于赋值运算符。 (3)关系运算符的结合方向是“自左向右”。,C语言有六种关系运算符,如表4-1所示。 表4.1 C语言中的关系运算符,2关系表达式及

3、关系表达式的值 用关系运算符将两个表达式(算术表达式、关系表达式、逻辑表达式、赋值表达式、字符表达式等)连接起来的式子,称关系表达式。例如,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。 关系表达式主要用于选择结构中的条件判断。 重点提示:表示“等于”关系的运算符“= =”和

4、“不等于”关系的运算符“!=”与数学中的表示方法不同。在使用它们时请予以注意,以免写错关系运算符而导致错误的结果。例如,欲判断x是否等于0,如果写成:x=0就不是判断x是否等于0的含义了,而成了把0赋值给变量x。正确的写法应为:x= =0。,4.1.3 逻辑运算符和逻辑表达式 1C语言中的逻辑运算符 关系表达式只适于描述单一的条件,对于较复杂的复合条件就需要将若干个关系表达式连接起来才能描述,如描述“x大于0且不等于2”,就需要将两个关系表达式x0和x!=2连接起来:x0&x!=2。其中“&”是C语言中的逻辑运算符。C语言提供了三种逻辑运算符,如表4.2所示。,表4.2 C语言中的逻辑运算符,

5、关于逻辑运算符的说明: (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=b-!c 参与逻辑运算的

6、量为非零值或整数零,非零值和整数零分别表示运算量为“真”或“假”。逻辑运算的结果值,即逻辑表达式的值应该是一个逻辑值“真”或“假”,即为“1”或“0”。,表4.3为逻辑运算的运算规则表。用它表示当a和b的值为不同组合时,各种逻辑运算所得到的值。,以下是关于逻辑运算的几点说明: (1)参与逻辑运算的量不但可以是0和1,或者是0和非零的整数,也可以是任何类型的数据,如字符型、实型或指针型等。但最终以0和非0来判定它们属于“真”或“假”。 (2)在逻辑表达式求解中,并不是所有逻辑运算符都需要执行,有时只需执行一部分运算符就可得出逻辑表达式的最后结果。例如x&y&z,只有x为真时才需要判断y的真假,若

7、x为假,则立即得出整个表达式为假。 (3)逻辑表达式的运用场合与关系表达式完全相同,也是用于流程控制语句中的条件描述。只不过,关系表达式描述的是单一的条件,逻辑表达式描述的是复合的条件。,(4)在处理一个复杂表达式时,对于表达式中不同位置上出现的数值,应区分哪些是作为数值运算或关系运算的对象,哪些作为逻辑运算的对象。例如求下列表达式的值: 8=5&2|6=5,在关系运算符=两侧的8和5作为数值参加关系运算,8=5的值为1。 再进行1&2|65-!0运算。自左至右扫描求解,&两侧的1和2作为逻辑运算对象,因为参加运算的皆为非0,故结果为1。 接下来进行1|65-!0运算。6的左侧为|运算符,右侧

8、为运算符,根据优先级别,应先进行的运算。即先进行65-!0运算。现在5的左侧为运算符,右侧为-运算符,而-优先于,因此,应先进行5-!0的运算。又由于!的优先级别最高,故先进行!0的运算,得结果1。, 然后进行5-1运算。得结果为4。 下面再进行64运算。得结果为0。 最后进行1|0运算。得到1。 故表达式的值为1。 重点提示:在逻辑表达式求解中,并不是所有逻辑运算符都需要执行,有时只需执行一部分运算符就可得出逻辑表达式的最后结果。,4.2 if语句和用if语句构成的选择结构 4.2.1 if语句 if语句是选择结构的一种形式,又称为条件分支语句。它的流程控制方式是:根据给定的条件进行判定,由

9、判定的结果(真或假)决定执行给出的两种操作之一。C语言中提供了三种形式的if语句:不含else的if语句、ifelse语句和ifelseif语句。 1不含else的if语句,(1)语句形式如下: if(表达式) 语句 圆括号中的表达式一般是关系表达式或逻辑表达式,用于描述选择结构的条件,但也可以是其他任意的数值类型表达式,包括整型、实型、字符型等。如果在if子句中需要多个语句,则应该使用大括号“”把一组语句组成复合语句。 (2)执行过程 首先计算if后面圆括号中的表达式的值,若为非0值,则执行语句1,然后脱离本选择结构,继续执行if语句的下一个语句;否则不执行语句1,直接转去执行if语句的下一

10、个语句。,图4-1 if语句程序流程图,图4.2 if-else语句执行过程,2if-else语句 (1)语法形式如下: if(表达式) 语句1; else 语句2; 语句1称为if子句,语句2称为else子句,这些子句只允许是一条语句,若需要多条语句时,则应该使用“”将这些语句括起来组成复合语句。另外要注意,else不是一条独立的语句,它只是if语句的一部分,因此在程序中else必须与if配对。 (2)执行过程 首先计算圆括号内的表达式值,若为非0值,则执行语句1,然后脱离本选择结构,继续执行if语句的下一个语句;否则执行语句2,然后脱离本选择结构,继续执行if语句的下一个语句 。,3if-

11、else-if语句 (1)语法形式如下: if(表达式1) 语句1; else if(表达式2) 语句2; else if(表达式3) 语句3; else if(表达式n-1) 语句n-1; else 语句n;,(2)执行过程 若表达式1为真,执行语句1,否则进行下一步判断;若表达式2为真,执行语句2,否则进行下一步判断;最后所有表达式都为假时,执行语句n。if-else-if语句的执行过程如图4-3所示。,重点提示:使用ifelseif语句时,请注意各个分支结构的条件一定要按照某种顺序书写。这样做不仅使程序条理清晰,而且能使条件书写简捷,不易出错。,4.2.2 嵌套的if语句 在if语句中又

12、包含一个或多个if语句称为if语句的嵌套。以下是C语言中ifelse语句的二重嵌套的三种形式。 (1)在if子句中嵌套具有else子句的if语句,如图4.4(a)所示 (2)在if子句中嵌套不含else子句的if语句,如图4.4(b)所示 (3)在else子句中嵌套if语句,如图4.4(c)所示。,图4.4 嵌套的if语句结构,如果把嵌套写成如下形式: if(表达式1) if(表达式2) 语句1; else 语句2; 程序设计者把else与第一个if书写在同一列,试图以此表示它们的匹配的。但是,根据if和else配对规则,else却是与第二个if配对(因为离它最近)。由此可见,C语言不是以书写

13、格式来分隔语句的,而是由逻辑关系决定的。 当if和else的数目不等时,为了保险起见,也可以用一对大括号括起来确定配对关系。,可作如下处理: if(表达式1) if(表达式2) 语句1; else 语句2;,例如:从键盘输入两个整数,试比较它们的大小。 main() int a,b; printf(“Please enter two integers:n“); scanf(“%d,%d“, ,程序运行结果为: Please enter two integers: 3,57 3 9-6 Please enter two integers: 456,456 456= =456 里层的ifelse语

14、句是外层条件语句if下的嵌套语句,它虽然占据多个书写行,却不是复合语句,可以作为一个语句看待,因此无须用一对大括号括起来。 重点提示:在嵌套内的if语句既可以是if语句形式也可以是ifelse语句形式,这就会出现多个if和多个else重叠的情况。此时要特别注意if和else的配对问题。if和else配对规则为:else总是与它前一个最近的if配对。,4.3 条件表达式构成的选择结构 对于有些选择分支结构,C语言另外还提供了一个特殊的运算符条件运算符,由此构成的表达式也可以形成简单的选择结构,这种选择结构能以表达式的形式内嵌在允许出现表达式的地方,使得可以根据不同的条件使用不同的数据参与运算。,

15、1条件运算符 条件运算符由两个符号“?”和“:”组成,要求有3个操作对象,称三目(元)运算符,它是C语言中唯一的三目运算符。 2条件表达式 条件表达式的一般形式为: 表达式1?表达式2:表达式3,它的执行过程如图4.5所示。以下是几点说明: (1)通过情况下,表达式1是关系表达式或逻辑表达式,用于描述条件表达式中的条件,表达式2和表达式3可以是常量、变量或表达式。 (2)条件表达式的执行顺序为:先求解表达式1,若值为非0,表示条件为真,则求解表达式2,此时表达式2的值就作为整个条件表达式的值;若表达式1的值为0,表示条件为假,则求解表达式3,表达式3的值就是整个条件表达式的值。,(3)在程序中

16、,通过把条件表达式的值直接赋予某个变量。例如: min=(a0?1:x0?1:(x0?-1:0)。,其作用是判断x的符号情况。当x为正数时,该条件表达式的值为1;当x为负数时,该条件表达式的值为-1;当x为0时,该条件表达式的值为0。 (7)条件表达式不能取代一般的if语句,仅当if语句中内嵌的语句为赋值语句(且两个分支都给同一变量赋值)时才能代替if语句。 (8)表达式1、表达式2、表达式3的类型可以不同。此时条件表达式的值的类型为它们中较高的类型。,重点提示:条件表达式的执行顺序为:先求解表达式1,若值为非0,则此时表达式2的值就作为整个条件表达式的值;反之,则表达式3的值就是整个条件表达式的值。,4.4 switch语句以及用switch语句和break语句构成的选择结构,4.4.1 switch语句 通过前面的讨论我们知道,if语

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

当前位置:首页 > 生活休闲 > 社会民生

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