6选择结构程序设计

上传人:仙*** 文档编号:42883674 上传时间:2021-11-28 格式:PPT 页数:33 大小:332.02KB
收藏 版权申诉 举报 下载
6选择结构程序设计_第1页
第1页 / 共33页
6选择结构程序设计_第2页
第2页 / 共33页
6选择结构程序设计_第3页
第3页 / 共33页
资源描述:

《6选择结构程序设计》由会员分享,可在线阅读,更多相关《6选择结构程序设计(33页珍藏版)》请在装配图网上搜索。

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语言中逻辑量是用整型数据来表示语言中逻辑量是用整型数据来表示的,用来表示真或成立,用来表示假的,用来表示真或成立,用来表示假或不成立。逻辑量的表示是非常灵活的,或不成立。逻辑量的表示是非常灵活的,具体表示方法有以下几种方式。具体表示方法有以下几种方式。6.1.1 关系表达式1关系运算符关系运算符 关系运算是一种比较运算符两侧运算对象大关系运算是一种比较运算符两侧运算对象大小的运算,完成两个运算对象比较,运算结果为小的运算,完成两个运算对象比较,运算结果为成立与不成立,用成立与不成立,用1和和0表示。表示。 关系运算符有以下关系运算符有以下6种:种: ,=,b,

4、3+7!=10,aa a+(b=a+)都是合法的都是合法的C语言关系表达式。语言关系表达式。 关系表达式的求解遵循表达式求解规则,关关系表达式的求解遵循表达式求解规则,关系运算的结果只有两种可能,要么关系成立为真系运算的结果只有两种可能,要么关系成立为真(1),要么关系不成立为假(),要么关系不成立为假(0)。)。例如有整型变量例如有整型变量a,b,且,且a 3,b 5, 求解表达式:求解表达式:a ba 算术运算符算术运算符“ ”的优先级高于关系运算符的优先级高于关系运算符“”,因此先计算,因此先计算a b的值为的值为8,之后运算,之后运算8a,而,而a参加运算时需转换为整型数参加运算时需转

5、换为整型数97运算,实运算,实际运算的是际运算的是897,判断后其结果为不成立,表,判断后其结果为不成立,表达式的运算结果为达式的运算结果为0。 若有关系表达式若有关系表达式0 x10,则其运算结果为,则其运算结果为逻辑量逻辑量1。表达式中两个。表达式中两个运算的优先级相同,运算的优先级相同,于是首先运算于是首先运算0 x,x的值无论是多少,运算结的值无论是多少,运算结果只能是果只能是1或者或者0;然后要么运算;然后要么运算110,要么运,要么运算算0n) else printf(The max is %dn,n);Y N 输出 m 输出 n 输入 m,n mn 图6.7 例6.2的流程图使用

6、使用if语句要注意以下几点。语句要注意以下几点。(1)if语句是一条语句。语句是一条语句。(2)逻辑量是)逻辑量是if语句选择判断的条件,语句选择判断的条件,C语言中任语言中任意确定的值都可以作为逻辑量处理。意确定的值都可以作为逻辑量处理。(3)逻辑量为)逻辑量为1和为和为0的分支都只能是单条语句,的分支都只能是单条语句,如果要执行多个操作的话,应该将多个操作复合为如果要执行多个操作的话,应该将多个操作复合为单条语句才能出现在单条语句才能出现在if的分支结构中。的分支结构中。(4)分支中出现的语句)分支中出现的语句1是复合语句的时候,是复合语句的时候,后后不应该有不应该有“;”。(5 5)语句

7、中语句)语句中语句1 1是条件语句中必不可少的部分。是条件语句中必不可少的部分。(6 6)正确理解)正确理解ifif语句和语句和N-SN-S选择结构流程图的对应选择结构流程图的对应关系。关系。 嵌套主要用于处理多条件的题目。设计嵌套主要用于处理多条件的题目。设计嵌套选择结构时,应清晰描述各条件之间的嵌套选择结构时,应清晰描述各条件之间的约束关系。嵌套的约束关系。嵌套的if语句可以简单描述如下:语句可以简单描述如下: 嵌入的嵌入的if语句是在当外围的语句是在当外围的if语句的条件语句的条件p1的逻辑量值为的逻辑量值为1时才可以执行,即其作为时才可以执行,即其作为外围外围if语句的条件成立时的执行

8、语句,嵌入语句的条件成立时的执行语句,嵌入在外围在外围if内。当然语句内。当然语句1、语句、语句2、语句、语句3也可也可以是以是if语句,具体的嵌套形式和具体题目中语句,具体的嵌套形式和具体题目中的多条件是密切相关的,的多条件是密切相关的, if语句的嵌套形式语句的嵌套形式应建立在对具体问题的分析上。应建立在对具体问题的分析上。66.22.2 2 if f语句的嵌套及多条件结构的实现语句的嵌套及多条件结构的实现例例66.4 4 求函数中求函数中x为任意值时为任意值时y 的值。的值。 由于由于if选择结构仅有两个分支,而此分段选择结构仅有两个分支,而此分段函数函数x的定义域为三分支,因此当确定的

9、定义域为三分支,因此当确定x的关的关系表达式时,其中必然有一个分支包含另外系表达式时,其中必然有一个分支包含另外两部分定义域,需在此基础上作进一步的条两部分定义域,需在此基础上作进一步的条件判断。件判断。 0002/ 10/ 1xxxxx根据流程图得到如下程序:根据流程图得到如下程序:main() main() float x,y; float x,y; scanf(%f,&x); scanf(%f,&x); if(x0) y=1/x; if(x0) y=1/x; else if(x=0) y=0; else if(xb)?a:b 的的求解过程如下:此表达式右边为一条件表达式,求解过程如下:此

10、表达式右边为一条件表达式,由于条件运算符的优先级高于赋值运算符,应先由于条件运算符的优先级高于赋值运算符,应先计算条件表达式的值,再通过赋值运算符把得到计算条件表达式的值,再通过赋值运算符把得到的值赋给的值赋给max。在条件表达式中,首先计算表达。在条件表达式中,首先计算表达式式ab的逻辑量值,根据题意,的逻辑量值,根据题意,ab表达式的逻辑表达式的逻辑量值为量值为1,则,则a为条件表达式的结果,为为条件表达式的结果,为5,那么条,那么条件表达式的值为件表达式的值为5,可得,可得max的值为的值为5。6.3 switch6.3 switch语句语句 如果题目中的多条件是有规律的,则可以采用如果

11、题目中的多条件是有规律的,则可以采用switch语句语句来实现。来实现。switch语句称为分支语句,又称为开关语句。语句称为分支语句,又称为开关语句。switch的具体形式如下:的具体形式如下: switch(表达式表达式) case 整型常量表达式整型常量表达式1:语句组:语句组1 break case 整型常量表达式整型常量表达式2:语句组:语句组2 break case 整型常量表达式整型常量表达式n:语句组:语句组n break default :语句组:语句组n+1 switch,case,default和和break都是构成多分支语句的关都是构成多分支语句的关键字。键字。 表示表

12、示break可有可无。可有可无。 其中表达式是任意类型的表达式,但运其中表达式是任意类型的表达式,但运算结果会自动转换为整型。整型常量表达式算结果会自动转换为整型。整型常量表达式只能由整型常量构成。只能由整型常量构成。break语句的作用是结语句的作用是结束束switch语句,执行语句,执行switch的后续语句。语句的后续语句。语句组可以是单条语句,也可以是多条语句,多组可以是单条语句,也可以是多条语句,多条语句无需用复合语句去表示。而在条语句无需用复合语句去表示。而在ifelse结构中的语句结构中的语句1和语句和语句2只能是单条语句。只能是单条语句。 switch语句中的一对花括号是必须书

13、写语句中的一对花括号是必须书写的,是的,是switch语句构成的必要部分。语句构成的必要部分。 switch语句的具体执行过程为:根据语句的具体执行过程为:根据switch表表达式的值,寻找达式的值,寻找switch语句的执行入口。自上而语句的执行入口。自上而下和下和case后的整型常量表达式的值进行比较,如后的整型常量表达式的值进行比较,如果相等则执行其后的语句组,假定入口是整型常果相等则执行其后的语句组,假定入口是整型常量表达式量表达式2,那么该语句执行语句组,那么该语句执行语句组2,当语句组,当语句组2执行完毕后,若有执行完毕后,若有break语句,则中断语句,则中断switch语句语句

14、的执行,否则继续执行语句组的执行,否则继续执行语句组3;如果没有和表达;如果没有和表达式的值相匹配的整型常量表达式,则执行式的值相匹配的整型常量表达式,则执行default后的语句组。后的语句组。 case后的整型常量表达式的值实际上就是后的整型常量表达式的值实际上就是switch后括号内的表达式的各种可能的取值。如后括号内的表达式的各种可能的取值。如果能穷尽表达式各种可能的取值,则语句中可省果能穷尽表达式各种可能的取值,则语句中可省去去default分支;否则最好不要省略分支;否则最好不要省略default,因为,因为default表示的是表示的是switch语句在没有找到匹配入口语句在没有

15、找到匹配入口时的语句执行入口。时的语句执行入口。例例66.6 6 输入一同学的成绩,判断其成绩等级。输入一同学的成绩,判断其成绩等级。等级范围为:等级范围为:90 以上以上 等级为等级为A 8980 等级为等级为B7970 等级为等级为C6960 等级为等级为D60 以下以下 等级为等级为E 假定成绩为假定成绩为score,可以得到表达式(,可以得到表达式(int)(score/10)。当表。当表达式的值为达式的值为10和和9时,对应于时,对应于90分以上的条件分支,为分以上的条件分支,为8时对应时对应于于8980分段的条件分支,以下的取值和对应的分支可以依次分段的条件分支,以下的取值和对应的

16、分支可以依次类推。类推。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); break; case 7 : printf(Your score is Cn); break; case 6 : printf(Your score is Dn); break; defaul

17、t : printf(Your score is En); score/10中中score得到的结果为浮点型,得到的结果为浮点型,系统会自动转换为整型。常量表达式为系统会自动转换为整型。常量表达式为10的分支,由于与的分支,由于与9的分支均为的分支均为A级,利用级,利用switch的特点可以不写值为的特点可以不写值为10的分支对应的分支对应的语句。的语句。使用使用switch语句应注意以下几点。语句应注意以下几点。(1)switch 语句中表达式可为任意类型,但运算结语句中表达式可为任意类型,但运算结果为整型。果为整型。case后的表达式必须是整型常量表达式。后的表达式必须是整型常量表达式。(

18、2)每个)每个case后的常量表达式的值不能相同,否则后的常量表达式的值不能相同,否则会自相矛盾,无法判断。会自相矛盾,无法判断。(3)case及及default的顺序对运行结果不产生影响。的顺序对运行结果不产生影响。(4)若无)若无break语句进行语句进行switch语句的强制跳出,则语句的强制跳出,则从该处顺序执行其余语句,直至跳出或执行结束。从该处顺序执行其余语句,直至跳出或执行结束。(5)case和其后的整型常量表达式中间应有空格和其后的整型常量表达式中间应有空格 6.4 6.4 选择结构程序设计举例选择结构程序设计举例例例66.110 批发钢材,每吨批发金额为批发钢材,每吨批发金额

19、为1000元,计算批发元,计算批发金额,批发折扣如表金额,批发折扣如表6-3所示。所示。表6-3 例6.10折扣表 表6-4 例6.10折扣规律表1批发量(吨)折扣金额(%) 批发量(吨)t/50相除结果(取整)500 5001005 10012508 2502、3、450010 5005、6、7、8、950015 500其他main() float t,d,m; scanf(%f,&t) if(t50) d=0; else if(t100) d=5./100; else if(t250) d=8./100; else if(t500) d=10./100; else d=15./100 m=t*1000*(1-d); printf(%.0fx9dn,m); /*x9d是字符¥的是字符¥的ASCII码码*/main() float t,d,m; scanf(%f,&t); switch(t/50) case 0: d=0; break; case 1: d=0.01; break; case 2: case 3: case 4: d=0.08; break; case 5: case 6: case 7: case 8: case 9: d=0.1; break; default : d=0.15; m=t*1000*(1-d); printf(%.0fx9d n,m);

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!