判断与决策-选择程序设计.ppt_第1页
判断与决策-选择程序设计.ppt_第2页
判断与决策-选择程序设计.ppt_第3页
判断与决策-选择程序设计.ppt_第4页
判断与决策-选择程序设计.ppt_第5页
已阅读5页,还剩50页未读 继续免费阅读

下载本文档

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

文档简介

高级语言程序设计,第3章判断与决策选择程序设计,学习目标:判断与决策问题求解,算法表示方法决策/判断问题分析判断决策条件选择结构复杂条件表示,回顾前面已经解决过的问题,分析其特点顺序处理问题用顺序结构表示,输入两个整数,求和,输出结果,结束,开始,稍稍复杂一点的问题,只用顺序结构是不够的,需要用选择结构表示判断与决策(本章的内容),需要用循环结构表示重复(下一章)。巧妙的使用这三种结构就可以解决复杂的问题,问题,让成绩合格的学生通过判断成绩是否合格给定的一个整数是偶数吗?奇偶判断按成绩把学生分成两组:合格与不合格判断成绩是大于等于60还是小于60按成绩把学生分成多组判断成绩落在那个范围判断某年是否为闰年,返回,三种基本结构,顺序结构、选择结构、循环结构已经证明,任何程序均可只用这三种结构实现堆叠和嵌套只用这三种结构的程序,叫结构化程序这样的程序设计就是结构化程序设计,6,流程图,起始框椭圆处理框矩型判断框钻石流向线,三种结构的流程图,顺序结构,选择结构,循环结构,8,结构化程序的特点,单入口单出口,问题1:让成绩合格的学生通过,问题描述:假设有一个计算机打字训练教室,大一刚入学的同学都要到这个训练教室练习打字。电脑自动考核,你的成绩在60分以上视为合格。训练教室的门口有一个电脑控制的栏杆,它是一个“智能栏杆”,知道每一个参加训练同学的当前训练成绩,因此当你走进它时,他会获取你的学号,如果你的成绩大于或等于60,它将自动打开,允许你路过。可想而知你的成绩要是小于60会是什么样子。请你一定要认真训练,不然你就不可能从那个教室里出来噢。你知道这个“智能栏杆”的程序怎么设计吗?,输入样例1:80输出样例1:good!youpassed!输入样例2:55输出样例2:无,分析,一个输入成绩判断条件:成绩=60一个输出或没有输出当成绩=60时,输出good!youpassed!,算法设计(描述算法),伪码表示法:第一步:输入成绩;第二步:如果成绩大于或等于60,输出good!youpassed!。,grade=60,输出“good!youpassed!”,真,假,从键盘读成绩grade,框图(流程图)表示法,代码实现,#includeintmain(void)intgrade;/while(1)/scanf(%d,要讨论的几个问题,逻辑判断如何表达?grade=60关系运算:大于,小于=,小于等于=60grade=80,逻辑判断的结果是什么?逻辑真(true)、逻辑假(false)关系运算的结果或者为真或者为假逻辑常量1逻辑真(true)0逻辑假(false)关系表达式的值或者为1或者为0,例:输出两个整数的关系表达式的值,关系运算的优先级,例1:设有“inta,b,c,status;a=1;b=2;c=3;”,分析一下下面两个语句中各种运算的顺序:(1)printf(“%dn”,a+bc);/算术运算与关系运算混合(2)status=ab;/赋值运算与关系运算混合关系运算的优先级低于算术运算,高于赋值运算,而关系运算中比较大小的四个运算,=,bc;如果正确status的值会是多少?关系运算是左结合的,逻辑变量c99_Bool逻辑类型c+bool逻辑类型,但要包含stdbool.h,C/C+如何表示逻辑判断?选择结构(单分支、双分支、多分支)单分支选择结构if结构if(判断条件)条件为真时执行的语句其它语句,Goto问题2,if(grade=60)printf(good!youpassed!n);return0;注意写法:缩进格式if(grade=60)后面没有;号也可以写成单行if(grade=60)printf(good!youpassed!n);,再看几个例子:例1.比较两个整数的大小,输入样例1:23输出样例1:,测试用例2:32测试用例3:33,例2:判断整数是偶数吗?,分析:一个输入判断其是否为偶数判断条件number%2=0?如果条件为真,输出“是偶数”,大家一起写出对应的代码,例3:判断一个整数不是零,可以直接写出一个整数x不是零为真的条件x!=0不为零的任何数都为逻辑真写出对应的if语句,上述问题1和例题的扩展,考虑很多同学或者很多数据重复使用循环当条件为真时,不仅输出信息,还要计数复合语句/语句块,#includeintmain(void)intgrade;intnopassed=0;while(scanf(%d,EOFendoffile当键盘输入CTRL-Z回车时scanf函数的值就是EOF,表示输入结束,思考题:,两个实数如何比较大小?可以比较是否相等吗?,问题2:按成绩把学生分成两组,教师要把参加某次测验的学生按成绩及格与否分成两组,并统计出各组的人数。,分析,问题1的特点条件为真时输出信息,条件为假时什么都不做期望条件为真时输出信息条件为假时也输出信息经过判断之后选择不同的分支进行处理,得到不同的打印结果,算法设计,1求和变量aNum,bNum初始化为0;2输入学生成绩;3如果输入结束,执行(8);4如果成绩大于或等于60,输出分到A组的信息,aNum加1,5执行(2);6如果成绩小于60,输出分到B组信息,bNum加1,7执行(2);8输出统计结果,程序结束。,算法实现,可否用单分支选择结构实现Yes!写出代码,#includeintmain(void)intaNum=0,bNum=0;intgrade;while(scanf(%d,分析两个单分支选择结构的执行效率C/C+提供了双分支选择结构,双分支选择结构if-else语句,if(判断条件)语句块1else语句块2其它语句,双分支选择结构流程图,判断条件,语句块1”,真,假,语句块2,其它语句,if(grade=60)printf(“passedn”);elseprintf(“failedn”);,grade=60,print“passed”,真,假,print“failed”,算法实现(2)用双分支选择结构,#includeintmain(void)intaNum=0,bNum=0;intgrade;while(scanf(%d,if-else的特点,双分支结构是对称的,但是对于不同的条件只能走其中的一个分支。,再看几个例子,例1判断一个数num是奇数还是偶数的双分支选择结构例2判断一个数num是大于等于零还是小于零的双分支选择结构例3.判断一个人的体重w是否过大,判断标准是身体指数t是否大于25,其中t=w/h2(w为体重,h为身高),双分支选择结构的简化形式,条件运算:是一个三目运算表达式1?表达式2:表达式3表达式1作为逻辑判断条件当表达式1为真时执行表达式2否则执行表达式3,几个例子,例1:用条件表达式判断一个数是奇数还是偶数num%2?printf(“numisodd;n”):printf(“numiseven;n”);例2:用条件表达式判断一个数是正还是负num=0?printf(“numis0orpositiven”):printf(“numisanegativenumber

温馨提示

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

最新文档

评论

0/150

提交评论