《选择结构程序设计》由会员分享,可在线阅读,更多相关《选择结构程序设计(71页珍藏版)》请在金锄头文库上搜索。
1、 第第4 4章章选择结构程序设计选择结构程序设计 本章的目的是,学习选择结构程序的本章的目的是,学习选择结构程序的设计方法。设计方法。 关系运算符及关系运算表达式关系运算符及关系运算表达式4.1逻辑运算符及逻辑表达式逻辑运算符及逻辑表达式4.2选择语句选择语句4.3 选择结构程序设计选择结构程序设计4.4条件运算符条件运算符4.5小结小结4.64.1 4.1 关系运算符及关系运算表达关系运算符及关系运算表达式式关系运算符是用来确定一个量与另一关系运算符是用来确定一个量与另一个量之间的关系,主要是比较两个量的大个量之间的关系,主要是比较两个量的大小,所以关系运算符也叫做比较运算符。小,所以关系运
2、算符也叫做比较运算符。C语言提供语言提供6种关系运算符,如表种关系运算符,如表4-1所示。所示。 关系运算的结果是一个逻辑值。逻辑关系运算的结果是一个逻辑值。逻辑值是一种只有两个值的量:真和假。关系值是一种只有两个值的量:真和假。关系运算的结果成立,或者说为真(运算的结果成立,或者说为真(true),),则运算结果为则运算结果为1,也就是用,也就是用1表示真。比较表示真。比较的结果不成立,或者说为假(的结果不成立,或者说为假(false),则),则运算结果为运算结果为0,也就是用,也就是用0表示假。表示假。 在表在表4-1所示的所示的6种关系运算符中,前种关系运算符中,前4种(种(,=,5&!
3、(87)|2second否则,显示:否则,显示:first=second最后,显示:最后,显示:Alldone! 显然,这是一个有两个分支的程序。显然,这是一个有两个分支的程序。用图用图4-6所示的流程图说明编程的思想。所示的流程图说明编程的思想。 图图4-6 例例4-7程序的流程图程序的流程图 4.3.3多分支结构多分支结构如果在如果在if选择语句的一个或两个分支语选择语句的一个或两个分支语句中,还包含有句中,还包含有if语句,则称这种结构为语句,则称这种结构为“if语句的嵌套语句的嵌套”。利用。利用if语句的嵌套,可语句的嵌套,可以构成两个以上分支的多个分支的选择结以构成两个以上分支的多个
4、分支的选择结构程序。构程序。 其中常用的一种结构是,在其中常用的一种结构是,在else后面的后面的语句中包含有另一个语句中包含有另一个if语句,这种多分支选语句,这种多分支选择结构如图择结构如图4-7所示。图中用所示。图中用3个个if_else_if语语句组成了句组成了4个分支。我们也把这种语句组合个分支。我们也把这种语句组合称为称为if_else_if选择结构。选择结构。 图图4-7 if_else_if选择语句流程选择语句流程 一般情况下,只要在一个一般情况下,只要在一个if语句中包含语句中包含有另一个有另一个if语句就是语句就是if语句的嵌套,组成的语句的嵌套,组成的就是多分支的选择结构
5、程序。就是多分支的选择结构程序。 if(表达式表达式1)if(表达式表达式2)语句语句1else语句语句2elseif(表达式表达式3)语句语句3else语句语句4 图图4-8所示为这种分支结构的流程图。所示为这种分支结构的流程图。 图图4-8 多分支多分支if语句结构流程图语句结构流程图 C语言对语句在程序中书写形式没有语言对语句在程序中书写形式没有严格的要求。一行可以写多个语句,也可严格的要求。一行可以写多个语句,也可以把一个语句写在两行里。一个语句可以以把一个语句写在两行里。一个语句可以从一行的头开始写,也可以从一行的某个从一行的头开始写,也可以从一行的某个位置开始写。位置开始写。 为了
6、使嵌套结构清楚、醒目并避免产为了使嵌套结构清楚、醒目并避免产生错误的理解,建议各层嵌套的语句采用生错误的理解,建议各层嵌套的语句采用不同的缩进书写形式,如上面所写的那样。不同的缩进书写形式,如上面所写的那样。必要时,使用花括号也会使是程序的嵌套必要时,使用花括号也会使是程序的嵌套结构显示得更清晰。结构显示得更清晰。 4.3.4多分支开关语句多分支开关语句switchif语句是靠嵌套来实现多分支结构的。语句是靠嵌套来实现多分支结构的。多分支开关语句多分支开关语句switch则可以直接构成多则可以直接构成多个分支。在许多情况下,个分支。在许多情况下,switch语句非常语句非常适合构造多分支选择结
7、构程序。适合构造多分支选择结构程序。 switch语句的一般格式为:语句的一般格式为:switch(表达式表达式)case常量表达式常量表达式1:语句语句(块块)1break; case常量表达式常量表达式2: 语句语句(块块)2break; case常量表达式常量表达式n: 语句语句(块块)nbreak;default:语句语句(块块)n+1 语句中的语句中的switch,case和和default是语句是语句组成中的关键字。组成中的关键字。switch后面的后面的“(表达(表达式)式)”可以是任何类型,通常是字符型或可以是任何类型,通常是字符型或整型表达式。整型表达式。“常量表达式常量表达
8、式1”“常量表常量表达式达式n”是整型或字符型的。是整型或字符型的。 所有常量表达式的值必须是互不相同所有常量表达式的值必须是互不相同的。的。break语句和语句和default(特殊的(特殊的case)是)是任选的,任选的,switch语句中可不包含它们。语句中可不包含它们。Break语句的作用是结束语句的作用是结束switcn语句的执行。语句的执行。 Default的作用是,如果所有常量表达的作用是,如果所有常量表达式的值都与表达式的值不同,则执行语句式的值都与表达式的值不同,则执行语句(块)(块)n+1。语句(块)。语句(块)1语句(块)语句(块)n+1中的语句可以是任何语句。也可是另一
9、中的语句可以是任何语句。也可是另一个个switch语句,这种情况称为嵌套的语句,这种情况称为嵌套的swtch语句。语句。 首先,计算首先,计算switch后圆括号内的表达后圆括号内的表达式的值,然后,用这个值逐个与各式的值,然后,用这个值逐个与各case的的常量表达式常量表达式i的值进行比较。当找到与其相的值进行比较。当找到与其相等(匹配)的等(匹配)的case时,就执行该时,就执行该case中的语中的语句(块)句(块)i,如果在语句(块),如果在语句(块)i中有中有break语句,便退出该语句,便退出该switch语句。语句。 如果没有如果没有break语句,则在执行完某个语句,则在执行完某
10、个语句(块)语句(块)i后,连续执行其后的语句(块)后,连续执行其后的语句(块),直到遇上另一个,直到遇上另一个break语句,结束语句,结束switch的执行,或者一直执行到最后的语句(块)的执行,或者一直执行到最后的语句(块),然后,结束,然后,结束switch语句的执行。语句的执行。switch语句的上述功能如图语句的上述功能如图4-9所示。所示。 图图4-9 switch语句的流程语句的流程 default在语句中出现的次序,对程序在语句中出现的次序,对程序的执行结果是没有影响的。把的执行结果是没有影响的。把default放在放在语句的最后是一个好的习惯。语句的最后是一个好的习惯。 执
11、行完一个执行完一个case的语句后,只要没有的语句后,只要没有break语句,语句,switch语句就会自动执行下一语句就会自动执行下一个个case。因此,。因此,case中的中的break语句是根据语句是根据程序的需要选用的。程序的需要选用的。4.4 4.4 选择结构程序设计选择结构程序设计4.5 4.5 条件运算符条件运算符条件运算符由条件运算符由3个运算对象及两个符号个运算对象及两个符号“?”和和“:”组成。它的格式为:组成。它的格式为:EXP1?EXP2:EXP3这里这里EXP1,EXP2,EXP3是是3个表达式。个表达式。 第第1个表达式个表达式EXP1可以是任何类型的可以是任何类型
12、的表达式,其作用通常是被看作逻辑表达式,表达式,其作用通常是被看作逻辑表达式,即它的值理解为真(非即它的值理解为真(非0)或假()或假(0值)。值)。EXP2和和EXP3是两个类型相同的表达式。是两个类型相同的表达式。 由条件运算符组成的表达式叫做条件由条件运算符组成的表达式叫做条件运算表达式。运算表达式。 条件运算的功能是:如果表达式条件运算的功能是:如果表达式EXP1的值为真,则取表达式的值为真,则取表达式EXP2的值为条件运的值为条件运算表达式的值;如果表达式算表达式的值;如果表达式EXP1的值为的值为假,则取表达式假,则取表达式EXP3的值作为条件运算表的值作为条件运算表达式的值。条件
13、运算的流程如图达式的值。条件运算的流程如图4-11所示。所示。 图图4-11 条件运算符条件运算符“?”操作的流程操作的流程 从上述的功能看,条件运算符的作用,从上述的功能看,条件运算符的作用,很像如下的很像如下的if语句块:语句块:if(EXP1)EXP2;elseEXP3; 所以,利用条件运算符可以实现一些所以,利用条件运算符可以实现一些简单的分支。因此,条件运算表达式也称简单的分支。因此,条件运算表达式也称为分支表达式。为分支表达式。但必须注意到,在条件运算格式中,但必须注意到,在条件运算格式中,EXP1,EXP2和和EXP3必须是表达式,不能是语必须是表达式,不能是语句。句。 条件运算
14、符的优先级高于赋值运算,条件运算符的优先级高于赋值运算,低于算术运算符、关系运算符和逻辑运算低于算术运算符、关系运算符和逻辑运算符。结合性是自右向左的。符。结合性是自右向左的。小小 结结本章主要讲了以下几个问题:本章主要讲了以下几个问题:(1)关系运算符和关系运算表达式;)关系运算符和关系运算表达式;(2)逻辑运算符和逻辑运算表达式;)逻辑运算符和逻辑运算表达式; (3)条件运算符和条件运算表达式;)条件运算符和条件运算表达式;(4)构成选择结构语句和选择结构)构成选择结构语句和选择结构程序的设计。程序的设计。 对于逻辑运算和关系运算,要掌握各对于逻辑运算和关系运算,要掌握各运算符的写法,运算
15、规则,优先级及结合运算符的写法,运算规则,优先级及结合性等。对于性等。对于if语句语句switch语句,除了牢记它语句,除了牢记它们的书写格式和功能外,要通过例题学习、们的书写格式和功能外,要通过例题学习、做习题和上机操作,掌握解题(编程)的做习题和上机操作,掌握解题(编程)的思路,能举一反三。不要死记硬背。思路,能举一反三。不要死记硬背。 在程序设计的学习中,从一开始就养在程序设计的学习中,从一开始就养成一个良好编程习惯,是很重要的。首先成一个良好编程习惯,是很重要的。首先是严紧,每个语句都有严格、明确的语法是严紧,每个语句都有严格、明确的语法格式,语句中不允许有一点不符合语法的格式,语句中不允许有一点不符合语法的地方。地方。 其次,书写程序要结构清晰,要养成其次,书写程序要结构清晰,要养成使用缩进格式和正确使用花括号的习惯。使用缩进格式和正确使用花括号的习惯。这不仅使程序思想条理清楚,也能避免程这不仅使程序思想条理清楚,也能避免程序中的许多容易发生的错误。序中的许多容易发生的错误。