




已阅读5页,还剩37页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第5章选择结构程序设计,主要内容:关系运算符和关系表达式逻辑运算符和逻辑表达式if-else(重点、难点)switch条件运算符和条件表达式(了解)根据选择结构的组成特点,我们在分析问题时着重明确以下两点:1)条件是什么。2)条件成立和不成立时分别执行什么操作。,简单条件用关系表达式来表示例5.1判断一个整数n是奇数还是偶数(设n由用户输入)分析:第一步,输入整数n。第二步,判断:若条件“n%2等于0“成立,则输出“n为偶数“;否则输出“n为奇数“。,5.1关系运算符和关系表达式,main()intn;printf(“nenterintn:”);scanf(“%d”,开始,输入n,n%2为0,是偶数,是奇数,结束,输入n,例5.2输入任一考生的考号及成绩,判断其是否能上大学。(设分数线为600,若能上,则输出“success“,否则输出”failure”)。分析:第二步是选择结构,条件是“score大于等于600”,main()intno;floatscore;printf(“nenterno,score:”);scanf(“%d%f”,关系表达式的值:若条件满足,则关系表达式的值为ture(1);否则,关系表达式的值为false(0)。1.关系运算符:=!=例如下列关系表达式:ab表示条件“a大于b“,x!=0表示条件“x等于0“,a+b关系运算符赋值运算符且=高于=!=结合性:自左向右(一般很少连用)。如:abb)cf=ac也是合法的关系表达式,但在实际应用中很少使用;因为它不能表示:a+b大于c且大于d。问题:如何表示:axb00 xdoublex=0,y=2.3;计算下列表达式的值:hprintf(“npleaseentertwointegers:”);scanf(“%d%d”,思考:若条件改为:m=A/*第三步,输出*/,2.if语句的简化形式,if(expression)statement1执行过程如图:例:输入任意数n,输出其绝对值。main()floata;scanf(“%f”,3.if语句的嵌套,当if语句中的语句1或语句2又是if语句时,就构成了if语句的嵌套,嵌套的if语句能实现多分支结构。例5.7猜数游戏:假设m是一个整型数15,让用户从键盘上输入所猜数字(用户已知数的范围是1020),若猜对,则输出“RIGHT”,否则,输出”WRONG“,并指出所猜的数比m大还是小。分析:共3个分支第一步,输入猜测的数n。第二步,判断并输出结果:条件可以是“m等于n”,若条件成立,则输出RIGHT;否则,需执行两步操作:输出WRONG,判断m、n的大小:条件可以是“nm”;条件成立时输出“big”;否则输出“small”。很明显,又是一个选择结构。,main()intm=15,n;printf(nguessanum:);scanf(%d,例5.8某幼儿园只接收26岁的小孩,其中23岁编入小班,45岁编入中班,6岁编入大班。编程实现,对输入的任意一个年龄,输出该编入什麽班,或者告知“不收“。分析:首先根据条件“年龄在26岁之间”判断是“收”还是“不收“,若条件满足,则执行的操作为:(1)判断该编入何班;否则,输出“不收”。其次,分析(1)如何实现。提示:本例可用不同的程序实现。如将条件改为“年龄超出26岁”;或者从条件“年龄小于2”开始判断。试编程实现。,main()intage;printf(“nenterage:”);scanf(“%d”,/*语句2*/,If语句中的语句1和语句2都可以包含if语句。If语句的嵌套结构中,因为else是可选项,所以要注意if与else的匹配。C语言规定:else总是与其前面最近的、还没有匹配过的if相匹配,并且是由里向外逐对对匹配。编程时,可以通过合理使用来明确if与else匹配关系。,例5.10:分析以下两个程序,哪一个能实现:从键盘上接收一个整数,若该数为正偶数,则输出“positiveandeven.”;若为负数,则输出“negative”。程序(1):main()intn;printf(“nenterainteger:”);scanf(“%d”,画出该程序的流程图,程序结构更清楚。,例5.10程序(2):main()intn;printf(“nenterainteger:”);scanf(“%d”,4条件运算符,使用if语句时,有时是为了根据条件给同一个变量赋不同的值,比如:main()intx,y;scanf(“%d”,本例中,当条件满足或不满足时分别执行一个赋值语句,且都是给变量y赋值。用C语言提供的条件运算符描述,比用if语句更简练。上述if语句等价于:y=x0?x+1:x*x+1;,其中“x0?x+1:x*x+1”是一个“条件表达式”,条件运算符:?:条件表达式的一般格式:表达式1?表达式2:表达式3计算过程:首先计算表达式1;若其值为真(非0),则计算表达式2,取表达式2的值作为整个条件表达式的值;否则,计算表达式3,取表达式3的值作为整个条件表达式的值。优先级:条件运算符的优先级比关系运算符和算术运算符都低,比赋值运算符高。例如:y=x0?x+1:x*x+1等价于y=((x0)?(x+1):(x*x+1))说明:并不是所有的if语句都能用条件表达式实现。如if(n0)a=6;elseb=8;,5.4switch语句,switch语句可用来处理一部分特殊的多分支选择结构。即根据某个表达式的值进行选择,而不能根据表达式的取值范围作出选择,所以使用时有很大的局限性。.如学生成绩等级分类,幼儿园分班等。若用if语句实现,程序冗长,嵌套层次多,结构不够清晰。而用switch语句则更清楚。例5.12输入某个成绩等级,输出该等级对应的分数段。(A:90100,B:8089,C:7079,D:6070,E:60以下),#include/*例5.12*/main()chargrade;printf(nenterscoregrade(ae):);/*输出提示信息*/grade=getchar();getchar();/*接收输入的一个字符*/switch(grade)casea:printf(n90100);/*case后是一常量*/break;/*多个语句组成的语句段1*/caseb:printf(n8089);break;casec:printf(“n7079”);break;/*case后有空格*/cased:printf(n6069.);break;casee:printf(n60);break;default:printf(nerror:outofthefield(ae).);/*switch语句结束*/,switch语句的一般形式为:switch(expression)case常量表达式1:语句段1break;case常量表达式2:语句段2break;case常量表达式N:语句段Nbreak;default:语句段N+1(格式说明),switch语句的执行过程:计算switch后面括号中的表达式。将表达式的值与第一个case后的常量表达式的值比较,若相等,则从语句段1开始,执行语句段1及其以后的所有语句,不再进行判断(即执行完语句段1后,接着执行后面的case或default语句中的语句段),直至遇到break语句或执行至switch语句的末尾;若不相等,再与第二个case后的常量表达式比较,依此类推;若所有的case均不匹配,则执行default后的语句段n+1。,main()/*幼儿园编班问题*/intage;printf(nenterchildsage:);scanf(%d,/*实现多个case分支共用一个语句段。*/,例5.14输入任一百分之成绩,输出其对应的成绩等级:A(90100),B(8089),C(7079),D(6069),E(60)。分析:因为case后必须是一常量,所以要用switch语句实现,必须先找出各个分数段对应的常量。很容易可看出,除100分、60分以下的分数外,其它分数段内的分数除以10取整结果相同。,main()/*例5.14*/intscore,n;printf(nenterascore(0100):);scanf(%d,思考:如果将分数段的划分改为:A(10085),B(7084),C(6069),D(20且10且=20,=10;因此若要实的每个分支都能执行一遍,weight应分别从上述每一范围中至少取一个值。考虑到边界容易出错,所以weight应分别取10,20,30作为测试数据,或直接将30,2010作为后3个范围中的测试数据。测试用例:35,30,20,10(至少4个测试数据)或者使用:35,25,15,5,30,20,10(每个范围取一个测试数据,在加上边界数据供7组)。,5.5上机调试,三、单步执行(run/step或F7或F8)具体方法是:根
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 隧道电力供应与系统建设方案
- 项目施工质量监控体系
- 中药煎服服药35课件
- 2025版猫咪宠物用品电商合作销售合同
- 二零二五年度房地产开发项目报建代理专业服务合同
- 二零二五年度猕猴桃树种子绿色种植与生态保护合同
- 二零二五年度化妆品原料批量订购合同
- 二零二五年度商业空间精装修工程承包合同
- 2025版婚恋产业知识产权保护合作协议下载
- 二零二五年度代付工程款三方财务监管协议
- 农村房地产转让合同协议
- 快速康复在泌尿外科的应用
- (标准)按摩店转让合同协议书
- 《死亡医学证明(推断)书》培训试题(附答案)
- 膀胱灌注的护理课件
- 桥梁安全保护区管理制度
- 学堂在线 大学生国家安全教育 章节测试答案
- 2025至2030中国增强型飞行视觉系统行业发展趋势分析与未来投资战略咨询研究报告
- 华文版二年级上册-写字-书法
- 学堂在线 数据结构(上) 章节测试答案
- 安全文明生产的保证措施
评论
0/150
提交评论