c语言程序设计和项目实践第5章ppt课件

上传人:钟*** 文档编号:1541950 上传时间:2019-10-24 格式:PPT 页数:28 大小:2.28MB
返回 下载 相关 举报
c语言程序设计和项目实践第5章ppt课件_第1页
第1页 / 共28页
c语言程序设计和项目实践第5章ppt课件_第2页
第2页 / 共28页
c语言程序设计和项目实践第5章ppt课件_第3页
第3页 / 共28页
点击查看更多>>
资源描述
第5章 分支结构程序设计,本章的学习重点 简单的if语句 if-else语句执行规则 嵌套的if-else语句 switch语句 break语句 嵌套的switch语句,1,5.1 结构化程序设计思想,1976年,Niklaus Wirth 提出: 程序 = 算法 + 数据结构 结构化程序设计的基本思想是: 1自顶向下 2逐步细化 3模块化设计 4结构化程序编码 结构化程序设计框架图,2,5.2 简单的if语句,if语句有三种基本形式: if语句 if和else语句 嵌套if和else语句 设计分支结构应注意如下问题: 1正确选择条件或逻辑表达式作为分支的判断条件。 2根据需求绘制分支流程图。 3按流程图编写程序。,3,5.2.1 if语句的定义,if 语句的一般形式: if(表达式) 语句段 if语句的执行流程:如果表达式的值为真(非0),则执行其后的语句段,否则不执行该语句。 If语句流程图:,4,5.2.1 if语句的定义,if语句中的表达式可以是任何能转化为数值的表达式,例如: if(100) if(a=b) if(a&b|c) if(sizeof(int) if(ab)?(a+b):(a-b),范例5.1 GetMaxVariableInTwo.c 利用if语句的分支功能,可以区分两个或多个数值的大小。本范例由键盘输入两个变量的值,使用if语句判断两者中的较大值,并将较大值输出在屏幕上。,5,5.2.2 合理设计if语句,1逻辑运算符的编写风格 逻辑运算表达式编写应尽量避免产生歧义,避免出现逻辑错误,例如,为避免逻辑表达式书写错误,通常将常量放在逻辑运算符左边: if(a=0) a=-a; 应写成: if(0=a) a=-a; 2语句段封装 不论语句段由一条语句还是多条语句构成,都使用大括号封装。,6,实训5.1求一元二次方程的实根解,键盘输入一元二次方程ax2+bx+c=0的三个参数a,b和c,计算当判别式b2-4ac=0时的根,程序使用if语句判断是否满足判别式条件,结果精确到小数点后3位。判别式可计算为: sqrt_delta=sqrt(b2-4ac) 当sqrt_delta大于或等于0时方程有实根。因此,一元二次方程的两个根分别为: x1=(-b+sqrt_delta)/2a x2=(-b-sqrt_delta)/2a 1需求分析: 需求1:键盘输入参数a, b, c的值 需求2:判断判别式,确定方程是否有实根 需求3:调用开根号数学函数sqrt,计算方程的根 需求4:输出结果,精度为小数点后3位,7,实训5.1求一元二次方程的实根解,2技术应用 对于需求1,使用scanf函数输入参数a, b, c的值。 对于需求2,使用if语句判断方程是否有实根,判断方法为:if(b2-4ac=0)。 对于需求3,由于要求精确到小数点后3位,采用数据类型float型。 根据上述分析画出程序流程图: 源文件:CalculateFormulaRealRoot.c,8,5.3 多分支if语句,多分支if语句又称为“if-else语句”,是由关键字if和else构成的多分支结构语句。 if-else语句的一般形式为: if(表达式) 语句段1 else 语句段2 if-else语句的执行规则为:若表达式的值为真(非0),则执行语句段1,否则进入else分支,执行语句段2。,9,5.3.1 if-else语句的结构,if-else语句的表达形式为: if(表达式) 语句段1 else 语句段2 if-else语句的流程图:,10,5.3.1 if-else语句的结构,范例5.2 CalculateAbstract.c 数学计算中,绝对值使用| |表示,本范例从键盘输入参数a的值,然后利用if-else语句实现绝对值的计算,并打印信息显示数据符号是否发生了变化。 5.3.2 if-else语句的应用 范例5.3 JudgeOddorEven.c 键盘输入int型参数a的值,判断其是否为偶数,若为偶数,则打印a为偶数信息,若为奇数,则打印为奇数信息。利用模除(%)对a值是否为偶数进行判断,使用if-else分支语句实现不同信息的输出。,11,5.3.2 if-else语句的应用,5.3.2 if-else语句的应用 范例5.3 JudgeOddorEven.c 键盘输入int型参数a的值,判断其是否为偶数,若为偶数,则打印a为偶数信息,若为奇数,则打印为奇数信息。利用模除(%)对a值是否为偶数进行判断,使用if-else分支语句实现不同信息的输出。 范例5.4 JudgeLeapYearorNotWithIfElse.c 键盘输入unsigned int型年份,判断其是否为闰年,若为闰年,则打印为闰年信息,若为平年,则打印为平年信息。闰年的判断方法是:若年数能被400整除,那么该年是闰年,若能被4整除但不能被100整除,该年是闰年,其他年份都是平年。,12,5.3.3 if-else-if语句的结构及应用,当有多个分支选择时,可采用if-else-if语句,if-else-if类型结构语句的一般形式为: if(表达式1) 语句段1; else if(表达式2) 语句段2; else if(表达式3) 语句段3; else if(表达式m) 语句段m; else 语句段n; If-else-if 语句流程图:,13,5.3.3 if-else-if语句的结构及应用,范例5.5 StudentScoreSet.c 学生成绩分为5个等级,分别为:A: 90=score=100,B: 80=score90,C: 70=score80,D: 60=score70,E:score60键盘输入某学生成绩,判断其属于哪个等级,并打印到屏幕上。使用多分支if-else-if语句实现。 范例5.6 JudgeCharacterFromKeyboard.c 使用getchar函数接收键盘输入的一个字符,并判断该字符类型,若输入为字母,则打印字母信息,若为数字,则打印数字信息,若为控制字符,则打印控制字符信息。,14,5.4 嵌套if-else语句,嵌套if语句指在if分支或else分支中再次执行if或else语句。嵌套if分支语句的流程图如下:,15,5.4.1 嵌套if-else语句的定义,嵌套if-else语句一般表达形式为: if(表达式1) if(表达式2) 语句段1 else 语句段2 else if(表达式3) 语句段4 else 语句段5 如图所示为单层嵌套if-else语句流程图:,16,5.4.2 嵌套if-else语句的应用,范例5.7 CompareTwoVariableValue.c 键盘输入两个int型变量的值a和b,判断两个变量的大小, 若ab,则输出 ab, 若ab,则输出 ab, 若a=b,则输出 a=b。,17,实训5.2求一元二次方程的复数根解,键盘输入一元二次方程ax2+bx+c=0的三个参数a,b和c,计算: b2-4ac=0时,输出实数根, b2-4ac0时,输出复数根,并检查输入参数的正确性。 使用嵌套if语句实现。首先使用scanf函数输入三个参数a,b和c,定义判别式变量delta=b2-4ac,定义变量sqrt_delta=sqrt(b2-4ac)。 当delta大于0时一元二次方程的两个根分别为: x1=(-b+sqrt_delta)/2a,x2=(-b-sqrt_delta)/2a 当delta等于0时,方程有一个实根: x = -b/2a 当delta小于0时,方程有两个共轭复数根,分别为: x1 = -b/2a + sqrt_delta/2a i, x2 = -b/2a - sqrt_delta/2a i,18,实训5.2求一元二次方程的复数根解,1需求分析: 需求1:键盘输入参数a, b, c的值并判断输入参数 需求2:判断判别式,确定方程有实根还是复数根 需求3:调用开根号数学函数sqrt,计算方程的根 需求4:输出结果 2技术应用 对于需求1,使用scanf函数输入参数a, b, c的值。 对于需求2,使用if语句判断方程有实根还是复数根,判断方法为:if(b2-4ac=0)。 对于需求3,输出结果时根据实根和复数根的不同,输出不同数据格式,如复数根应输出:m+ni和m=ni的形式。,19,实训5.2求一元二次方程的复数根解,一元二次方程求根流程图 源代码:CalculateFormulaRoot.c,20,5.5 switch语句,switch语句的一般表达形式为: switch(表达式) case 常量表达式1: 语句段1; case 常量表达式2: 语句段2; case 常量表达式n: 语句段n; default: 语句段n+1; ,21,5.5.1 switch语句的定义,switch语句的运行规则为: 计算表达式的值,顺次与其后的常量表达式值相比较,当表达式的值与某个常量表达式的值相等时,即执行其后的语句段,语句段执行完毕后,不再进行判断,继续执行后面所有case后的语句。 switch语句流程图:,22,5.5.1 switch语句的定义,范例5.8 SwitchSentenceCase.c 键盘输入整型的星期数,打印出英文的星期名字字符串,根据键盘输入的星期数,打印出该星期数的英文名使用switch语句实现,输入函数使用scanf函数,星期一记为1,星期天记为7。例如,输入2,应打印Tuesday。,23,5.5.2 break语句,为避免程序在switch语句中持续执行case语句,可以使用break语句 ,switch语句中添加break语句的流程图:,24,5.5.3 switch语句的执行与应用,范例5.9 SwitchSentenceWithBreak.c 键盘输入学生成绩,分段显示不同成绩段的优劣: 90=score=100为excellence 80=score90为all right 70=score80为midding 60=score70为pass score60为bad,25,实训5.3使用switch语句实现四则运算,键盘输入四则运算式,通过switch语句分支执行+, -, *, /的四则运算,结果精确到小数点后3位。 例如,输入4.5-6,将输出结果:4.5-6=-1.5。程序只能实现简单的四则运算,不能实现复合四则运算,输入参数采用float型,使用switch语句做四则运算的分支程序。 1需求分析: 需求1:键盘输入四则运算式需求2:switch语句作分支判断四则运算 需求3:输出结果,精度为小数点后3位 2技术应用 对于需求1,使用scanf函数输入四则运算表达式。 对于需求2,使用switch语句对各四则运算作分支处理。 对于需求3,采用float型输出精确到小数点后3位结果。 源代码:CalculateFormulaProcess.c,26,5.6 嵌套switch语句,嵌套的switch语句是指在一个switch语句中某个case下会再嵌入一个或多个switch语句 嵌套switch语句的一般表达形式: switch(表达式1) case常量表达式1: switch(表达式2) case 常量表达式 11: 语句段11 case 常量表达式12: 语句段12 case 常量表达式1m: 语句段1m default: 语句段1m+1 case常量表达式2: 语句段2; case常量表达式n: 语句段n; default: 语句段n+1; ,27,5.6.2 嵌套switch语句的执行与应用,范例5.10 SwitchAarlineSearch.c 查询一周七天的航班情况。例如,要查周五上午的航班,则输入5和m(morning),就输出星期五上午的航班时间表。星期可使用整型数字,可输入m(代表上午)、a(代表下午)和e(代表晚上)来查看不同时间段的航班信息。,28,
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸设计 > 毕设全套


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

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


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