C程序设计第6章选择结构程序设计.ppt_第1页
C程序设计第6章选择结构程序设计.ppt_第2页
C程序设计第6章选择结构程序设计.ppt_第3页
C程序设计第6章选择结构程序设计.ppt_第4页
C程序设计第6章选择结构程序设计.ppt_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第6章 选择结构程序设计,选择结构的N-S流程图如图6.1所示。,图6.1 选择结构的N-S流程图,P为选择的条件,对于执行A还是B要根据条件P的判断结果来决定,如果条件P的结果为真则执行A,如果条件P的结果为假则执行B。这里条件P的结果就成为执行A还是B的关键所在。P是一个判断的条件,其结果为真或者假,将其称为“逻辑量”。C语言中没有提供逻辑型变量,可以使用整型数据去描述1表示真,0表示假。在C语言中任意确定的值都可作为逻辑量处理,当作为逻辑量处理时,如果该值为非0,则表示真(1),如果该值为0,则表示假(0)。下面讲述条件P的逻辑量表示方法。,6.1 逻辑量的表示方法 6.2 if语句 6

2、.3 switch语句 6.4 选择结构程序设计举例,6.1 逻辑量的表示方法 C语言中逻辑量是用整型数据来表示的,用来表示真或成立,用来表示假或不成立。逻辑量的表示是非常灵活的,具体表示方法有以下几种方式。,6.1.1 关系表达式,1关系运算符 关系运算是一种比较运算符两侧运算对象大小的运算,完成两个运算对象比较,运算结果为成立与不成立,用1和0表示。 关系运算符有以下6种: ,=,=,=,!= 关系运算符是双目运算符。其中前4种的优先级相同但要高于后2种,后2种优先级相同。所有6种运算符的优先级都高于赋值运算符,但都低于算术运算符。此6种关系型运算符均为左结合性。,2关系表达式 用关系运算

3、符将运算对象连接起来的合乎C语言规则的表达式称为关系表达式。 例如: ab,3+7!=10,aa a+(b=a+) 都是合法的C语言关系表达式。 关系表达式的求解遵循表达式求解规则,关系运算的结果只有两种可能,要么关系成立为真(1),要么关系不成立为假(0)。,例如有整型变量a,b,且a3,b5, 求解表达式:aba 算术运算符“”的优先级高于关系运算符“”,因此先计算ab的值为8,之后运算8a,而a参加运算时需转换为整型数97运算,实际运算的是897,判断后其结果为不成立,表达式的运算结果为0。 若有关系表达式0x10,则其运算结果为逻辑量1。表达式中两个运算的优先级相同,于是首先运算0x,

4、x的值无论是多少,运算结果只能是1或者0;然后要么运算110,要么运算010,其运算结果必然为1。,6.1.2 逻辑运算和逻辑表达式 1逻辑运算符 C语言中逻辑运算符一共有3个: scanf(%d%d, ,图6.7 例6.2的流程图,使用if语句要注意以下几点。 (1)if语句是一条语句。 (2)逻辑量是if语句选择判断的条件,C语言中任意确定的值都可以作为逻辑量处理。 (3)逻辑量为1和为0的分支都只能是单条语句,如果要执行多个操作的话,应该将多个操作复合为单条语句才能出现在if的分支结构中。 (4)分支中出现的语句1是复合语句的时候,后不应该有“;”。 (5)语句中语句1是条件语句中必不可

5、少的部分。 (6)正确理解if语句和N-S选择结构流程图的对应关系。,嵌套主要用于处理多条件的题目。设计嵌套选择结构时,应清晰描述各条件之间的约束关系。嵌套的if语句可以简单描述如下: 嵌入的if语句是在当外围的if语句的条件p1的逻辑量值为1时才可以执行,即其作为外围if语句的条件成立时的执行语句,嵌入在外围if内。当然语句1、语句2、语句3也可以是if语句,具体的嵌套形式和具体题目中的多条件是密切相关的, if语句的嵌套形式应建立在对具体问题的分析上。,6.2.2 if语句的嵌套及多条件结构的实现,例6.4 求函数中x为任意值时 y 的值。 由于if选择结构仅有两个分支,而此分段函数x的定

6、义域为三分支,因此当确定x的关系表达式时,其中必然有一个分支包含另外两部分定义域,需在此基础上作进一步的条件判断。,根据流程图得到如下程序: main() main() float x,y; float x,y; scanf(%f, ,图6.9 例6.4的流程图 图6.10 例6.4的流程图2,6.2.3 条件表达式 条件运算符由两个符号“?”和“:”复合而成,此运算符为C语言中惟一的一个三目运算符,其优先级只比赋值运算符和逗号运算符高,结合性为从右到左。 条件表达式的一般格式为: 表达式1?表达式2:表达式3 其中表达式1是作为逻辑量处理的。 条件表达式中由于有条件限制,所以应先进行条件表达

7、式的运算,根据条件表达式1表示的逻辑量值选取表达式2或表达式3的结果作为整个表达式的值。,其执行过程如下。 当表达式1的逻辑量值为1时,选取表达式2的结果作为整个表达式的值。 当表达式1的逻辑量值为0时,选取表达式3的结果作为整个表达式的值。 假定a5,b3,则表达式max (ab)?a:b 的求解过程如下:此表达式右边为一条件表达式,由于条件运算符的优先级高于赋值运算符,应先计算条件表达式的值,再通过赋值运算符把得到的值赋给max。在条件表达式中,首先计算表达式ab的逻辑量值,根据题意,ab表达式的逻辑量值为1,则a为条件表达式的结果,为5,那么条件表达式的值为5,可得max的值为5。,6.

8、3 switch语句,如果题目中的多条件是有规律的,则可以采用switch语句来实现。switch语句称为分支语句,又称为开关语句。 switch的具体形式如下: switch(表达式) case 整型常量表达式1:语句组1 break case 整型常量表达式2:语句组2 break case 整型常量表达式n:语句组n break default :语句组n+1 switch,case,default和break都是构成多分支语句的关键字。 表示break可有可无。,其中表达式是任意类型的表达式,但运算结果会自动转换为整型。整型常量表达式只能由整型常量构成。break语句的作用是结束swi

9、tch语句,执行switch的后续语句。语句组可以是单条语句,也可以是多条语句,多条语句无需用复合语句去表示。而在ifelse结构中的语句1和语句2只能是单条语句。 switch语句中的一对花括号是必须书写的,是switch语句构成的必要部分。,switch语句的具体执行过程为:根据switch表达式的值,寻找switch语句的执行入口。自上而下和case后的整型常量表达式的值进行比较,如果相等则执行其后的语句组,假定入口是整型常量表达式2,那么该语句执行语句组2,当语句组2执行完毕后,若有break语句,则中断switch语句的执行,否则继续执行语句组3;如果没有和表达式的值相匹配的整型常量

10、表达式,则执行default后的语句组。 case后的整型常量表达式的值实际上就是switch后括号内的表达式的各种可能的取值。如果能穷尽表达式各种可能的取值,则语句中可省去default分支;否则最好不要省略default,因为default表示的是switch语句在没有找到匹配入口时的语句执行入口。,例6.6 输入一同学的成绩,判断其成绩等级。 等级范围为: 90 以上 等级为A 8980 等级为B 7970 等级为C 6960 等级为D 60 以下 等级为E,假定成绩为score,可以得到表达式(int)(score/10)。当表达式的值为10和9时,对应于90分以上的条件分支,为8时对

11、应于8980分段的条件分支,以下的取值和对应的分支可以依次类推。60分以下可用switch中default分支来描述。程序如下: main() float score; scanf(%f, ,score/10中score得到的结果为浮点型,系统会自动转换为整型。常量表达式为10的分支,由于与9的分支均为A级,利用switch的特点可以不写值为10的分支对应的语句。,使用switch语句应注意以下几点。 (1)switch 语句中表达式可为任意类型,但运算结果为整型。case后的表达式必须是整型常量表达式。 (2)每个case后的常量表达式的值不能相同,否则会自相矛盾,无法判断。 (3)case及default的顺序对运行结果不产生影响。 (4)若无break语句进行switch语句的强制跳出,则从该处顺序执行其余语句,直至跳出或执行结束。 (5)case和其后的整型常量表达式

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论