资源预览内容
第1页 / 共40页
第2页 / 共40页
第3页 / 共40页
第4页 / 共40页
第5页 / 共40页
第6页 / 共40页
第7页 / 共40页
第8页 / 共40页
第9页 / 共40页
第10页 / 共40页
第11页 / 共40页
第12页 / 共40页
第13页 / 共40页
第14页 / 共40页
第15页 / 共40页
亲,该文档总共40页,到这儿已超出免费预览范围,如果喜欢就下载吧!
点击查看更多>>
资源描述
,4.1,选择结构和条件判断,C,语言有两种选择语句,:,(1),if,语句,,实现两个分支的选择结构,(2),switch,语句,,实现多分支的选择结构,4.1,选择结构和条件判断,例,4.1,在例,3.5,的基础上对程序进行改进。题目要求,是,求,方程的根。,由键盘输入,a,b,c,。假设,a,b,c,的值任意,并不保证,。需要在程序中进行判别,如果,,就计算并输出方程的两个实根,,否则,就输出,“,方程无实根,”,的信息。,解题思路:,输入,a,b,c,计算,disc,discb,,,交换,a,b,,否则不交换,S3:,顺序输出,a,,,b,解题思路:,S1:if ab,,,a,和,b,对换,(,a,是,a,、,b,中的小者),S2:if ac,,,a,和,c,对换,(,a,是三者中最小者),S3:if bc,,,b,和,c,对换,(,b,是三者中次小者,),S,4:,顺序输出,a,,,b,,,c,例,4.3,输入,3,个数,a,,,b,,,c,,要求按由小到大的顺序输出。,if,语句的三种形式,形式一:,格式:,if(,表达式,),语句,执行过程:,表达式,语句,非,0,=0,例:,if(xy),printf(“%d”,x);,表达式,语句,1,语句,2,非,0,=0,形式二,:,格式,:,if(,表达式,),语句,1,else,语句,2,执行过程:,例:,if(xy)max=x;,else max=y;,4.2.2 if,语句,形式三:,格式,:,if(,表达式,1),语句,1,else if(,表达式,2),语句,2,else if(,表达式,3),语句,3,.,else,语句,n ,expr1,statemnt1,非,0,=0,expr2,expr3,statemntn,statemnt3,statemnt2,非,0,非,0,=0,=0,执行过程:,例:,if(number500)cost=0.15;,else if(salary300)cost=0.10;,else if(salary100)cost=0.075;,else if(salary50)cost=0.05;,else cost=0;,说明:,1、,if,语句后面的表达式,一般为逻辑表达式或关系表达式,但,也可是任意的类型。,2、,else,不能作为单独的语句使用,必须和,if,配对使用。,3,、在,if,和,else,只能控制其后的一条语句,如果是多条语 句,应该用,括起来成为一个,复合语句,。,4,、,if,语句中又包含一个或多个,if,语句。从最内层开始,,else,总是与它,上面最近的未曾配对的,if,配对,。,5,、为避免错用,最好使,if,和,else,数目相同,也可用,来确定。,4.3,关系运算符和关系表达式,4.3.1,关系运算符及其优先次序,4.3.2,关系表达式,4.4,逻辑运算符和逻辑表达式,4.4.1,逻辑运算符及其优先次序,4.4.2,逻辑表达式,4.5,条件运算符和条件表达式,三、条件运算符:三目运算符,一般形式:,expr1,?,expr2,:,expr3,执行过程,功能:相当于条件语句,但不能取代一般,if,语句,例,if(ab),printf(“%d”,a);,else,printf(“%d”,b);,printf(“%d”,ab?a:b);,例 求,a+|b|,printf(“a+|b|=%dn”,b0?a+b:a-b);,expr1,取,expr2,值,取,expr3,值,非,0,=0,例,(a=b)?Y:N,(x%2=1)?1:0,(x=0)?x:-x,(c=a&c0?1:(xb?a:cd?c:d,ab?a:(cd?c:d),4.5,条件运算符和条件表达式,例,4.4,输入一个字符,判别它是否大写字母,如果是,将它转换成小写字母;如果不是,不转换。然后输出最后得到的字符。,解题思路:用条件表达式来处理,当字母是大写时,转换成小写字母,否则不转换,大写转小写:,ch=(ch=A&ch=Z,)?(ch+32):ch,4.6,选择结构的嵌套,在,if,语句中又包含一个或多个,if,语句称为,if,语句的嵌套,一般形式:,if(),if(),语句,1,else,语句,2,else,if(),语句,3,else,语句,4,内嵌,if,else,总是与它上面最近的未配对的,if,配对,4.6,选择结构的嵌套,在,if,语句中又包含一个或多个,if,语句称为,if,语句的嵌套,if(),if(),语句,1,else,语句,2,内嵌,if,限定了内嵌,if,范围,例:请分析下列,ifelse,的配对情况,if(),if(),语句,1,else,if(),语句,2,else,语句,3,if(),if(),if(),语句,1,else,语句,2,else,语句,2,规范书写后一目了然:,if(),if(),语句,1,else,if(),语句,2,else,语句,3,if(),if(),if(),语句,1,else,语句,2,else,语句,2,为了使程序清晰、易读,写程序时对选择和循环结构应采用锯齿形的缩进形式。,4.6,选择结构的嵌套,例,4.5,有一函数,:,编一程序,,,输入一个,x,值,,,要求输出相应的,y,值。,4.6,选择结构的嵌套,解题思路:,用,if,语句检查,x,的值,根据,x,的值决定赋予,y,的值,由于,y,的可能值不是两个而是三个,因此不可能只用一个简单的,(,无内嵌,if),的,if,语句来实现,4.6,选择结构的嵌套,解题思路:,方法,1,(1),先后用,3,个独立的,if,语句处理:,输入,x,若,x 0,则,y=1,输出,x,和,y,scanf(%d,if(x0)y=1;,printf(x=%d,y=%dn,x,y);,4.6,选择结构的嵌套,解题思路:,方法,2,(2),用一个嵌套的,if,语句处理:,输入,x,若,x 0,则,y=-1,否则,若,x=0,则,y=0,否则,y=1,输出,x,和,y,scanf(%d,if(x0)y=-1;,else,if(x=0)y=0;,else y=1;,printf(x=%d,y=%dn,x,y);,4.6,选择结构的嵌套,解题思路:,方法,2,(2),用一个嵌套的,if,语句处理:,输入,x,若,x 0,则,y=-1,否则,若,x=0,则,y=0,否则,y=1,输出,x,和,y,scanf(%d,if(x=0),if(x0)y=1;,else y=0;,else y=-1;,printf(x=%d,y=%dn,x,y);,提倡,内嵌,if,放在,else,中,4.7,用,switch,语句实现多分支选择结构,switch,语句用来实现多分支选择结构,学生成绩分类,85,分以上为,A,等,70,84,分为,B,等,60,69,分为,C,等,人口统计分类,按年龄分为老、中、青、少、儿童,4.7,用,switch,语句实现多分支选择结构,例,4.6,要求按照考试成绩的等级输出百分制分数段,,A,等为,85,分以上,,B,等为,70,84,分,,C,等为,60,69,分,,D,等为,60,分以下。成绩的等级由键盘输入。,4.7,用,switch,语句实现多分支选择结构,解题思路:,判断出,这是一个多分支选择问题,根据百分制分数将学生成绩分为,4,个等级,如果用,if,语句,,,至少要用,3,层嵌套的,if,,进行,3,次检查判断,用,switch,语句进行一次检查即可得到结果,switch,语句的作用是根据表达式的值,使流程跳转到不同的语句,switch,语句的一般形式,:,switch,(,表达式,),case,常量,1,:语句,1,case,常量,2,:语句,2,case,常量,n,:语句,n,default :,语句,n+1,整,型或,字符型,常量、变量或表达式,必须为简单,整,型或,字符型,的常量,不能是变量或表达式;各常量必须互不相同。,scanf(%c,printf(Your score:);,switch(grade),case A:printf(85,100n);break;,case B:printf(70,84n);break;,case C:printf(60,69n);break;,case D:printf(60n);break;,default:printf(enter data error!n);,scanf(%c,printf(Your score:);,switch(grade),case A:printf(85,100n);break;,case B:printf(70,84n);break;,case C:printf(60,69n);break;,case D:printf(60n);break;,default:printf(enter data error!n);,scanf(%c,printf(Your score:);,switch(grade),case,A,:,case,B,:,case,C,:printf(60,69n);break;,case D:printf(c&b+ca&c+ab),/复合语句开始,double s,area;/在复合语句内定义变量,s=(a+b+c)/2;,area=sqrt(s*(s-a)*(s-b)*(s-c);,printf(area=%.4fn,area);/指定输出的数包含4位小数,/复合语句结束,else printf(it is not a trilateral!n);,return 0;,例,4.12,输入两个整数,输出其中的较大数。,【,任务要求,】,掌握求最值的算法,以及,if,语句实现双分支结构的应用。,输入数据,x,y,Y,N,xy,输出,max,的值,max=y,max=x,No,Yes,xy,输入,x,,,y,开始,max=y,输出,max,结束,(a),案例,3.1,的流程图,(b),案例,3.1,的,N-S,图,max=x,例,4.12,的算法描述,【,程序详解,】,/*ex4-12.c,求两个数的最大数*,/,#include,void main(),int x,y,max;,printf(,请输入两个整数,:);,scanf(%d%d,if(xy),/,判断条件,max=x;,else,max=y;,printf(max is :%dn,max);,/,输出,max,【,思考,】,求,3,个数中的最大数,/,最小数或求,4,个数中的最大数,/,最小数,如何实现?,例,4.14,计算以下分段函数的值。,【,目的,】,掌握,ifelse,构造多分支选择结构的算法,【,算法分析,】,(,1,)输入,x,的值,(,2,),if(x1),y,的值为,x,,执行,(5),,否则执行,(3),(,3,),if(x10),,,y,的值为,2*x-1,,执行,(5),,否则执行,(4),(,4,),y,的值为,3*x-11,(,5,)输出,y,的值,【,程序祥解,】,/*ex4-14.c,求解分段函数*,/,#include,void main(),float x,y,;,printf(请输入,x,:);,scanf(%,f,&,x,);,if(,x1,),y=x;,else,if(,x10,),y=2*x-1;,else y=3*x-11;,printf(,x=%.2f,y=%.2f,n,x,y,);,y=2x-1 1 x,10,x x,1,3x-11 x 10,【,思考,】,程序中虚线部分有没有其他的写法?,课堂小结,C,实现选择(分支)结构的方法,ifelse,语句,switch,语句,两种方法均可实现,单分支,、,双分支,及,多分支,选择,在,if,之后的表达式可以是任意类型的表达式,取,逻辑值,else,只能和,if,配对使用,配对原则是,“,else,总是和上面最近的未曾配对的,if,配对,”,,决定在哪个,if,条件不成立时执行该,el
点击显示更多内容>>

最新DOC

最新PPT

最新RAR

收藏 下载该资源
网站客服QQ:3392350380
装配图网版权所有
苏ICP备12009002号-6