版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第6章选择结构程序设计 选择结构的选择结构的N-S流程图如图流程图如图6.1所示。所示。 A B 1 P 0 图6.1 选择结构的N-S流程图 P为选择的条件,对于执行为选择的条件,对于执行A还是还是B要根要根据条件据条件P的判断结果来决定,如果条件的判断结果来决定,如果条件P的结的结果为真则执行果为真则执行A,如果条件,如果条件P的结果为假则的结果为假则执行执行B。这里条件。这里条件P的结果就成为执行的结果就成为执行A还是还是B的关键所在。的关键所在。P是一个判断的条件,其结果是一个判断的条件,其结果为真或者假,将其称为为真或者假,将其称为“逻辑量逻辑量”。C语言中语言中没有提供逻辑型变量,
2、可以使用整型数据去没有提供逻辑型变量,可以使用整型数据去描述描述1表示真,表示真,0表示假。在表示假。在C语言中任意确语言中任意确定的值都可作为逻辑量处理,当作为逻辑量定的值都可作为逻辑量处理,当作为逻辑量处理时,如果该值为非处理时,如果该值为非0,则表示真,则表示真1),),如果该值为如果该值为0,则表示假,则表示假0)。下面讲述条)。下面讲述条件件P的逻辑量表示方法。的逻辑量表示方法。6.1 6.1 逻辑量的表示方法逻辑量的表示方法6.2 if6.2 if语句语句6.3 switch6.3 switch语句语句6.4 6.4 选择结构程序设计举例选择结构程序设计举例6.1 6.1 逻辑量的
3、表示方法逻辑量的表示方法 C C语言中逻辑量是用整型数语言中逻辑量是用整型数据来表示的,用来表示真或成立,据来表示的,用来表示真或成立,用来表示假或不成立。逻辑量的用来表示假或不成立。逻辑量的表示是非常灵活的,具体表示方法表示是非常灵活的,具体表示方法有以下几种方式。有以下几种方式。6.1.1 关系表达式1关系运算符关系运算符 关系运算是一种比较运算符两侧运算对象大小的运算,完成两个运算对象比较,运算结果为成立与不成立,关系运算是一种比较运算符两侧运算对象大小的运算,完成两个运算对象比较,运算结果为成立与不成立,用用1和和0表示。表示。 关系运算符有以下关系运算符有以下6种:种: ,=,b,3
4、+7!=10,aa a+(b=a+)都是合法的都是合法的C语言关系表达式。语言关系表达式。 关系表达式的求解遵循表达式求解规则,关关系表达式的求解遵循表达式求解规则,关系运算的结果只有两种可能,要么关系成立为真系运算的结果只有两种可能,要么关系成立为真1),要么关系不成立为假),要么关系不成立为假0)。)。例如有整型变量例如有整型变量a a,b b,且,且a a3 3,b b5 5, 求解表达式:求解表达式:a ababa 算术运算符算术运算符“”的优先级高于关系运的优先级高于关系运算符算符“ ”,因此先计算,因此先计算a ab b的值为的值为8 8,之后运算,之后运算8a8a,而,而aa参加
5、运算时需转换为整型数参加运算时需转换为整型数9797运运算,实际运算的是算,实际运算的是897897,判断后其结果为不成,判断后其结果为不成立,表达式的运算结果为立,表达式的运算结果为0 0。 若有关系表达式若有关系表达式0 x100 x10,则其运算结果为,则其运算结果为逻辑量逻辑量1 1。表达式中两个。表达式中两个 运算的优先级相同,运算的优先级相同,于是首先运算于是首先运算0 x0 x,x x的值无论是多少,运算结的值无论是多少,运算结果只能是果只能是1 1或者或者0 0;然后要么运算;然后要么运算110110,要么运,要么运算算0100n) if(mn) else else print
6、f( printf(The max is %dnhe max is %dn,n);n); Y N 输 出 m 输 出 n 输 入 m, n mn 图6.7 例6.2的流程图使用使用if语句要注意以下几点。语句要注意以下几点。(1if语句是一条语句。语句是一条语句。(2逻辑量是逻辑量是if语句选择判断的条件,语句选择判断的条件,C语言中任语言中任意确定的值都可以作为逻辑量处理。意确定的值都可以作为逻辑量处理。(3逻辑量为逻辑量为1和为和为0的分支都只能是单条语句,的分支都只能是单条语句,如果要执行多个操作的话,应该将多个操作复合为如果要执行多个操作的话,应该将多个操作复合为单条语句才能出现在单条
7、语句才能出现在if的分支结构中。的分支结构中。(4分支中出现的语句分支中出现的语句1是复合语句的时候,是复合语句的时候,后后不应该有不应该有“;”。(5语句中语句语句中语句1是条件语句中必不可少的部分。是条件语句中必不可少的部分。(6正确理解正确理解if语句和语句和N-S选择结构流程图的对应选择结构流程图的对应关系。关系。 嵌套主要用于处理多条件的题目。设计嵌套主要用于处理多条件的题目。设计嵌套选择结构时,应清晰描述各条件之间的嵌套选择结构时,应清晰描述各条件之间的约束关系。嵌套的约束关系。嵌套的if语句可以简单描述如下:语句可以简单描述如下: 嵌入的嵌入的if语句是在当外围的语句是在当外围的
8、if语句的条件语句的条件p1的逻辑量值为的逻辑量值为1时才可以执行,即其作为时才可以执行,即其作为外围外围if语句的条件成立时的执行语句,嵌入语句的条件成立时的执行语句,嵌入在外围在外围if内。当然语句内。当然语句1、语句、语句2、语句、语句3也可也可以是以是if语句,具体的嵌套形式和具体题目中语句,具体的嵌套形式和具体题目中的多条件是密切相关的,的多条件是密切相关的, if语句的嵌套形式语句的嵌套形式应建立在对具体问题的分析上。应建立在对具体问题的分析上。66.22.2 if2 if语句的嵌套及多条件结构的实现语句的嵌套及多条件结构的实现例例66.4 4 求函数中求函数中x x为任意值时为任
9、意值时y 的值。的值。 由于由于ifif选择结构仅有两个分支,而此分段选择结构仅有两个分支,而此分段函数函数x x的定义域为三分支,因此当确定的定义域为三分支,因此当确定x x的关的关系表达式时,其中必然有一个分支包含另外系表达式时,其中必然有一个分支包含另外两部分定义域,需在此基础上作进一步的条两部分定义域,需在此基础上作进一步的条件判断。件判断。 0002/ 10/ 1xxxxx根据流程图得到如下程序:根据流程图得到如下程序:main() main() float x,y; float x,y; scanf(%f,&x); scanf(%f,&x); if(x0) y=1/
10、x; if(x0) y=1/x; else if(x=0) y=0; else if(xb)?a:b 的求解过程如下:此表达式右边为一条件表达式的求解过程如下:此表达式右边为一条件表达式,由于条件运算符的优先级高于赋值运算符,应,由于条件运算符的优先级高于赋值运算符,应先计算条件表达式的值,再通过赋值运算符把得先计算条件表达式的值,再通过赋值运算符把得到的值赋给到的值赋给max。在条件表达式中,首先计算表。在条件表达式中,首先计算表达式达式ab的逻辑量值,根据题意,的逻辑量值,根据题意,ab表达式的逻表达式的逻辑量值为辑量值为1,则,则a为条件表达式的结果,为为条件表达式的结果,为5,那么,那
11、么条件表达式的值为条件表达式的值为5,可得,可得max的值为的值为5。6.3 switch6.3 switch语句语句 如果题目中的多条件是有规律的,则可以采用如果题目中的多条件是有规律的,则可以采用switch语句语句来实现。来实现。switch语句称为分支语句,又称为开关语句。语句称为分支语句,又称为开关语句。switch的具体形式如下:的具体形式如下: switch(表达式表达式) case 整型常量表达式整型常量表达式1:语句组:语句组1 break case 整型常量表达式整型常量表达式2:语句组:语句组2 break case 整型常量表达式整型常量表达式n:语句组:语句组n br
12、eak default :语句组:语句组n+1 switch,case,default和和break都是构成多分支语句的关都是构成多分支语句的关键字。键字。 表示表示break可有可无。可有可无。 其中表达式是任意类型的表达式,但运其中表达式是任意类型的表达式,但运算结果会自动转换为整型。整型常量表达式算结果会自动转换为整型。整型常量表达式只能由整型常量构成。只能由整型常量构成。break语句的作用是结语句的作用是结束束switch语句,执行语句,执行switch的后续语句。语句的后续语句。语句组可以是单条语句,也可以是多条语句,多组可以是单条语句,也可以是多条语句,多条语句无需用复合语句去表
13、示。而在条语句无需用复合语句去表示。而在ifelse结构中的语句结构中的语句1和语句和语句2只能是单条语句。只能是单条语句。 switch语句中的一对花括号是必须书写语句中的一对花括号是必须书写的,是的,是switch语句构成的必要部分。语句构成的必要部分。 switch语句的具体执行过程为:根据语句的具体执行过程为:根据switch表表达式的值,寻找达式的值,寻找switch语句的执行入口。自上而语句的执行入口。自上而下和下和case后的整型常量表达式的值进行比较,如后的整型常量表达式的值进行比较,如果相等则执行其后的语句组,假定入口是整型常果相等则执行其后的语句组,假定入口是整型常量表达式
14、量表达式2,那么该语句执行语句组,那么该语句执行语句组2,当语句组,当语句组2执行完毕后,若有执行完毕后,若有break语句,则中断语句,则中断switch语句语句的执行,否则继续执行语句组的执行,否则继续执行语句组3;如果没有和表达;如果没有和表达式的值相匹配的整型常量表达式,则执行式的值相匹配的整型常量表达式,则执行default后的语句组。后的语句组。 case后的整型常量表达式的值实际上就是后的整型常量表达式的值实际上就是switch后括号内的表达式的各种可能的取值。如后括号内的表达式的各种可能的取值。如果能穷尽表达式各种可能的取值,则语句中可省果能穷尽表达式各种可能的取值,则语句中可
15、省去去default分支;否则最好不要省略分支;否则最好不要省略default,因为,因为default表示的是表示的是switch语句在没有找到匹配入口语句在没有找到匹配入口时的语句执行入口。时的语句执行入口。例例66.6 6 输入一同学的成绩,判断其成绩等级。输入一同学的成绩,判断其成绩等级。等级范围为:等级范围为:90 以上以上 等级为等级为A A 889880 等级为等级为B B779770 等级为等级为CC669660 等级为等级为D D660 以下以下 等级为等级为E E 假定成绩为假定成绩为score,可以得到表达式,可以得到表达式int)(score/10)。当表。当表达式的值
16、为达式的值为10和和9时,对应于时,对应于90分以上的条件分支,为分以上的条件分支,为8时对应时对应于于8980分段的条件分支,以下的取值和对应的分支可以依次分段的条件分支,以下的取值和对应的分支可以依次类推。类推。60分以下可用分以下可用switch中中default分支来描述。程序如下:分支来描述。程序如下: main() float score; scanf(%f,&score); switch(score/10) case 10: case 9 : printf(Your score is An); break; case 8 : printf(Your score is Bn
17、); break; case 7 : printf(Your score is Cn); break; case 6 : printf(Your score is Dn); break; default : printf(Your score is En); score/10中中score得到的结果为浮点型,得到的结果为浮点型,系统会自动转换为整型。常量表达式为系统会自动转换为整型。常量表达式为10的分支,由于与的分支,由于与9的分支均为的分支均为A级,利用级,利用switch的特点可以不写值为的特点可以不写值为10的分支对应的分支对应的语句。的语句。使用使用switch语句应注意以下几点。语
18、句应注意以下几点。(1switch 语句中表达式可为任意类型,但运算结语句中表达式可为任意类型,但运算结果为整型。果为整型。case后的表达式必须是整型常量表达式。后的表达式必须是整型常量表达式。(2每个每个case后的常量表达式的值不能相同,否则后的常量表达式的值不能相同,否则会自相矛盾,无法判断。会自相矛盾,无法判断。(3case及及default的顺序对运行结果不产生影响。的顺序对运行结果不产生影响。(4若无若无break语句进行语句进行switch语句的强制跳出,则语句的强制跳出,则从该处顺序执行其余语句,直至跳出或执行结束。从该处顺序执行其余语句,直至跳出或执行结束。(5case和其后的整型常量表达式中间应有空格和其后的整型常量表达式中间应有空格 6.4 6.4 选择结构程序设计举例选择结构程序设计举例例例66.110 批发钢材,每吨批发金额为批发钢材,每吨批发金额为11000元,计算批元,计算
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《Web编程基础》课件第3章 CSS样式
- 《汽车概论》课件第4章
- 《汽车营销技术》课件第6章
- 《基于ARM9的嵌入式Linux系统开发原理与实践》课件第13章
- 《光波导理论教学课件》绪论
- 2025委托设计合同范本
- 2025油漆涂料购销合同样本
- 2024年度房屋租赁押金处理及退回服务合同3篇
- 2025技术服务咨询标准合同
- 生态公园草坪改造协议
- 行政复议法-形考作业4-国开(ZJ)-参考资料
- 内分泌科开展新技术新项目
- 应急管理部宣传教育中心招聘笔试试卷2021
- MOOC 管理学原理-大连理工大学 中国大学慕课答案
- MOOC 工程图学-天津大学 中国大学慕课答案
- 《电站炉水循环泵电机运行导则》
- 《小学小古文》课件
- (高清版)DZT 0388-2021 矿区地下水监测规范
- 南美白对虾高位池无公害养殖技术
- 孤独症谱系障碍培训课件
- 露天煤矿地质类型划分报告编制细则
评论
0/150
提交评论