判断与决策_选择程序设计教材

上传人:xkh****321 文档编号:253051187 上传时间:2024-11-28 格式:PPTX 页数:54 大小:384.50KB
返回 下载 相关 举报
判断与决策_选择程序设计教材_第1页
第1页 / 共54页
判断与决策_选择程序设计教材_第2页
第2页 / 共54页
判断与决策_选择程序设计教材_第3页
第3页 / 共54页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,2021/2/8,#,高级语言程序设计,选择程序设计(2),复习,1 判断条件的形式:通常是用关系表达式,2 判断条件的结果:逻辑真 1、逻辑假 0,3 实际上除了关系表达式之外,,任何有计算结果的表达式都可以作为,判断条件,,计算结果不为零的数均转化为逻辑真,计算结果为0即为逻辑假,算术表达式,函数调用表达式,4甚至是简单的变量或常量都可以,选择结构的两种形式:,if ( condition ),if (,condition,),else,注意大括号的使用 ,复合语句块用 括起来,if ( ),.多条语句复合到一起,.,一条语句的时候省略 ,问题3: 按成绩把学生分成多组,问题描述:教师要把参加某次测验的学生按成绩的分数段(90以上,80到89,70到79,60到69,小于60)分成多组,并统计出各组的人数。,分析,输入:,学生成绩grade,输出:根据成绩的范围,输出不同的结果,A,B,C,D,或者F,和统计结果,如何判断grade所在的范围?,90以上,,80到89,70到79,60到69,,小于60,if (grade=90),但是 if( 89=grade=60),if ( grade = 60),if ( grade =60) ,if ( grade =60),if ( grade = 90 ),printf(“good,!,!ingroupAn”);,else,if( grade =80),printf(,“,“ better!ingroupn”);,else,printf( “ok, in CorDorFn,”,”);,更好的,写,写法,if( grade = 90 ),printf(“good,!,!ingroupAn”);,elseif( grade =80),printf(,“,“ better!ingroupn”);,else,printf( “ok, in CorDorFn,”,”);,注意:,多个if-else,嵌,嵌套,ifelse的匹,配,配原则,是,是:,else与前,面,面最近,的,的没有,被,被使用,的,的if,匹,匹配,算法设,计,计(1,),),1 求,和,和变量aNum,bNum,,,,cNum,dNum,fNum,初,初始化,为,为0;,2 输,入,入学生,成,成绩;,3 如,果,果输入,没,没有结,束,束则执,行,行(4)否则,执,执行(9);,4 如,果,果成绩,大,大于或,等,等于90,输,出,出分到A组信,息,息,aNum,加,加1,返回到,(,(2),;,;,5 否,则,则如果,成,成绩还,大,大于或,等,等于80,输,出,出分到B组信,息,息,bNum,加,加1,返回到,(,(2);,6 否,则,则如果,成,成绩还,大,大于或,等,等于70,输,出,出分到C组信,息,息,cNum,加,加1,返回到,(,(2);,7 否,则,则如果,成,成绩还,大,大于或,等,等于60,输,出,出分到D组信,息,息,dNum,加,加1,返回到,(,(2);,8 否,则,则输出,分,分到F,组,组信息,,,,fNum加1,返回到,(,(2);,9 输,出,出统计,结,结果,算法实,现,现 见ifelsenest.c,#include,intmain(void),intaNum= 0, bNum=0,cNum =0,dNum= 0, fNum=0;,intgrade;,while(scanf(%d,&grade) != EOF),if( grade = 90 ),printf(Good! youbelongingroupAn);,aNum =aNum+ 1;,else if( grade = 80 ),printf(Better!you belongingroupBn);,bNum =bNum+ 1;,else if( grade = 70 ),printf(Middle!you belongingroupCn);,cNum =cNum+ 1;,else if( grade = 60 ),printf(Pass! youbelongingroupDn);,dNum =dNum+ 1;,else,printf(Sorry,youare failed,belong in group Fn);,fNum =fNum+ 1;,printf(aNum=%dn,aNum);,printf(bNum=%dn,bNum);,printf(cNum=%dn,cNum);,printf(dNum=%dn,dNum);,printf(FNum=%dn,fNum);,return0;,分析一,下,下该算,法,法的执,行,行情况,你可以,运,运行算,法,法1的,代,代码,,看,看看每,个,个学生,成,成绩要,判,判断几,次,次才能,找,找到它,适,适合的,位,位置。,如果成,绩,绩都是90以,上,上会怎,样,样?,如果成,绩,绩都是60、70分,甚,甚至更,低,低会怎,么,么样?,正常情,况,况下学,生,生的成,绩,绩处于,中,中游的,比,比较多,,,,即大,多,多数都,在,在70,和,和80,之,之间,符合客,观,观实际,的,的、更,好,好的结,构,构应该,是,是什么,?,?,算法实,现,现 见ifelsebetter.c,重新分,析,析一下,问,问题,如果把,成,成绩除,以,以10,取,取整,,可,可以发,现,现,100分,对,对应10,90,到,到99,分,分对应9,80,到,到89,分,分对应8,依此,类,类推,0到9,分,分的对,应,应0,依据整,型,型常量10,9,8,7,6,5,4,3,2,1,0可断定,该,该同学,应,应该分,到,到哪一,组,组,算法设,计,计(2,),),1,求和变,量,量aNum,bNum,cNum,,,,dNum,fNum初始,化,化为0,;,;,2 输,入,入学生,成,成绩grade;,3 如,果,果grade,大,大于100或,小,小于0,,,,输出,错,错误信,息,息,返,回,回到(2);,4 如,果,果输入,没,没有结,束,束则执,行,行(5)否则,执,执行(12),5 把,成,成绩除,以,以10,并,并取整,,,,得到,对,对应的,整,整型值number,6 如,果,果number是10或9,,,,输出A组信,息,息,aNum,加,加1,,返,返回(2);,7 如,果,果number是8,输,出,出B组,信,信息,bNum加1,,,,返回,到,到(2,),);,8 如,果,果number是7,,,,输出C组信,息,息,cNum,加,加1,,返,返回到,(,(2),;,;,9 如,果,果number是6,,,,输出D组信,息,息,dNum,加,加1,,返,返回到,(,(2),;,;,10如,果,果number是5,或,或4或3或2,或,或1或0,输,出,出F组,信,信息,fNum加1,,,,返回,到,到(2,),);,11,如,如果number是,其,其它数,字,字,输,出,出错误,信,信息,,返,返回到,(,(2),;,;,12,输,输出统,计,计结果,。,。,switchcase,多,多分支,选,选择结,构,构,switch(整型,表,表达式,),),case常量表,达,达式:,要执行,的,的语句,break;,case常量表,达,达式:,要执行,的,的语句,break;,default:,默认的,执,执行语,句,句,几个组,成,成部分,switch(表,达,达式)必须是,整,整型值,的,的表达,式,式,switch,的,的主体,用,用一对,花,花括号,括,括起 ,多个平,行,行的case 常,量,量表达,式,式:,每个case,里,里的,要,要执行,的,的语句,可,可以是,多,多条语,句,句,它,们,们不必,使,使用括起,来,来。也,可,可以没,有,有语句,在整个swith主,体,体的最,后,后是一,个,个可选,的,的default :,动作,Case 1,break,Case 2,Case n,default,算法实现(switch case),见 switchint.c,5分制成绩,统,统计问题,输入的学生,成,成绩是 A/a, B/b,成绩是一个,字,字符,怎么输入字,符,符呢?字符,是,是什么?,字符可以看,成,成整数(ascii码,),),如何判断输,入,入的是什么,字,字符?,字符型,char,charc1, c2, c3;,c1 =,A;,c2 =,b;,c3 =,1;,也可以用整,型,型变量存放,字,字符常量,,如,如,int grade1, grade2;,grade1 = A;,grade2 = B;,计算机内部,接,接受的是,A ,B的ASCII,码,码。,字符比较,两个字符常,量,量或者存放,字,字符常量的,变,变量可以比,较,较大小,ascii,码,码进行比较,字符型数据,的,的输入,可以使用scanf和printf函数对字,符,符型数据进,行,行输入和输,出,出,占位符,是,是%c。,ASCII,码,码是10的,字,字符是回车,符,符。这说明,我,我们输入了,一,一个字符a后输入,的,的回车符被,变,变量a第二,次,次读到了。,这个回车符,是,是没有用的,,,,因此用一,个,个临时变量t把从输入,缓,缓冲区中读,出,出。下例的scanf(“%d”,&t)就,起,起这个作用,。,。,键盘读一个,字,字符的函数,getchar( ),a = getchar( );代替scanf(“%c”,&a,),);,getchar( );代替 scanf(“%c”,,输出一个字,符,符到屏幕的,函,函数,putchar(a);,代替,printf(“%c,”,”,a);,算法设计(3),1,求和变量aNum,bNum,cNum,,dNum,fNum初,始,始化为0;,2 输入学,生,生成绩grade;,3 如果输,入,入没有结束,则,则执行(4)否则执行(10);,4 如果grade是,A,输,输出A组信,息,息,aNum加1,返,回,回到(2),;,;,5 如果grade是,B,输,输出B组信,息,息,bNum加1,返,回,回到(2),;,;,6 如果grade是,C,输,输出C组信,息,息,cNum加1,返,回,回到(2),;,;,7 如果grade是,D,输,出,出D组信息,,,,dNum,加,加1,返回,到,到(2);,8 如果grade是,F,输,输出F组信,息,息,fNum加1,返,回,回到(2),;,;,9 如果grade是,其,其它字符,,输,输出错误信,息,息,返回到,(,(2);,10 输出,统,统计结果。,算法实现,见,见switch5grade.c,从键盘获得,一,一个字符的,另,另外两个函,数,数,#include,getche( ),它能接收,键,键盘输入的,任,任意一个字,符,符,无需回车即,可,可以接受,自动的显,示,示到屏幕上,,,,称之为回显。,getch( ),它同getche() 不同,的,的就是无回显。,这两个与getchar( )比,较,较,getchar( ),需,需要按回车,键,键,变量才能,在,在输入缓冲,区,区中读到一,个,个字符,无回显。,演示三种字,符,符输入函数,观察它们的,区,区别,问题4:判,断,断某年是否,为,为闰年,问题分析:,判断某年是,不,不是闰年的,条,条件“某年能被4整除但不,能,能被100,整,整除或者能被4整除,又,又能被400整除”,某年是闰年,的,的条件为,(1) “year能,被,被4整除”并且“year,不,不能被100整除”,或者,(2) “year能,被,被4整除”,并,并且“year也能被400整除,”,”,并且关系的两个判断,如,如何表示?,int pass =0;,int grade1,grade2;,scanf(“%d%d”,如果 grade1= 60,且,且 grade2= 60 pass=1,用嵌套,或关系的两个判断,如,如何表示?,int nopass= 0;,int grade1,grade2;,scanf(“%d%d”,如果 grade1 60,或,或者grade2 = 60) &( grade2= 60 ),逻辑与的优,先,先级低于关,系,系运算,可,以,以省略(),上式等价于grade1 =60 & grade2= 60,( grade1 60 )|( grade2 60),逻辑或的优,先,先级低于关,系,系运算,可,以,以省略 () ;,上式等价于grade1 60 |grade2 = 90),逻辑非是单,目,目运算,它,的,的优先级高,于,于关系运算,,,,因此不可,以,以省略(),优先级与结,合,合性,算术运算,关,关系运算,逻,逻辑与运算逻辑或运,算,算, 它们,依,依次降低,,但逻辑非运,算,算的优先级,高,高于算术运,算,算,逻辑运算是,左,左结合的,逻辑运算的短路性,逻辑运算的,操,操作数是0,和,和1,0和1的运算是,有,有规律的,由“逻辑与”运算组成,的,的表达式,从左至右计,算,算,遇到0就不用再向,右,右计算了,因这时逻,辑,辑表达式的,值,值必为假,,只,只有都是真,的,的时候向右,计,计算才有意,义,义。,( i != 0 )& (j / i0 ),由“逻辑或”构成的逻,辑,辑表达式也,是,是从左向右,计,计算,如果遇到有一个,操,操作数的表,达,达式的值是1就不用再向,右,右计算了,因这时整个,逻,逻辑表达式,的,的值必为真,。,。,( grade1 60 )|( grade2 60),利用短路性,某年是闰年,的,的条件为,(1) “year能,被,被4整除”并且“year,不,不能被100整除”,或者,(2) “year能,被,被4整除”,并,并且“year也能被400整除,”,”,闰年判断表,达,达式为:,(year%4 = 0&year%100!= 0)|year%400= 0,算法设计,1 输入年,份,份,2 判断,(year%4 = 0&year%100!= 0)|year%400= 0,是,是否为真,,如,如果为真输,出,出是闰年,实现(略),小结,有了算术运,算,算、关系运,算,算、逻辑运,算,算可以表达,各,各种各样的逻辑判断条,件,件,,使用单分支,或,或双分支或,者,者多分支结,构,构以及嵌套,技,技术可以解,决,决各种各样,的,的逻辑判断,问,问题,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 商业管理 > 营销创新


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!