程序控制结构选择.ppt_第1页
程序控制结构选择.ppt_第2页
程序控制结构选择.ppt_第3页
程序控制结构选择.ppt_第4页
程序控制结构选择.ppt_第5页
免费预览已结束,剩余34页可下载查看

下载本文档

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

文档简介

1,程序设计,主讲:王鸿,C语言,第四章选择结构程序设计,作业,重点,预习,关系运算符及表达式if语句If语句的嵌套switch语句,本章重点,关系运算符与表达式,逻辑运算符与表达式,if语句的3种常见形式,程序设计的三种基本结构,顺序结构,选择结构,循环结构,引例-p66,求一个数x的绝对值,若x小于0,则其绝对值为-x,否则为x,举例,判断一个整数x是否为5的倍数,若x%5等于0,则x是5的倍数,否则不是,上述各例需解决的问题C如何表示:,若则否则选择结构,小于,等于关系运算符,引例,关系运算,将百分制的成绩转换成等级制,10090-A,若成绩90,并且成绩100,则为A,并且逻辑运算符,逻辑运算,关系运算符及关系表达式-p49,关系表达式的值即运算结果为:,逻辑值-成立为“真”-1,否则为“假”-0,()*/%+-=b)max=a;elsemax=b;printf(“%fn”,max);,max=(ab)?a:b;printf(“%fn”,max);,条件运算符及其表达式:,优先级:,*/%+-?:=,例4.15-p83-输入3个整数,输出max和min,举例,If-else应用举例-及课后作业-上机练习题,嵌套,例4.14知三边,求三角形面积(用逻辑运算符),补充题:输入一个整数,判断能否被3或7整除,若能输出“YES”,否则输出NO,指导p36:题2.输入一个正整数x,判断它是奇数还是偶数,并输出判断结果(2iseven.3isodd),输指导p36:题3.输入x和a的值,按下公式计算y的值:(使用函数fabs(x),If-语句的嵌套-例4.8-p73(用嵌套实现-p74p75),floatx,y;scanf(%f,if(x50)y=x*x;elsey=0;,从上到下按顺序查看配对else与if的配对原则:上面、最近、可见、尚未配对的ifelse与if的数目相等!,switch,思考:上程序段能省花括号?,chargrade;grade=getchar();if(grade=A)printf(90100n);elseif(grade=B)printf(8089n);/*/elseprintf(Errorn);,switch语句引例输入5级制,输出相应的百分制-p75,多分支选择结构,降低可读性且易出错,C提供的switch语句可方便地处理多分支选择结构,Switch引例,switch,应用举例,switch(表达式)case常量表达式1:语句组1.case常量表达式n:语句组ndefault:语句组n+1,switch语句-p76,每个常量表达式值必须唯一,且为整型或字符常量,grade(表达式值)等于某常量表达式值时,执行其后语句组,直到遇见break或switch结束处的花括号止。,switch(grade)caseA:printf(90100n);break;caseB:printf(8089n);break;/*/default:printf(Errorn);,default为任选项,且位置不唯一(建议置于尾部)。,表达式可为任意类型,但结果取整。,表达式,常量表达式,例4.10-p78、例4.11-p79(嵌套)、例4.12-p80,Switch引例,switch,应用举例,综合应用举例-p81,例4.13判别字符是数字/字母还是其它字符,例4.17求方程ax2+bx+c=0的完全解(用if),Switch引例,switch,应用举例,指导p36:题4.输入百分制转换成5级值(限用switch),指导p36:题8.输入一个不多于4位的正整数x,求它的位数,并按逆序输出各位数字(限用if-elseif-else),第1、2、3、5课后作业-上机题,指导p36:题5.输入年和月,输出该年此月有几天(限用switch,考虑闰年),例4.10-p78-将百分制转换成等级制分数,intscore;scanf(%d,switch(score/10)case10:case9:printf(“An”);break;case8:printf(“Bn”);break;case7:printf(“Cn”);break;case6:printf(“Dn”);break;default:printf(“En”);break;,思考题:,break能删除?删除后的结果?floatscore?,例4.12-p80-两浮点数的加、减、乘、除计算器,charc;floata,b;scanf(%f%c%f,/*1+2*/,switch(c)case+:printf(“%fn”,a+b);break;case-:printf(“%fn”,ab);break;case*:printf(“%fn”,a*b);break;case/:if(b=0)printf(“Byzero!n);elseprintf(“%fn”,a/b);break;default:printf(Errorn);,例4.11-p79-switch嵌套练习a=1,b=2,intx=1,y=1,a=0,b=0;switch(x)case1:switch(y)case0:a+;case1:b+;default:a+;b+;break;case2:a+=2;b+=2;break;default:a+=3;b+=3;printf(na=%d,b=%d,a,b);,switch用法及注意事项判断下列语句段的对误,switch(w)case1.0:y=1.0;case2.0:y=2.0;/*错*/,switch(a+1)case1y=1;case2y=2;/*错*/,switch(b+0.5);/case1:y=1;case1+2:y=3;default:y=0;/*设b=1;*/,switch(b)case1:y=1;default:y=0;case1:y=3;/*错*/,情常唯一且!=浮点型;表式类型任意但结果取整;default位置任意,建议置尾;break常随。,关系表达式运算练习求各输出语句的结果,1,inta=3,b=2,c=1;,printf(%dn,ab);,printf(%dn,(ab)=c);,printf(%dn,b+cbc);,printf(%dn,(a=4)(b=5);,运算结果是逻辑量C用1-真,0-假注意优先级同级注意结合方向,1,1,0,0,0,逻辑运算符及表达式举例及注意事项-p51,printf(%dn,ab,inta=4,b=3,c=8;,1,printf(%dn,ab|b右扫描,先判“短路”,后据优先级判断,代数式0x10转化成C的表达式?,0=x=10,(错),0=x,1,printf(%dn,ab|b右扫描,先判“短路”,后据优先级判断,代数式0x10转化成C的表达式?,0=x=10,(错),0=xscanf(%d,if(score60)printf(“En);elseif(score70)printf(“Dn);elseif(score80)printf(Cn);elseif(score90)printf(“Bn);elseprintf(“An);,例4.8-p73-多分支-求分段函数,#includevoidmain()floatx,y;scanf(%f,思考题:,if(0=100)printf(水已开,);printf(可放心饮用!n);elseprintf(水未开,);printf(请耐心等待!n);,例4.13-p81-判断输入字符的类型,charc;printf(inputacharacter:);c=getchar();if(c=0,用字符处理标准函数,必含#include,#includefloata,b,c,s,area;scanf(%f,%f,%f,例4.14-p82-求三角形面积-用逻辑表达式,if(a+bcarea=sqrt(s*(s-a)*(s-b)*(s-c);printf(area=%7.2fn,area);,elseprintf(notatriangle.n);,例4.15-p83-求三个整数中的最大数、最小数,inta,b,c,max,min;printf(inputthreenumbers:);scanf(%d,%d,%d,注意:下半部分的判别,不适宜用条件表达式。,条件表达式非常适用于判断结果都赋予同一变量的情况。,指导p36-题5-输入年月,求该月的天数,需考虑闰年的情形。注:符合以下条件之一是闰年:能被4整除,但不能被100整除;能被400整除。,intd,m,y;/*leap=1是闰年,d-天,m-月,y-年*/scanf(%d,%d,switch(m)case1:case3:/*省略*/d=31;break;case4:case6:/*省略*/d=30;break;case2:if(y%4=0,例4.17-p86-一元二次方程全解-part1,floata,b,c,d,x1,x2,p,q;printf(Inputa,b,c:);scanf(%f,%f,%f,if(a=0)if(b=0)if(c=0)printf(Impossible.n);elseprintf(Trivial.n);elseprintf(Aroot:x=%.4fn,-c/b);,例4.17-p86-一元二次方程全解-part2,elsed=b*b-4*a*c;/*此行的else与if(a=0)配*/if(d=0)x1=(-b+sqrt(d)/(2*a);x2=(-b-sqrt(d)/(2*a);printf(Tworealroots:);printf(x1=%.4f,x2=%.4fn,x1,x2);elsep=-b/(2*a);q=sqrt(-d)/(2*a);printf(Twocomplexroots:n);printf(x1=%.4f+%.4fin,p,q);printf(x2=%.4f-%.4fin,p,q);,例4.5-p67-从键盘输入一个字母,以小写字母形式输出该字母。,#includevoidmain()charc;printf(Inputaletter:);c=getchar();if(c=A*/,思考:字母大小写转换的其他方法?,例4.6-p68-从键盘输入两个整数,按升序输出这两个数。,#includevoidmain()inta,b,t;scanf(%d,%d,思考:能否将if语句中的花括号去除?,下面程序输出结果-识别嵌套与非嵌套:,voidmain()intx=5,a=4,b=6;intv1=5,v2=-2;if(a0)x=10;printf(%dn,x);/*x=0*/,if语句的断句方法:,if可独存立,else不可,if、else后都只跟1条语句,违背上述原则时止,指导p36-题8

温馨提示

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

评论

0/150

提交评论