




已阅读5页,还剩51页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第5章选择控制结构,哈尔滨工业大学计算机科学与技术学院苏小红sxh,本章学习内容,算法的描述方法用于单分支控制的if语句用于双分支控制的if-else语句用于多路选择的switch语句break语句在switch语句中的作用关系运算符条件运算符逻辑运算符程序测试,生活中的问题求解:Problem:烤蛋糕(BakingaCake)Howtosolve:Start将烤箱预热准备一个盘子在盘子上抹上一些黄油将面粉、鸡蛋、糖和香精混合在一起搅拌均匀将搅拌好的面粉团放在盘子上将盘子放到烤箱内End,5.1生活中与计算机中的问题求解(ProblemSolvingProcess),分治策略(DivideandConquerStrategy),Problem:准备早餐(PrepareaBreakfast),1.Start2.准备早餐3.End,1.Start2.准备早餐2.1准备一个金枪鱼三明治2.2准备一些薯条2.3冲一杯咖啡3.End,分治策略(DivideandConquerStrategy),1.Start2.准备早餐2.1准备一个金枪鱼三明治2.1.1拿来两片面包2.1.2准备一些金枪鱼酱2.2准备一些薯片2.3冲一杯咖啡3.End,分治策略(DivideandConquerStrategy),1.Start2.准备早餐2.1准备一个金枪鱼三明治2.1.1拿来两片面包2.1.2准备一些金枪鱼酱2.2准备一些薯片2.2.1将土豆切成片2.2.2油炸这些土豆片2.3冲一杯咖啡3.End,分治策略(DivideandConquerStrategy),分治策略(DivideandConquerStrategy),1.Start2.准备早餐2.1准备一个金枪鱼三明治2.1.1拿来两片面包2.1.2准备一些金枪鱼酱2.2准备一些薯片2.2.1将土豆切成片2.2.2油炸这些土豆片2.3冲一杯咖啡2.3.1烧些开水放入杯中2.3.2在水杯中加入一些咖啡和糖3.End,5.2算法的概念及其描述方法,面向对象程序=对象+消息面向过程的程序=数据结构+算法计算机中的算法(Algorithm)为解决一个具体问题而采取的、确定的、有限的操作步骤,仅指计算机能执行的算法Aspecificandstep-by-stepsetofinstructionsforcarryingoutaprocedureorsolvingaproblem,usuallywiththerequirementthattheprocedureterminateatsomepoint,5.2算法的概念及其描述方法,算法的特性有穷性在合理的时间内完成确定性,无歧义如果x0,则输出Yes;如果x0,则输出No有效性能有效执行负数开平方没有输入或有多个输入有一个或多个输出,5.2算法的概念及其描述方法,算法的描述方法自然语言描述传统流程图(Flowchart)在1966年,Bohra与Jacopini提出N-S结构化流程图1973年,美国学者I.Nassi和B.Shneiderman提出伪码(Pseudocode)表示,流程图(Flowchart),Flowchartrepresentsalgorithmgraphically.,计算机中的问题求解过程,Example:买苹果,计算价钱Calculateanddisplaythepriceofanumberofapplesifthequantityinkgandpriceperkgaregiven.,quantitypricePerkg,price,price=quantity*pricePerkg,Input,Process,Output,Firstidentifytheinputandoutputoftheproblem.,顺序结构(SequenceStructure),给变量赋值赋值表达式语句赋值表达式;price=quantity*pricePerkg;输入输出数据标准库函数调用语句scanf(%d,【例5.1】计算两整数的最大值,num1num2,max,?,Input,Process,Output,DoubleSelection,选择结构(分支结构)(SelectionStructure),5.3关系运算符与关系表达式,5.4用于单分支控制的条件语句(SingleSelection),stepa,condition,stepm,stepn,stepb,true,false,PseudocodeStructurestepaifstartstepmstepnend_ifstepb,ifStatement,Thestructureissimilartosingleselection(flowchart),Syntax:if(expression)statement;orif(expression)statement1;statement2;,ifStatement,Thestructureissimilartosingleselection(flowchart),Syntax:if(expression)statement;orif(expression)statement1;statement2;,#includemain()inta,b,max;printf(Inputa,b:);scanf(%d,%d,Inputa,b:_,Inputa,b:2015_,Inputa,b:2015max=20_,【例5.1】计算两整数的最大值,PseudocodeStructureStepaifstartStepmStepnend_ifelsestartStepxStepyend_elseStepz,Stepa,condition,Stepm,Stepn,Stepz,true,false,Stepx,Stepy,5.5用于双分支控制的条件语句(DoubleSelection),if-elseStatement,Thestructureissimilartodoubleselection(flowchart),Syntax:if(expression)statement1;elsestatement2;,orif(expression)statement1;statement3;elsestatement2;statement4;,Flowchart:CalculatetheMaximum,Inputaandb,Outputmax,ab?,maxb,maxa,Start,End,【例5.2】计算两整数的最大值,scanf(%d,%d,if(ab)max=a;elsemax=b;,TurnFlowcharttoCProgram,【例5.2】计算两整数的最大值,printf(max=%dn,max);,#includemain()inta,b,max;printf(Inputa,b:);scanf(%d,%d,if(ab)max=a;if(ab?a:b;,5.6条件运算符和条件表达式,【例5.3】,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然后,计算并输出表达式的值指定的运算符为加(+)减(-)乘(*)除(/),main()intdata1,data2;/*定义两个操作符*/charop;/*定义运算符*/printf(Pleaseentertheexpression:);scanf(%d%c%d,【例5.5】,思考题,语句if(0=data2)的必要性避免“除零错误”1998年11月,科学美国人杂志描述了美国导弹巡洋舰约克敦号上的一起事故,除零错导致军舰推进系统的关闭为什么不用if(data2=0)?如果要求输入的算术表达式中的操作数和运算符之间可以加入任意多个空格符,那么程序如何修改?,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】,SymbolDescriptionprintf
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 专业设置管理办法修订
- 中国环境监察管理办法
- 个人项目备案管理办法
- 人防方案编制管理办法
- 计划统计岗位管理办法
- 行业大数据管理办法
- 专业团队队员管理办法
- 业主入住项目管理办法
- 《校车安全管理办法》
- nike投诉管理办法
- 寻找消失的滇缅路:松山战痕课件
- 中小学教师职业道德规范解读
- 社会组织管理概论全套ppt课件(完整版)
- 政府预算理论与实务(第四版)全套教学课件
- 四年级上册美术课件第1课 送给老师的花|沪教版
- 轧机设备安装施工方案
- 最新开工报告范文
- 制药企业仓库温湿度分布的验证
- GB∕T 3099.4-2021 紧固件术语 控制、检查、交付、接收和质量
- 山东临清实验中学2012学年八年级语文 7课背影共3课时教案(表格版) 人教新课标版
- 深圳牛津小学英语单词汇总
评论
0/150
提交评论