版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第3章选择结构程序设计信息工程学院主讲人:XXX内容提要41选择结构程序举例2选择结构和条件判断423if语句实现选择结构42选择结构的嵌套425switch语句多分支选择结构24443.1选择结构程序举例实际的生活中往往存在选择分支的情况,一般来说,像抛硬币之类的事件存在着正面和反面两个分支,像选择出行路径之类的事件,往往存在多个分支,分支的不同将决定程序的不同行为表现。在C语言中,存在着两种选择语句:(1)if语句。if语句主要应用在判断条件为一个区间,一般为两个分支的程序选择中。(2)switch语句。switch语句主要应用在判别条件为具体值时,常用在具有多个分支的程序选择中。上面两个语句都是应用选择程序结构,后面章节将从简单的开始,先介绍两个选择分支的if语句,再从双分支程序进行扩展,介绍多个选择分支的switch语句。3.1选择结构程序举例【例3.1】从一元二次方程的求根计算过程,演示选择程序如何解决实际问题。
要求:编程序求解一元二次方程的根,若无实根则打印说明。
分析:如果要求一元二次方程
的根,则需要判断
的值,如果
则有实根,如果
则没有实根,然后再根据求根公式进行计算。
算法流程:(1)获得键盘输入,得到三个系数a,b,c;(2)计算判断条件
,若判断条件
,跳转到步骤(3),若判断条件
,跳转到步骤(4);(3)打印该二元一次方程没有实根;(4)进行求根公式计算,输出一元二次方程的实根。3.1选择结构程序举例编写程序:3.2选择结构和条件判断一个选择结构将伴随着多个分支,这些分支代表着程序的执行在不同条件下表现出不同的行为。假设一个程序需要输出一个数的绝对值,可以得到如下的算法步骤。步骤一:从程序外输入整数X步骤二:判断输入的整数X是否小于0若小于0执行步骤三否则执行步骤四步骤三:返回-X步骤四:返回X3.2选择结构和条件判断代码实现:3.2选择结构和条件判断如上代码所示,条件判断对应的代码为: if(x<0)其双分支为: if(x<0) return-x; else returnx;当x<0的条件为真,则返回-x,条件为假,则返回x。3.3if语句实现条件判断-3.3.1if语句处理选择结构举例【例3.2】明天不下雨就去郊游(条件为不下雨)算法的步骤:步骤一:获取天气输入,将输入进来的字符串保存在str_weather变量中;步骤二:判断str_weather是否不等于“rainday”,若为真则执行步骤三,否则不执行任何操作。
步骤三:打印明天去郊游:Goforanoutingtomorrow!3.3.1if语句处理选择结构举例编写代码:3.3.1if语句处理选择结构举例例3.2中if语句的执行顺序流程如下图3-2:开关型if图3-2开关型if3.3.1if语句处理选择结构举例if语句的三种应用与程序流程图:简化的if语句if-else双分支语句if-else-if双分支语句3.3.2简单的if结构if语句的最简单形式 if(表达式)语句1【例3.3】考试分数低于60分为不及格(条件为分数大小)。3.3.3if-else语句结构if-else分支结构形式 if(表达式)语句1[else语句2]【例3.4】考试分数低于60分为不及格,大于或等于60分为及格(条件以分数超过60为界)。3.3.4if-else-if语句结构【例3.5】考试分数小于60分为不及格,大于或等于60分小于70分为合格,大于或等于70分小于80分为良好,大于80分为优秀(条件为分数大小)这是一个拥有多重判断条件的问题,思路分析如下:(1)对于分数的评价是与分数的区间有关(2)分数区间的边界为具体的某个整数(3)分数区间具有左关右开的特征,具体为:[0,60),[60,70),[70,80),[80,100]根据上面的三点,可以理清程序的二分设计思路步骤一:选择某个数值进行判断步骤二:将这个数值左边的视为某一个评价区间,右边的为多个区间进行混合,重复步骤一、二,最终将分数区间进行判断。3.3.4if-else-if语句结构编写代码:3.4选择结构的嵌套-3.4.2嵌套if语句与程序流程图if语句的嵌套。具体的代码模式如下:if(<!--判断条件1-->)//外层if{ if(<!--判断条件2-->)//内层if {/*判断条件2为真*/} else {/*判断条件2为假*/}
if(<!--判断条件3-->)//内层if {/*判断条件3为真*/} else {/*判断条件3为假*/}}else{...}3.4.2嵌套if语句与程序流程图图3-5:if语句嵌套流程图3.4.2if语句的嵌套应用【例3.6】比较复杂的行李托运情景:
低于20公斤的行李免托运费,高于20公斤低于40公斤部分收1.5元/公斤,高于40公斤部分则按2.0元/公斤(条件为行李重量)
会员托运消费打八折(条件为会员身份)定义算法步骤:步骤一:获得用户输入的行李重量,保存在整型变量weight中步骤二:创建运费计量变量money,使用整型类型声明步骤三:创建会员身份标识vip,使用整形类型声明(1为会员,0不为会员)步骤四:获取用户输入行李重量以及会员身份标识步骤五:判断weight是否高于20,若为否执行步骤六,否则执行步骤十一步骤六:判断(weight-20)是否高于20,若为是,执行步骤七,否则执行步骤八步骤七:计算20与1.5的乘积加上(weight-40)与2的乘积并将结果赋值给money步骤八:计算(weight-20)与1.5的乘积并将结果赋值给money步骤九:判断vip值是否等于1,是执行步骤十,否则执行步骤十一步骤十:计算money与0.8的乘积并将结果赋值给money步骤十一:打印所需要的运费
3.4.2if语句的嵌套应用编写代码:
3.4.2if语句的嵌套应用针对上面的结果做简单的验证,由于是vip会员身份,可以得到下列的计算公式代入数值为
可以验算计算结果的正确性。
注意:在这里涉及到整型与浮点数的数据类型的转换,在c语言中要声明一个常量的数据类型可以在常量后面加上数据类型相关的缩写,例如:2.f(单精度常量),123456789012345L(长整形常量)。同时if语句的嵌套特性决定了if语句可以进行多重嵌套,但是在实际应用场景中,应该注意设计程序算法流程,在能够使用if-else-if解决问题的时候,不建议使用if语句的嵌套,以提高代码的可读性。
3.5switch语句实现多分支选择结构由于在逻辑结构上,分支的形式不止双分支。在C语言中可以通过switch关键字进行多分支结构的实现。例如,监控用户的输入,如果输入为大写’A’,’B’,’C’则替换为小写,否则直接返回。
3.5.1多分支结构一般形式switch语句的一般形式如下:switch(表达式){ case常量1:语句1 case常量2:语句2 case常量3:语句3 ……… case常量n:语句n default:语句n+1}3.5.1多分支结构一般形式switch语句的一般形式如下:switch(表达式){ case常量1:语句1 case常量2:语句2 case常量3:语句3 ……… case常量n:语句n default:语句n+1}3.5.1多分支结构一般形式(5)每个case后面的常量必须互不相同,否则会出现矛盾的现象(同值不同的入口冲突)。(6)case标号只起标记作用,在执行switch语句时,根据switch表达式的值找到入口,在执行一个case语句后会顺序执行下去,直到遇到break语句跳出顺序执行。(7)在case语句中如果包含了一个以上的执行语句,可不必加花括号,程序执行的时候会顺序执行。当然加花括号括起来也不会有影响。(8)多个case语句可以共用一个执行语句,例如:case‘A’:case‘B’:case‘C’:b++;3.5.1多分支结构一般形式使用switch应注意以下问题:要注意以下几点switch括号内的“表达式”,应该为整形(包括字符型)。(2)switch下面的花括号是一个复合语句。意味着包含若干语句,它是switch语句的语句体。语句体内包括多个以关键字case开头的语句行和一个以default开头的语句行,case后面跟着一个常量或常量表达式,在表达式后面需要跟一个冒号。如case’A’:,case0:等。(3)switch语句执行的时候,先计算括号内表达的值,将这个值与case后面的常量作匹配,如果匹配成功,则进入该case所表3.5.2多分支语句的实际应用示的分支。(4)如果没有与任何case后面的常量相匹配,则执行default后面的(n+1)语句。可以没有default标号及后面的(n+1)语句,此时如果没有与任何case后面的常量相匹配,则不执行任何语句。3.5.2多分支语句的实际应用在前面的章节中曾经用if语句介绍过成绩分段评价的例子,以下程序的目的是输入一个成绩然后判断该成绩的区间段位。由于成绩的分段之间不存在层级的逻辑关系,同时分段为多段分段,可以采用多分支结构来编程。if语句适合于区间分段,而switch只适合以点分段。但仔细观察分数分段的结构[0,60),[60,70),[70,80),[80,100],会发现分段的边界都是10的整数倍,利用整数除法的性质做归一化处理,得出判断表达式以及入口常量。3.5.2多分支语句的实际应用【例3.7】下面是使用switch解决问题的代码:本章小结本节阐述了选择结构控制语句:if、if-else、if-else和switch语句的具体用法。
1.在if语句中,应该注意if语句中的表达式可以为所有的合法的表达式。
例如:
inta=1;
if(a=0)printf(“Yes
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 新民私协议书
- 资产代持协议书与代管协议书
- 网络使用协议书
- 2025年短视频创作者收益分配协议
- 2025年短视频创作者分成协议(平台方)
- 2025授权委托合同范本
- 2025企业共同租赁合同范本
- 2025年低空飞行器航空材料创新与市场报告
- 2025不锈钢焊接钢管供应与采购合同
- 2025年工业螺丝刀采购使用性能数据报告
- (高清版)DB62∕T 446-2019 河湖及水利工程土地划界标准
- 2025团员考试试题及答案
- 核医学临床技术操作规范 (一)
- EXCEL基础知识课件教学
- 工程监理质量事前、事中、事后控制要点
- 网红推广产品合作协议范本
- 防诈骗课件版
- 私募基金 劳动合同及保密协议(2025年版)
- 钢结构企业安全知识培训
- 生产副总试用期工作总结
- 2025年湖南环境生物职业技术学院单招职业适应性测试题库一套
评论
0/150
提交评论