C语言程序设计 第5章 选择结构程序设计

上传人:沈*** 文档编号:243941860 上传时间:2024-10-01 格式:PPT 页数:39 大小:453.50KB
返回 下载 相关 举报
C语言程序设计 第5章 选择结构程序设计_第1页
第1页 / 共39页
C语言程序设计 第5章 选择结构程序设计_第2页
第2页 / 共39页
C语言程序设计 第5章 选择结构程序设计_第3页
第3页 / 共39页
点击查看更多>>
资源描述
*,第五章选择结构程序设计,5.3 switch,语句,5.4,选择结构程序设计举例,5,.2 if,语句,5,.1,关,系运算符和表达式,,,逻辑运算符和表达式,小于 ,,53, 35,=,小于等于,,5=3,3,大于,,53,,,35,=,大于等于,,5 =3,3 =5,,,与数学上,(),不同,=,等于,,5=3 ,与数学上,(=),不同,!=,不等于,,5!=3,,,与数学上,(),不同,1,、关系运算符,5.1.1,关系运算符和关系表达式,关系运算:比较运算,比较两个操作数,看是否满足给定的关系。,=,=!=,优先级别相同,优先级别相同,高,算术运算符,关系运算符,赋值运算符,高,优先级,低,低,2,、关系表达式:,用,关系运算符,将两个表达式连接起来的式子,称为关系表达式。,例:,ab,a+b,b+c,ab)(b,b&x,y,(a,b)&(x,y),a=,b|x,=y,(a=,b)|(x,=y),!,a|a,b,(!,a)|(a,b),、逻辑表达式,用,逻辑运算符,将两个表达式连接起来的式子,称为逻辑表达式。,注意:逻辑表达式的值,是一个,逻辑值,,即,“真”,或,“假”,以数值代表“真”,以代表“假”,但在判断一个量是否为“真”时,以,代表“假”,以,非,代表“真”,例:,1,若,a=4,则,!a,的值为,2,若,a=4,b=5,则,a&b,的值为,1,,因为,a,和,b,均为非,0,,则被 认为是 “真” ,因此,a&b,的值也为“真”,值为,1,3 4&0|2,的值为,1,4 a&,b,的值为,1,因为,a,和,b,的,ASCII,值都不为,通过以上几个例子可以看出,逻辑运算结果不是就是,不可能有其他数值。然而在逻辑表达式中作为参加逻辑运算的运算对象可以是或任何非数值。表示 “假” ,任何非数值都按照 “真”对待,另外需要注意的是,在逻辑表达式的求解中,并不是所有的逻辑运算符都被执行,只有在必须执行下一个逻辑运算符才能求出表达式的解时,才执行该运算符,例如,:,1,a&b&c,只有,a,为真,(,非,0),时,才需要判断,b,的值,只有,a,和,b,都为真的情况下才需要判别,c,的值。只要,a,为假,就不必判别,b,和,C,,因为此时整个表达式已确定为假。若,a,为真,,b,为假,不判别,c,a,b,c,0,非,0,非,0,非,0,0,0,0(,假,),(,真,),2,a|b|c,只要,a,为真,(,非,0),时,就不用判断,b,和,c,,只有,a,为假,才判断,b,,,a,和,b,都为假时才判断,c,a,b,c,0,非,0,非,0,非,0,0,0,0(,假,),(,真,),也就是说,对,&,运算符来说,只有,a!=,,才继续进行其右边的运算。对,|,运算符只有,a=0,才继续右边的运算,例:设,a=1,b=2,c=3,d=4,m=1,n=1,判断逻辑表达式,(m=a,b)&(n,=cd),的逻辑值和完成此运算后,m,和,n,的值,此逻辑表达式的值为,“,假,”,运行完后,,m,而,n=cd,不被执行,因此,n,的值仍保持原值,5.2 if,语句,1、,单分支选择,if,语句,if,语句有三种形式:,单分支选择,if,语句,、,双分支面具选择,if,语句,、,多分支选择,if,语句,。,语句形式:,if (,表达式) 语句;,语句执行流程:,表达式,语句,真(非0),假(0),5.2.1 if,语句的三种形式,例:从键盘输入两个整数,a,和,b,,如果,a,大于,b,则交换两数,最后输出两个数。,#,include ,ab,交换,a、b,真,假,main(),int,a,b,t;,scanf(%d,%d,&a,&b,);,if(ab) t=a;a=b;b=t;,printf(a,=%d,b=%dn,a,b);,输入,a,b,输出,a,b,结束,注意:,(,1,),if,语句自动结合一个语句,当满足条件需要执行多个语句时,应用一对大括号, ,将需要执行的多个语句括起,形成一个复合语句。,(2),if,语句中表达式形式很灵活,可以是常量、变量、任何类型表达式、函数、指针等。只要表达式的值为非零值,条件就为真,反之条件为假。,2,、,双分支选择,if,语句,语句形式:,if (,表达式) 语句1;,else,语句2 ;,语句执行流程:,表达式,语句1,真(非0),假(0),语句2,例,输入两个整数,输出其中较大的数。,#,include ,main(),int,x,y,max;,scanf(%d,%d,&x,&y,);,if(xy) max=x;,else max=y;,printf(max,=,%,dn,max);,输入,x,y,xy,max=x,输出最大值,结束,真,假,max=y,例:,计算分段函数,y=,3-x x0,2/x x0,输入,x,x=0,输入,y,y=3-x,y=2/x,真,假,程序如下:,#include “,stdio.h,”main() float,x,y,;,scanf(“%f”,&x,);,if(x,b) a+,;,b+,;,else a=0,;,b=10,;,3,、,多分支选择,if,语句,语句形式:,If(,表达式,),语句;,else,if(,表达式,),语句;,else,if(,表达式,n),语句,n,;,else,语句,n+1;,语句执行流程:,表达式,1,语句1,真(非0),假(0),语句2,表达式,2,真(非0),表达式,2,语句,n,语句,n+1,假(0),假(0),真,(,非,),a=90,Printf,优,真(非0),假(0),输入分数,a,a=80,Printf,良,a=70,a=60,Printf,中,Printf,及格,Printf,不及格,假(0),假(0),假(0),真(非0),真(非0),真(非0),例:,输入不同的分数,输出其等级,例:,#,include ,main(), float a;,printf,(,请输入分数:,);,scanf(%f,&a,);,if(a,=90),printf,(,优,n);,else,if(a,=80),printf,(,良,n);,else,if(a,=70),printf,(,中,n);,else,if(a,=60),printf,(,及格,n);,else,printf,(,不及格,n);,注意:,(1)当,if,语句中出现多个,“,if,”,与,“,else,”,的时候,要特别注意它们之间的匹配关系,否则就可能导致程序逻辑错误。,“,else,”,与,“,if,”,的匹配原则是,“,就近一致原则,”,,即,“,else,”,总是与它前面最近的未配对的,“,if,”,相匹配。,(,2,),if,语句中条件的写法应尽量简单。,语句含义,:,语句形式:,当,if,语句中又包含若干个,if,语句时,则构成了,if,语句嵌套的情形。,if (,表达式1),if (,表达式2),语句1;,if (,表达式1),if (,表达式2),语句1;,else,语句2;,5.2.2,if,语句的嵌套,例:编写一个程序,输入,x,的值,输出相应,y,值,.,y=,-1,0,1,(x0),使用,If,语句嵌套编写该程序,#,include“stdio.h,”,main(),int,x,y,;,scanf(“%d”,&x,);,if(x,=0),if(x,0) y=1;,else y=0;,else y=-1;,printf(“x,=%,d,y,=%,d”,x,y,);,输入,x,开始,X=0,X0,y= 1,y= 0,y= -1,输出,x,结束,假,假,真,真,5.3 switch,语句,1、语句形式:,switch (,表达式),case,常量1: 语句1;,case,常量2: 语句2;,case,常量3: 语句3;,.,case,常量,n:,语句,n;,default :,语句,n+1;,根据表达式的不同值,选择不同的程序分支,又称开关语句,。,常量表达式的值必须互不相同,否则执行时将出现矛盾,即同一个开关值,将对应多种执行方案。,2、语句执行流程:,简单语句或复合语句,case,语句出,现的次序并,不影响执行,结果。,语句,1,表达式的值,语句,2,语句,3,语句,n,常量,1=,常量,2=,常量,3=,= =,常量,n,例:假设用0、1、2.6分别表示星期日、星期一.星期六。现输入一个数字,输出对应的星期几的英文单词。如果输入3,输出“,Wednesday”。,#,include ,stdio.h,main(),int,n;,scanf(,%d,&n,);,switch(n),case 0:,printf(Sundayn,);,case 1:,printf(Mondayn,);,case 2:,printf(Tuesdayn,);,case 3:,printf(Wednesdayn,);,case 4:,printf(Thursdayn,);,case 5:,printf(Fridayn,);,case 6:,printf(Saturdayn,);,default:,printf(Error,);,思考:结果如何?,程序运行情况如下:,3,Wednesday,ThursdayFridaySaturdayError,将上面的例修改如下:,#,include ,stdio.h,main(),int,n;,scanf(,%d,&n,);,switch(n),case 0:,printf(Sundayn,); break;,case 1:,printf(Mondayn,); break;,case 2:,printf(Tuesdayn,); break;,case 3:,printf(Wednesdayn,); break;,case 4:,printf(Thursdayn,); break;,case 5:,printf(Fridayn,); break;,case 6:,printf(Saturdayn,); break;,default:,printf(Error,);,程序运行情况如下:,3,Wednesday,说明:,switch,后面括弧内的“表达式”,,ANSI,标准允许它为任何类型,当表达式的值与某一个,case,后面的常量表达式相等时,就执行此,case,后面的语句,若所有,case,后面的常量值都没有与表达式的值相匹配的就执行,default,后面的语句。,常量表达式的值必须互不相同,,否则执行时将出现矛盾。,各个,case,和,default,的出现次序不影响执行结果,,因此各个,case,和,default,之间的顺序是可以调换的。,default,语句可以省略不用。,switch,语句可以嵌套,,break,语句只跳出它所在的,switch,语句。,执行完一个,case,后面的语句后,流程控制转移到下一个,case,继续执行。“,case,常量表达式”只是起语句标号作用,并不是在该处进行条件判断。在执行,switch,语句时,根据,switch,后面表达式的值找到匹配的入口标号,就从此标号开始执行下去,不再进行判断。,为此,,语言提供了一种,break,语句,其功能是可以跳出它所在的,switch,语句。,另外:,多个,case,语句可以共用一组执行语句。,switch(grade), case A:,case B:,case ,C:printf(grade,=60n);break;,default:printf(grade,60);,5.4,选择结构程序设计举例,例,:,将任意三个整数按从大到小的顺序输出,。,#,include ,stdio.h,main(),int,x,y,z,t;,scanf(%d,%d,%d,&x,&y,&z,);,if(xy) t=x;x=y;y=t; /*,交换,x,y,的值*/,if(xz) t=x;x=z;z=t; /*,交换,x,z,的值*/,if(yc&a+cb&b+ca),if(a=b&b=c),printf,(“,等边三角形,.n);,else if(a=b|a=c|b=c),printf,(“,等腰三角形,.n);,else,printf,(“,其它三角形,.n);,else,printf,(“,不能构成三角形,n);,作业,、给出百分制成绩,要求输出成绩等级,A,、,B,、,C,、,D,、,E,90,分以上为,A,,,80,89,分为,B,,,70,79,分为,C,,,60,69,分为,D,,,60,分以下为,E,。,(,用,if,嵌套或,switch,语句,),、计算分段函数,输入,x,,得到,y,值,计算分段函数。,假,输入,x,X=1,真,X10,y=3/(x-10),y=2x,y=x+5,假,真,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


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

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


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