- 1、本文档共30页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* * * C语言程序设计与项目实践 清华大学出版社 学生成绩的分类处理 ———分支程序设计 项目4 回顾与作业点评 if 语句的格式 单分支与双分支结构 预习检查 如何用if表示多分支结构? Switch的语句格式 目标 熟练掌握switch 语句的应用 理解分段函数编程 项目任务 任务4-3 求解分段函数 1、如何根据多种不同的状态执行不同的程序段? 2、多分支结构与程序优化问题 不能 上菜 有胡萝卜吗? 有黄瓜吗? 制作胡萝卜沙拉 有 多重条件判断 有 可以 上菜 制作黄瓜沙拉 制作黄瓜沙拉 没有 没有 开始 做黄瓜沙拉 做胡萝卜沙拉 有 没有 不能 上菜 可以 上菜 是否有 胡萝卜 有 没有 是否有黄瓜? 结束 多重if 要处理多重条件判断的情况,需要使用多重条件结构 多重条件结构 嵌套 if switch结构 多重条件结构 if (表达式1) 语句1; else if (表达式2) 语句2; else if (表达式3) 语句3; . . else 语句n; 多重 if 结构是if-else 的另一种形式 ,这种形式也称为阶梯式 if-else-if 多重 if 结构 真 ? 假 ? 真 假 真 ? 假 ? 其语义是: 依次判断表达式的值,当出现某个值为真时,则执行其对应的语句。然后跳到整个if语句之外继续执行程序。 如果所有的表达式均为假,则执行语句n。然后继续执行后续程序。 if-else-if语句的执行过程如图4—6所示 多重 if 结构示例 问题描述: 编写一个程序,根据用户输入的期末考试成绩,输出相应的成绩评定信息。成绩大于等于90分输出“优”;成绩大于等于80分小于90分输出“良”;成绩大于等于60分小于80分输出“中”;成绩小于60分输出“差”。 #include stdio.h void main() { float grade; printf(\n 请输入期末考试成绩: ); scanf(%f, grade); if(grade=90) printf(\n 优); else if ((grade=80) (grade90)) printf(\n 良); else if ((grade=60) (grade80)) printf(\n 中); else printf(\n 差); printf(\n); } 内存 grade 59 请输入期末考试成绩:59 差 嵌套 if 结构就是将整个 if 块插入另一个 if 块中 嵌套 if 结构 2-1 if (表达式1) if (表达式2) if (表达式3) 语句; else 语句; 真 真 真 假 ? ? if (x 0) if (y 1) z = 1; else /*这个 else 部分属于哪个 if?*/ z = 2; 嵌套 if 结构 2-2 C语言规定,每个 else 部分总属于前面最近的那个缺少对应的 else 部分的 if 语句。 提倡使用大括号括起来以避免看起来有二义性。 #includestdio.h void main() { int a,b; printf(\n 请输入 A 和 B 的值: ); scanf(%d%d,a,b); if(a!=b) if(ab) printf(\n AB\n); else printf(\n AB\n); else printf(\n A=B\n); } 嵌套 if 结构的示例 内存 a b 68 93 输出: AB 算法分析: 方程根的计算x1=,x2=。由求根公式中的判别式? 可知,当?0是有2个不等的实根;?=0时,有2个相等的实根;?0时,有2个复根。其流程图如下: 案例 【案例4-7】求一元二次方程ax2+bx+c=0的根。 #includestdio.h #includemath.h void main(){ float a,b,c, disc,x1,x2,realpart,imagpart; printf(输入a,b,c:); scanf(%f,%f,%f,a,b,c); if (fabs(a)=1e-6) printf(非二次方程); else { disc=b*b-4*a*c; if(fabs(disc)=1e-6) printf(有两个相等实根:\nx1=x2=%8.4f\n, -b/(2*a)); else if(disc1e-6) { x1=(-b+sqrt(disc))/(2*a);
文档评论(0)