C程序设计第05章

上传人:小*** 文档编号:243136362 上传时间:2024-09-16 格式:PPT 页数:58 大小:199.50KB
返回 下载 相关 举报
C程序设计第05章_第1页
第1页 / 共58页
C程序设计第05章_第2页
第2页 / 共58页
C程序设计第05章_第3页
第3页 / 共58页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,*,*,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,第五章分支结构程序,1,5.1,关系运算符和表达式,在程序中经常需要比较两个量的大小关系,以决定程序下一步的工作。比较两个量的运算符称为关系运算符。,2,5.1.1,关系运算符及其优先次序,小于,大于,=,大于或等于,=,等于,!=,不等于,3,关系运算符都是双目运算符,其结合性均为左结合,;,关系运算符的优先级低于算术运算符,高于赋值运算符,;,在六个关系运算符中,:,=,的优先级相同,高于,=和!=;,=和!=,的优先级相同。,4,5.1.2,关系表达式,关系表达式的一般形式为:,表达式 关系运算符 表达式,例如:,a+bc-d,x3/2,a,+1(bc),a!=(c=d),6,关系表达式的值是真”和“假”,用“,1”,和“,0”,表示,如:,50,的值为“真”,即为,1,。,(,a=3)(b=5),其值为假,即为,0。,7,main(),char c=k;,int,i=1,j=2,k=3;,float x=3e+5,y=0.85;,printf(%d,%dn,a,+5=k+1);,printf(%d,%dn,1j5,x-5.25b & cd,等价于,(,ab)&(cd),!b=c|da,等价于,(!,b)=c)|(dc&x+yc)&(x+y)0 & 42,由于,50,为真,,42,也为真,相与的结果也为真。,1.,与运算,&,:参与运算的两个量都为真时,结果才为真,否则为假。,14,例如:,50|58,由于,50,为真,相或的结果也就为真。,2.,或运算,|,:参与运算的两个量只要有一个为真,结果就为真。 两个量都为假时,结果为假。,15,例如:,!(50),的结果为假。,3.,非运算,!,:参与运算量为真时,结果为假;参与运算量为假时,结果为真。,16,虽然在给出逻辑运算值时,以“,1”,代表“真”,“,0 ”,代表“假”。 但反过来在判断一个量是为“真”还是为“假”时,以“,0”,代表“假”,以非“,0”,的数值作为“真”。,例如:,5&3,的值为“真”,即为,1,。,又如:,5|0,的值为“真”,即为,1。,17,5.1.3,逻辑表达式,逻辑表达式的一般形式为:,表达式 逻辑运算符 表达式,其中的表达式可以又是逻辑表达式,从而组成了嵌套的情形。,18,例如:,(,a&b)&c,根据逻辑运算符的左结合性,上式也可写为:,a&b&c,逻辑表达式的值是式中各种逻辑运算的最后值,以“,1”,和“,0”,分别代表“真”和“假”。,19,【例5.2】,main(),char c=k;,int,i=1,j=2,k=3;,float x=3e+5,y=0.85;,printf,(%d,%dn,!x*!y,!x);,printf(%d,%dn,x|i,printf,(%d,%dn,i=5,本例中,!,x,和!,y,分别为,0,!,x*!y,也为,0,故其输出值为,0,。由于,x,为非,0,故!,x,的逻辑值为,0,。对,x| i & j-3,先计算,j-3,的值为非,0,再求,i & j-3,的逻辑值为,1,,故,x|i&j-3,的逻辑值为,1,。对,ij&xy,由于,ij,的值为,1,而,xy,为0,故表达式的值为,1,0,相与,最后为,0,对,i=5&c&(j=8),由于,i=5,为假,即值为,0,该表达式由两个与运算组成,所以整个表达式的值为,0,。对于式,x+ y|i+j+k,由于,x+y,的值为非,0,故整个或表达式的值为,1,。,0,0 1,0 0,1,20,5.3,if,语句,用,if,语句可以构成分支结构。它根据给定的条件进行判断,以决定执行某个分支程序段。语言的,if,语句有三种基本形式。,21,5.3.1,if,语句的三种形式,1.,第一种形式为基本形式:,if,if(,表达式,),语句,22,【例5.3】,main(),int,a,b,max;,printf,(n input two numbers: );,scanf,(%d%d,max=a;,if (maxb),printf,(max=%dn,a);,else,printf,(max=%dn,b);,【例5.4】,输入两个整数,输出其中的大数。,改用,if-else,语句判别,a,b,的大小,若,a,大,则输出,a,否则输出,b。,25,3.,第三种形式为,if-else-if,形式,if(,表达式,1),语句,1,;,else if(,表达式,2),语句,2,;,else if(,表达式,3),语句,3,;,else if(,表达式,m),语句,m;,else,语句,n;,26,27,【例5.5】,#,include,stdio,.h,main(),char c;,printf,(input a character: );,c=,getchar,();,if(c=0&c=A&c=a&cb),a+;b+;,else,a=0;b=10;,3)在,if,语句的三种形式中,所有的语句应为单个语句,如果要想在满足条件时执行一组,(,多个,),语句,则必须把这一组语句用,括起来组成一个复合语句。但要注意的是在,之后不能再加分号。,34,5.3.2,if,语句的嵌套,当,if,语句中的执行语句又是,if,语句时,则构成了,if,语句嵌套的情形。,其一般形式可表示如下:,if(,表达式,),if,语句;,35,或者为,:,if(,表达式,),if,语句;,else,if,语句,;,36,在嵌套内的,if,语句可能又是,if-else,型的,这将会出现多个,if,和多个,else,重叠的情况,这时要特别注意,if,和,else,的配对问题。,例如:,if (,表达式,1),if (,表达式,2),语句,1,;,else,语句,2,;,37,第一种理解:,if(,表达式,1),if(,表达式,2),语句,1,;,else,语句,2,;,第二种应理解:,if(,表达式,1),if (,表达式,2),语句,1,;,else,语句,2,;,38,为了避免这种二义性,语言规定,,else,总是与它前面最近的,if,配对,因此对上述例子应按前一种情况理解。,39,main(),int,a,b;,printf,(please input A,B: );,scanf,(%d%d,if(a!=b),if(ab),printf,(ABn);,else,printf,(AB、Ab),printf,(ABn);,else,printf,(Ab) max=a;,else max=b;,可用条件表达式写为,:,max=(ab)?a:b;,43,使用条件表达式时应注意以下几点:,条件运算符的运算优先级低于关系运算符和算术运算符,但高于赋值符。,因此,:,max=(ab)?a:b,可以去掉括号而写为,:,max=ab?a:b,44,5.3.3,条件运算符和条件表达式,条件运算符,?,和:是一对运算符,不能分开单独使用。,条件运算符的结合方向是自右至左。,45,例如:,ab?a:cd?c:d,应理解为,ab?a:(cd?c:d),这也就是条件表达式嵌套的情形,即其中的表达式,3,又是一个条件表达式。,46,【例5.8】,main(),int,a,b,max;,printf,(n input two numbers: );,scanf,(%d%d,printf,(max=%d,ab?a:b);,47,如:,if(a=b&x=y),printf,(“a=b,x=y”);,if(3),printf,(“OK”);,if(a),printf,(“%d”,a);,说明:,if,后面的表达式类型任意,语句可以是复合语句,if(x), if(x!=0),if(!x),if(x=0),例 考虑下面程序的输出结果,:,#,include ,main(),int,x,y;,scanf,(“%d,%d”,if(xy),x=y; y=x;,else,x+; y+;,printf,(“%d,%dn”,x,y);,Compile Error!,48,#,include ,main(),int,x,y;,printf,(Enter an integer:);,scanf,(%d,y=x;,if(yabsolute value:%dn,x,y);,例 求一个数的绝对值,运行:,Enter an integer:,-12,integer:-12-absolute value :12,49,/*,ch4_2.c*/,#include ,main(),int,a,b;,printf,(Enter integer a:);,scanf,(%d,printf,(Enter integer b:);,scanf,(%d,if(a=b),printf,(a=bn);,else,printf,(a!=bn);,例 输入两个数并判断两数相等否,运行:,Enter integer a:12,Enter integer b:12,a=b,运行:,Enter integer a:12,Enter integer b:9,a!=b,50,/*,ch4_3.c*/,#include ,main(), char c;,printf,(Enter a character:);,c=,getchar,();,if(c=0&c=A&c=a&cb) max=a;min=b;,else max=b;min=a;,if(maxc) min=c;,printf(max,=%,dnmin,=%d,max,min);,57,【,例,4.12】,计算器程序。用户输入运算数和四则运算符,输出计算结果。,main(),float a,b;,char c;,printf(input,expression: a+(-,*,/)b n);,scanf(%f%c%f,&a,&c,&b,);,switch(c),case +:,printf(%fn,a+b);break,;,case -:,printf(%fn,a-b);break,;,case *:,printf(%fn,a,*b);break;,case /:,printf(%fn,a/b);break,;,default:,printf(input,errorn);,58,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 小学资料


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

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


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