第6讲-选择控制结构2_第1页
第6讲-选择控制结构2_第2页
第6讲-选择控制结构2_第3页
第6讲-选择控制结构2_第4页
第6讲-选择控制结构2_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第5章选择控制结构,C语言程序设计公共教学研究室,本章学习内容,算法的描述方法用于单分支控制的if语句用于双分支控制的if-else语句用于多路选择的switch语句break语句在switch语句中的作用关系运算符条件运算符逻辑运算符程序测试,5.7用于多分支控制的条件语句(MultipleSelection),Multi-wayifStepaif(expression1)Stepmif(expression2)StepnStepz,Stepa,expression1,Stepm,Stepn,Stepz,true,false,expression2,true,false,5.7用于多分支控制的条件语句(MultipleSelection),CascadedifStepaif(expression1)Stepmelseif(expression2)StepnelseStepxStepz,Stepa,expression1,Stepm,Stepn,Stepz,true,false,expression2,true,false,Stepx,5.8用于多路选择的switch语句,Thestructureissimilartomultipleselection(flowchart),switch(expression)casevalue1:statement1;break;casevalue2:statement2;break;default:statementX;break;,ImportantRule!,switch(expression)casevalue1:statement1;break;casevalue2:statement2;break;default:statementX;break;,5.8用于多路选择的switch语句,注意!,Example:switch(month)case1:printf(Januaryn);break;case2:printf(Februaryn);break;case3:printf(Marchn);break;default:printf(Othersn);break;printf(End);,January_,JanuaryEnd_,5.8用于多路选择的switch语句,Example:switch(month)case1:printf(Januaryn);break;case2:printf(Februaryn);break;case3:printf(Marchn);break;default:printf(Othersn);break;printf(End);,March_,MarchEnd_,5.8用于多路选择的switch语句,Example:switch(month)case1:printf(Januaryn);break;case2:printf(Februaryn);break;case3:printf(Marchn);break;default:printf(Othersn);break;printf(End);,5.8用于多路选择的switch语句,Example:switch(month)case1:printf(Januaryn);break;case2:printf(Februaryn);case3:printf(Marchn);break;default:printf(Othersn);break;printf(End);,5.8用于多路选择的switch语句,Example:switch(month)case1:printf(Januaryn);break;case2:printf(Februaryn);case3:printf(Marchn);break;default:printf(Othersn);break;printf(End);,February_,March_,End_,5.8用于多路选择的switch语句,Example:switch(month)case1:printf(Januaryn);break;case2:printf(Februaryn);case3:printf(Marchn);break;default:printf(Othersn);break;printf(End);,Andifmonth=1?,Andifmonth=34?,5.8用于多路选择的switch语句,【例5.5】计算器程序,编程设计一个简单的计算器程序,要求用户从键盘输入如下形式的表达式:操作数1运算符op操作数2然后,计算并输出表达式的值指定的运算符为加(+)减(-)乘(*)除(/),intmain()intdata1,data2;/*定义两个操作符*/charop;/*定义运算符*/printf(Pleaseentertheexpression:);scanf(%d%c%d,【例5.5】,思考题,语句if(0=data2)的必要性避免“除零错误”1998年11月,科学美国人杂志描述了美国导弹巡洋舰约克敦号上的一起事故,除零错导致军舰推进系统的关闭为什么不用if(data2=0)?思考练习:P99本章实验题1.身高预测如果要求输入的算术表达式中的操作数和运算符之间可以加入任意多个空格符,那么程序如何修改?,main()intdata1,data2;charop;printf(Pleaseentertheexpression:);scanf(%d%c%d,【例5.5】,思考题,如果要求对浮点数进行运算,那么程序如何修改?修改例5.5程序,使其能进行浮点数的算术运算,同时允许使用字符*、x与X作为乘号,并且允许输入的算术表达式中的操作数和运算符之间加入任意多个空格符。,main()floatdata1,data2;charop;printf(Pleaseentertheexpression:);scanf(%f%c%f,【例5.6】,SymbolDescriptionscanf(%c,ifelse嵌套练习2:P99习题5-9,成绩分数段-百分制intscore;scanf(%d,switchcase练习3:P87例题5-8,成绩分数段-百分制intscore,mark;scanf(%d,switch应用扩展:编写程序,用switch语句处理菜单命令。解题思路:在许多应用程序中,用菜单对流程进行控制,例如从键盘输入一个A或a字符,就会执行A操作,输入一个B或b字符,就会执行B操作,等等。,#includeintmain()voidaction1(int,int),action2(int,int);charch;inta=15,b=23;ch=getchar();switch(ch)casea:caseA:action1(a,b);break;caseb:caseB:action2(a,b);break;default:putchar(a);return0;,输入a或A,调用action1函数,执行A操作,voidaction1(intx,inty)printf(x+y=%dn,x+y);,#includeintmain()voidaction1(int,int),action2(int,int);charch;inta=15,b=23;ch=getchar();switch(ch)casea:caseA:action1(a,b);break;caseb:caseB:action2(a,b);break;default:putchar(a);return0;,输入b或B,调用action2函数,执行B操作,voidaction2(intx,inty)printf(x*y=%dn,x*y);,#includeintmain()voidaction1(int,int),action2(int,int);charch;inta=15,b=23;ch=getchar();switch(ch)casea:caseA:action1(a,b);break;caseb:caseB:action2(a,b);break;default:putchar(a);return0;,输入其他字符,发出警告,5.10本章扩充内容,测试的主要方式给定特定的输入,运行被测软件检查软件的输出是否与预期结果一致测试用例的选取方法尽量覆盖所有分支,减少重复覆盖测试的目的通过运行测试用例找出软件中的Bug成功的测试在于发现迄今为止尚未发现的Bug测试人员的主要任务是站在使用者的角度,通过不断使用和攻击,尽可能多地找出Bug测试的过程就像黑客的攻击过程,专门找软件漏洞,5.10本章扩充内容,采用测试用例,通过运行程序查找程序错误的方法实质是一种抽样检查,彻底的测试是不可能的彻底的测试不现实,要考虑时间、费用等限制,不允许无休止的测试测试只能证明程序有错,不能证明程序无错E.W.Dijkstra测试能提高软件质量,但提高软件质量不能依赖于测试,软件测试方法的分类,白盒测试(结构测试)在完全了解程序的结构和处理过程的情况下,按照程序内部的逻辑测试程序,检验程序中的每条逻辑路径是否都能按预定要求正确工作主要用于测试的早期黑盒测试(功能测试)把系统看成一个黑盒子,不考虑程序内部的逻辑结构和处理过程,只根据需求规格说明书的要求,设计测试用例,检查程序的功能是否符合它的功能说明主要用于测试的后期,#include#includemain()floata,b,c;printf(Inputthethreeedgelength:);scanf(%f,%f,%f,错在哪里?,【例5.7】判断三角形的类型,无法输出“等腰直角三角形”的情况,【例5.7】判断三角形的类型,一般三角形,不是三角形,等边,等腰,直角,等腰直角,有交叉关系的用

温馨提示

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

评论

0/150

提交评论