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

下载本文档

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

文档简介

1、关系运算符和表达式关系运算符种类: = !=结合方向:自左向右优先级别:=!=优先级6(高)优先级7(低)例 ca+b /c(a+b) ab!=c /(ab)!=c a=bc /a=(bc /a=(bc)关系表达式的值:是逻辑值“真”或“假”,用1和0表示例 int a=3,b=2,c=1,d,f; ab (ab)=c b+cb f=abc/表达式值1/表达式值1/表达式值0/d=1/f=0语言程序设计 第五章选择结构设计C关系运算注意:例 若a=0; b=0.5; x=0.3; 则 a=x278在C中是允许的, 值为0例 int i=1, j=7,a; a=i+(j%4!=0); 则a=2例

2、 a0 结果为 A100 结果为10语言程序设计 第五章选择结构设计C关系运算注意:例 注意区分“=”与“=” int a=0,b=1; if(a=b) printf(“a equal to b”); else printf(“a not equal to b”);例 应避免对实数作相等或不等的判断如 1.0/3.0*3.0=1.0 结果为可改写为:fabs(1.0/3.0*3.0-1.0)1e-60语言程序设计 第五章选择结构设计Cab!a!ba&ba|b真假真假假假真真逻辑运算符和表达式逻辑运算符种类: ! & |逻辑运算真值表C语言中,运算量: 0表示“假”, 非0表示“真”, 运算结果

3、: 0表示“假”, 1表示“真”,真假假假假假真真假假真真真假真真语言程序设计 第五章选择结构设计C! (2)& (11)| (12)高低例 a=x & xb&xy a=b|x=y !a|ab优先级:结合方向:! :从右向左& :从左向右| :从左向右/ (a=x) & (xb)&(xy)/(a=b)|(x=y)/(!a)|(ab)语言程序设计 第五章选择结构设计C! (2)& (11)| (12)高低优先级:结合方向:! :从右向左& :从左向右| :从左向右例 a=4;b=5; !a a&b a|b !a|b 4&0|2 53&2|83)&2)|(8(4-(!0) 值为1语言程序设计 第五

4、章选择结构设计C! (2)& (11)| (12)高低优先级:结合方向:! :从右向左& :从左向右| :从左向右短路特性:逻辑表达式求解时,并非所有的逻辑运算符都被执行,只是在必须执行下一个逻辑运算符才能求出表达式的解时,才执行该运算符例 a&b&c /只在a为真时,才判别b的值; 只在a、b都为真时,才判别 c的值例 a|b|c /只在a为假时,才判别b的值; 只在a、b都为假时,才判别 c的值例 a=1;b=2;c=3;d=4;m=1;n=1; (m=ab)&(n=cd)/结果m=0,n=1语言程序设计 第五章选择结构设计C5.3 选择型程序设计if语句(条件选择语句)if语句的三种形式

5、形式一:格式:if (expression) statement执行过程:exprstatement非0=0exprstatement1statement2非0=0形式二:格式:if (expression) statement1 else statement2执行过程:例:if (xy) max=x; else max=y;形式三:格式:if ( expr1 ) statement1else if (expr2 ) statement2else if (expr3 ) statement3. else statementn expr1statemnt1非0=0expr2expr3statem

6、ntnstatemnt3statemnt2非0非0=0=0执行过程: 例:if (salary1000) index=0.4; else if (salary800) index=0.3; else if (salary600) index=0.2; else if (salary400) index=0.1; else index=0; 如: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)例

7、 考虑下面程序的输出结果: #include main() int x,y; scanf(“%d,%d”,&x,&y); if(xy) x=y; y=x; else x+; y+; printf(“%d,%dn”,x,y);Compile Error!/*ch4_1.c*/#include void main() int x,y; printf(Enter an integer:); scanf(%d,&x); y=x; if(yabsolute value:%dn,x,y);例 求一个数的绝对值运行:Enter an integer:-12 integer:-12-absolute valu

8、e :12/*ch4_2.c*/#include void main() int a,b; printf(Enter integer a:); scanf(%d,&a); printf(Enter integer b:); scanf(%d,&b); 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 /*ch4_3.c*/#include void mai

9、n() char c; printf(Enter a character:); c=getchar(); if(c=0&c=A&c=a&c=z) printf(The character is a lower lettern); else printf(The character is other charactern);例 判断输入字符种类运行:Enter a character: The character is a control character运行:Enter a character:8 The character is a digit运行: Enter a character:

10、D The character is a capital letter运行: Enter a character: h The character is a lower letter运行: Enter a character: The character is other characterif语句嵌套:一般形式:if (expr1) if (expr2) statement1 else statement2else if(expr3) statement3 else statement4内嵌if内嵌ifif (expr1) if (expr2) statement1 else stateme

11、nt2内嵌ifif (expr1) if (expr2) statement1else statement3 内嵌ifif (expr1) statement1else if(expr3) statement3 else statement4内嵌if例 输入两数并判断其大小关系/*ch4_4.c*/#include void main() int x,y; printf(Enter integer x,y:); scanf(%d,%d,&x,&y); if(x!=y) if(xy) printf(XYn); else printf(XYn); else printf(X=Yn);运行:Ente

12、r integer x,y:12,23 XY Enter integer x,y:12,12 X=Yif else 配对原则:缺省 时,else总是和它上面离它最近的未配对的if配对if()if()if()else.else.else.例: if (a= =b) if(b= =c) printf(“a= =b= =c”); else printf(“a!=b”);修改: if (a= =b) if(b= =c) printf(“a= =b= =c”); else printf(“a!=b”);实现if else 正确配对方法:加 例 分析下面程序输出结果: void main() int x=

13、100,a=10,b=20; int v1=5,v2=0; 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)expr1、expr2、expr3类型可不同,表达式值取较高的类型例 x?a:b /x=0,表达式值为b; x0,表达式值为a xy?1:1

14、.5 /xy ,值为1.0; x60n”); break; .例 switch(score) case 5: printf(“Very good!”); case 4: printf(“Good!”); case 3: printf(“Pass!”); case 2: printf(“Fail!”); default : printf(“data error!”); 运行结果:score为5时,输出: Very good! Good! Pass! Fail! data error!例 void main() int x=1,y=0,a=0,b=0; switch(x) case 1: switch(y) case 0: a+; break; case 1: b+; break; case 2: a+;b+; break; case 3: a+;b+; printf(“na=%d,b=%d”,a,b); 运行结果:a=2,b=1/*ch4_5.c*/#include void

温馨提示

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

评论

0/150

提交评论