版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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框图(流程图)表示法代码实现#include<stdio.h>intmain(void){intgrade;//while(1)//{scanf("%d",&grade);if(grade>=60) printf("good!youpassed!\n");//}return0;}要讨论的几个问题逻辑判断如何表达?grade>=60关系运算:大于>,小于<,大于等于>=,小于等于<=,还有等于==,不等于!=运算关系表达式grade>=60grade==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+b>c);//算术运算与关系运算混合(2)status=a>b;//赋值运算与关系运算混合关系运算的优先级低于算术运算,高于赋值运算,而关系运算中比较大小的四个运算>,<,>=,<=的优先级又高于判断相等的两个运算==,!=。关系运算的结合性例2:设有“inta=30,b=20,c=2,stauts;”,下面语句正确吗?status=a>b>c;如果正确status的值会是多少?关系运算是左结合的逻辑变量c99—_Bool逻辑类型c++—bool逻辑类型,但要包含stdbool.hC/C++如何表示逻辑判断?选择结构(单分支、双分支、多分支)单分支选择结构—if结构if(判断条件)条件为真时执行的语句其它语句
Goto问题2if(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和例题的扩展考虑很多同学或者很多数据重复—使用循环
当条件为真时,不仅输出信息,还要计数复合语句/语句块
#include<stdio.h>intmain(void){intgrade;intnopassed=0;while(scanf("%d",&grade)!=EOF)//循环{if(grade<60){//复合语句开始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!写出代码
#include<stdio.h>intmain(void){intaNum=0,bNum=0;intgrade;while(scanf("%d",&grade)!=EOF){if(grade>=60){printf("youbelongingroupA\n");aNum=aNum+1;}if(grade<60){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”);elseprintf(“failed\n”);grade>=60print“passed”真假print“failed”算法实现(2)用双分支选择结构
#include<stdio.h>intmain(void){intaNum=0,bNum=0;intgrade;while(scanf("%d",&grade)!=EOF){if(grade>=60){printf("youbelongingroupA\n");aNum=aNum+1;else//if(grade<60){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”,i>j?i:j);例4:返回
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 养鱼技巧与知识培训课件
- 2025年度海洋动物运输与供应链管理合同3篇
- 绿森钢化中空玻璃迁扩建项目可行性研究报告模板-立项拿地
- 全国清华版信息技术小学四年级下册新授课 第4课 独特景观-在幻灯片中插入文本框 说课稿
- Unit7 Grammar Focus 说课稿 2024-2025学年人教版英语七年级上册
- 贵州省安顺市(2024年-2025年小学六年级语文)统编版竞赛题(下学期)试卷及答案
- 安徽省合肥市新站区2024-2025学年九年级上学期期末化学试卷(含答案)
- 二零二五年度周转材料租赁与施工现场安全生产合同3篇
- 陕西省商洛市(2024年-2025年小学六年级语文)部编版小升初真题(上学期)试卷及答案
- 贵州黔南经济学院《手绘表现技法景观》2023-2024学年第一学期期末试卷
- 事业单位公开招聘工作人员政审表
- GB/T 35199-2017土方机械轮胎式装载机技术条件
- GB/T 28591-2012风力等级
- 思博安根测仪热凝牙胶尖-说明书
- 信息学奥赛-计算机基础知识(完整版)资料
- 数字信号处理(课件)
- 出院小结模板
- HITACHI (日立)存储操作说明书
- (新版教材)苏教版二年级下册科学全册教案(教学设计)
- 61850基础技术介绍0001
- 电镜基本知识培训
评论
0/150
提交评论