3判断与决策_选择程序设计(1)

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

高级语言程序设计第3章判断与决策—选择程序设计学习目标:判断与决策问题求解算法表示方法决策/判断问题分析判断决策条件选择结构复杂条件表示回顾前面已经解决过的问题,分析其特点顺序处理问题用顺序结构表示输入两个整数求和输出结果结束开始稍稍复杂一点的问题,只用顺序结构是不够的,需要用选择结构表示判断与决策(本章的内容),需要用循环结构表示重复(下一章)。巧妙的使用这三种结构就可以解决复杂的问题问题让成绩合格的学生通过判断成绩是否合格给定的一个整数是偶数吗?奇偶判断按成绩把学生分成两组:合格与不合格判断成绩是大于等于60还是小于60按成绩把学生分成多组判断成绩落在那个范围判断某年是否为闰年返回三种基本结构顺序结构、选择结构、循环结构已经证明,任何程序均可只用这三种结构实现堆叠和嵌套只用这三种结构的程序,叫结构化程序这样的程序设计就是结构化程序设计6流程图起始框椭圆处理框矩型判断框钻石流向线三种结构的流程图顺序结构选择结构truefalsetruefalse循环结构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框图(流程图)表示法代码实现#includestdio.hintmain(void){intgrade;//while(1)//{scanf(%d,&grade);if(grade=60)printf(good!youpassed!\n);//}return0;}要讨论的几个问题逻辑判断如何表达?grade=60关系运算:大于,小于,大于等于=,小于等于=,还有等于==,不等于!=运算关系表达式grade=60grade==80逻辑判断的结果是什么?逻辑真(true)、逻辑假(false)关系运算的结果或者为真或者为假逻辑常量1逻辑真(true)0逻辑假(false)关系表达式的值或者为1或者为0例:输出两个整数的关系表达式的值关系运算的优先级例1:设有“inta,b,c,status;a=1;b=2;c=3;”,分析一下下面两个语句中各种运算的顺序:(1)printf(“%d\n”,a+bc);//算术运算与关系运算混合(2)status=ab;//赋值运算与关系运算混合关系运算的优先级低于算术运算,高于赋值运算,而关系运算中比较大小的四个运算,,=,=的优先级又高于判断相等的两个运算==,!=。关系运算的结合性例2:设有“inta=30,b=20,c=2,stauts;”,下面语句正确吗?status=abc;如果正确status的值会是多少?关系运算是左结合的逻辑变量c99—_Bool逻辑类型c++—bool逻辑类型,但要包含stdbool.hC/C++如何表示逻辑判断?选择结构(单分支、双分支、多分支)单分支选择结构—if结构if(判断条件)条件为真时执行的语句其它语句条件为真时执行的语句判断条件NY其它语句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和例题的扩展考虑很多同学或者很多数据重复—使用循环当条件为真时,不仅输出信息,还要计数复合语句/语句块#includestdio.hintmain(void){intgrade;intnopassed=0;while(scanf(%d,&grade)!=EOF)//循环{if(grade60){//复合语句开始printf(youarenotpassed\n);printf(hopeyoumakegreatefforts\n);nopassed=nopassed+1;}//复合语句结束}printf(%d\n,nopassed);return0;}EOF–endoffile当键盘输入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!写出代码#includestdio.hintmain(void){intaNum=0,bNum=0;intgrade;while(scanf(%d,&grade)!=EOF){if(grade=60){printf(youbelongingroupA\n);aNum=aNum+1;}if(grade60){printf(youbelongingroupB\n);bNum=bNum+1;}}printf(aNum=%d\n,aNum);printf(bNum=%d\n,bNum);return0;}分析两个单分支选择结构的执行效率C/C++提供了双分支选择结构双分支选择结构if-else语句if(判断条件)语句块1else语句块2其它语句双分支选择结构流程图判断条件语句块1”真假语句块2其它语句if(grade=60)printf(“passed\n”);elseprintf(“failed\n”);grade=60print“passed”真假print“failed”算法实现(2)用双分支选择结构#includestdio.hintmain(void){intaNum=0,bNum=0;intgrade;while(scanf(%d,&grade)!=EOF){if(grade=60){printf(youbelongingroupA\n);aNum=aNum+1;else//if(grade60){printf(youbelongingroupB\n);bNum=bNum+1;}}printf(aNum=%d\n,aNum);printf(bNum=%d\n,bNum);return0;}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(“numis0orpositive\n”):printf(“numisanegativenumber;\n”);例3:打印两个数中的较大者inti,j;scanf(“%d%d”,&i,&j);printf(“%d\n”,ij?i:j);例4:返回两个数中的最大者return(ij?i:j);例5:求两个数的最大值inta,b,max;scanf(“%d%d”,&a,&b);max=ab?a:b;printf(“%d\n”,max);条件运算是右结合的ab?a:cd?c:d相当于ab?a:(cd?c:d)小结逻辑判断如何表达什么是逻辑真?假?选择结构复合语句条件运算作业见课程网站

1 / 55
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功