第4章 选择结构程序设计.ppt_第1页
第4章 选择结构程序设计.ppt_第2页
第4章 选择结构程序设计.ppt_第3页
第4章 选择结构程序设计.ppt_第4页
第4章 选择结构程序设计.ppt_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

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

文档简介

第4章选择结构程序设计,要求:掌握关系运算符、逻辑运算符、条件运算符的运算规则、优先级与结合性;熟练掌握两种语句(if语句及switch语句)。,教学目标,要求:学生可以进行简单的顺序、选择程序设计,理解选择结构的嵌套使用,熟练使用标准输入输出函数。,教学重点:if语句和switch语句;选择结构的C程序的编写。,教学重难点,教学难点:选择结构的C程序的编写。,工作任务,任务1:判断两个整数的大小关系,并输出较大者。,实践知识,/*案例4-1*/#includestdio.hvoidmain(void)inta,b;printf(请输入两个整数:);scanf(%d,%d,知识链接,任务2:对学生考试成绩进行判断,如果低于60分必须参加辅导班。,实践知识,/*案例4-2*/#includestdio.hvoidmain()floatscore;printf(请输入学生成绩:);scanf(%f,知识链接,任务3:判断三个数的大小关系,并输出最大者。,/*案例4-3*/#includestdio.hvoidmain()intx,y,z,max;printf(请输入三个整数:);scanf(%d,%d,%d,实践知识,知识链接,实践知识,任务4:有一函数如下,输入x,输出y的值。x-9(x0)y(x)=3x+5(0x4)9x-7(x4),/*案例4-4*/#includestdio.hvoidmain()floatx,y;printf(请输入x的值:);scanf(%f,知识链接,任务5:请输入一个成绩,输出相应等级,其中90100为A等级,8089为B等级,7079为C等级,6069为D登记,059为E等级。,/*案例4-5*/#includestdio.hvoidmain()floatx;chary;printf(请输入1-100内的一个成绩:);scanf(%f,实践知识,知识链接,理论知识,在C语言中,没有专门的逻辑值,任意非0值都可以表示真,0值表示假。关系运算或逻辑运算的结果都为逻辑值,如果为真,则记为1,如果为假,则记为0。,C语言中的逻辑值,大于=大于或等于=等于!=不等于,优先级和结合性:关系运算符的优先级低于算术运算符,关系运算符中、=、a)运算结果:5强调:C语言用整数“1”表示“逻辑真”,用整数“0”表示“逻辑假”。所以,关系表达式的值,还可以参与其它种类的运算,例如算术运算、逻辑运算等,关系表达式是用关系运算符将两个表达式(可以是算术表达式、关系表达式、逻辑表达式、赋值表达式、字符表达式等表达式)连接起来的式子。例如:3+2=2*3;表示判断3+2的结果和2*3的结果是否相等。,关系表达式的一般形式为:表达式关系运算符表达式,关系表达式,理论知识,逻辑运算符elseprintf(“a!=b”);,条件运算符由“?”和“:”组合而成,是三目运算符,要求有3个操作对象,并且三个操作对象都是表达式。一般形式:表达式1?表达式2:表达式3,在条件语句中,若只执行单个赋值语句,我们常使用条件运算来表示。如:if(ab)max=a;elsemax=b;用条件运算可以表示为:max=(ab)?a:b;,条件运算符和条件表达式,条件表达式,运算规则:计算表达式1的值,若表达式1的值为真,则以表达式2的值作为整个条件表达式的值,否则以表达式3的值作为整个条件表达式的值。表达式1的类型可以与表达式2、3不同,表达式2、3的类型可以是数值表达式、赋值表达式或函数表达式。,优先级:条件运算符的运算优先级低于关系运算符和算术运算符,高于赋值符结合方向:自右至左,条件运算符和条件表达式,思考:使用条件运算符改写任务3.,任务3,理论知识,switch语句专门用于解决多分支选择问题其一般形式为:switch(表达式)case常量表达式1:语句组1;break;case常量表达式2:语句组2;break;case常量表达式n:语句组n;break;default:语句组n+1;,switch语句,任务5,执行过程:先计算switch后表达式的值,然后将该值与case标号后的各常量相比较,跳到与其值相当的case分支处,执行该case内的相关语句,一直执行到break语句;若是与所有case标号后的值都不相等,则执行default后对应语句,若此时没有default语句,则不执行任何分支,跳出switch语句,执行其后的其他语句。,switch语句,switch语句,【例如】switch(t)case10:case9:y=A;printf(“%cn”,y);case8:y=B;printf(“%cn”,y);case7:y=C;printf(“%cn”,y);case6:y=D;printf(“%cn”,y);default:y=E;printf(“%cn”,y);,若t=9,则连续输出ABCDE,若t=7,则连续输出CDE,若修改成下面的程序:switch(t)case10:case9:y=A;printf(“%cn”,y);break;case8:y=B;printf(“%cn”,y);break;case7:y=C;printf(“%cn”,y);break;case6:y=D;printf(“%cn”,y);break;default:y=E;printf(“%cn”,y);,若t=9,则输出A若t=7,则输出C,Switch语句注意事项,switch后面的表达式可以是int、char和枚举型中的一种;case每个后面的表达式必须互不相同,否则会出现矛盾的现象;case后面的常量表达式仅起语句标号的作用,并不进行条件判断。系统一旦找到入口标号,就从此标号开始执行,不再进行标号判断,所以要加上break语句,以便结束switch语句;default标号后的语句只是在找不到匹配值时才执行,即使放在第一句,也是如此,但我们习惯性将其放在switch语句的最后一句;switch测试表达式值与case后表达式常量是否相等,而if可进行表达式的真假判断,二者是不同的。,程序举例,【例1】输入一个十进制正整数,判断该数是否是7的倍数,若是输出Yes!,否则输出“No!”【分析】输入一个十进制数,判断是否为7的倍数,只需考察这个数对7取余数结果是否为0,为0就是7的倍数,否则就不是7的倍数。,#includemain()inta;printf(Enteraninteger:);scanf(%d,【程序】,例2、判断输入的字符属于哪一类字符:大写、小写、数字或其他字符#includemain()charch;printf(pleaseinputacharacter:n);scanf(%c,【例3】从键盘输入一个正整数作为年份,编程判断该年是不是闰年。若是输出“YES”,否则输出“NO”。,【分析】闰年的条件是:能被4整除,但不能被100整除的年份是闰年;能被4整除,并且能被400整除的年份是闰年。,#includestdio.hmain()intyear,flag;scanf(%d,main()intyear,flag=0;scanf(%d,判断闰年解法二,main()intyear;scanf(%d,判断闰年解法三,利用逻辑运算能描述复杂条件的特点,可将上述程序优化如下,例3已知某公司员工的保底薪水为500,某月所接工程的利润profit(整数)与利润提成的关系如下(计量单位:元):profit1000没有提成;1000profit2000提成10%;2000profit5000提成15%;5000profit10000提成20%;10000profit提成25%。输入利润,计算员工工资算法设计要点:为使用switch语句,必须将利润profit与提成的关系,转换成某些整数与提成的关系。分析本题可知,提成的变化点都是1000的整数倍(1000、2000、5000、),如果将利润profit整除1000,则当:profit1000对应0、11000profit2000对应1、22000profit5000对应2、3、4、55000profit10000对应5、6、7、8、9、1010000profit对应10、11、12、,为解决相邻两个区间的重叠问题,最简单的方法就是:利润profit先减1(最小增量),然后再整除1000即可:profit1000对应01000profit2000对应12000profit5000对应2、3、45000profit10000对应5、6、7、8、910000profit对应10、11、12、main()longprofit;intgrade;floatsalary=500;printf(Inputprofit:);scanf(%ld,/*将利润-1、再整除1000,转化成switch语句中的case标号*/,switch(grade)case0:break;case1:salary+=profit*0.1;break;case2:case3:case4:salary+=profit*0.15;break;case5:case6:case7:case8:case9:salary+=profit*0.2;break;default:salary+=profit*0.25;printf(salary=%.2fn,salary);,(1)选择结构的控制条件通常用关系表达式或逻辑表达式构造,也可以用一般表达式表示。因为表达式的值非0即为“真”,0即为“假”,所以具有值的表达式均可作为if语句的控制条件。(2)C语言利用if语句来实现选择结构,if语句主要有四种句式,分别是:单分支的if语句、双分支的if语句、多分支的if语句和嵌套的if语句。在嵌套if语句中,一定要搞清楚else与哪个if结合的问题。,根据某种条件的成立与否而采用不同的程序段进行处理的程序结构称为选择结构。选择

温馨提示

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

评论

0/150

提交评论