《C语言课件第4章ppt.ppt》由会员分享,可在线阅读,更多相关《C语言课件第4章ppt.ppt(33页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、南昌大学计算中心C语言程序设计南昌大学计算中心第第4章章 选择结构选择结构4.1 关系运算和逻辑运算关系运算和逻辑运算4.1.1 C语言的逻辑值语言的逻辑值通过关系运算或逻辑运算都会得到一个逻辑值。只有通过关系运算或逻辑运算都会得到一个逻辑值。只有两种结果:两种结果:“真真”和和“假假”,在在C中非中非0就认作就认作“真真”,0就认作就认作“假假”。4.1.2 关系运算符和关系表达式关系运算符和关系表达式C语言的关系运算符语言的关系运算符(左结合左结合) = =3 值为值为0 1+1=4/2 值为值为14.1.3 逻辑运算符和逻辑表达式逻辑运算符和逻辑表达式 ! 逻辑非逻辑非& 逻辑与逻辑与
2、| 逻辑或逻辑或 高高低低高高低低南昌大学计算中心逻辑运算规则:逻辑运算规则: ! 逻辑非,单目,否定运算逻辑非,单目,否定运算& 逻辑与,双目,两边均为逻辑与,双目,两边均为“真真”结果为结果为“真真” | 逻辑或,双目,两边均为逻辑或,双目,两边均为“假假”结果为结果为“假假”逻辑运算的短路规则:逻辑运算的短路规则:运算按照从左至右的顺序进行时运算按照从左至右的顺序进行时,一旦能够确定整个一旦能够确定整个逻辑表达式的值,就立即结束运算。逻辑表达式的值,就立即结束运算。如:假设如:假设a=0,b=1,c=2a & b & c 表达式的结果为表达式的结果为0结果为结果为0,运算终止,运算终止(
3、+a) | (b-) & (-c) 表达式的结果为表达式的结果为1结果为非结果为非0,运算终止,运算终止南昌大学计算中心练习:下面程序的输出结果是练习:下面程序的输出结果是_。main()int a=5,b=4,c=3,d; d=(abc); printf(“%dn”,d);0 0 南昌大学计算中心练习:设练习:设int x=1,y=1;表达式表达式(!x|y-)的值是的值是_。A)0B)1C)2D)-1 南昌大学计算中心练习:下面程序的输出结果是练习:下面程序的输出结果是_。main()int x=4,y=0,z; x*=3+2; printf(“%d”,x); x*=y=(z=4); pr
4、intf(“%d”,x);A)14 40B)20 0C)20 4D)14 4 南昌大学计算中心练习:设练习:设x,y和和z都是都是int型变量,且型变量,且x=3,y=4,z=5,则下则下面表达式中,值为面表达式中,值为0的表达式是的表达式是_。A)x&yB)x=yC)x|+y&y-zD)!(xy&!z|1) 南昌大学计算中心4.2 if语句和用语句和用if语句构成的选择结构语句构成的选择结构4.2.1 if语句的两种基本形式语句的两种基本形式 if (表达式表达式) 语句语句 if (表达式表达式) 语句语句1 else 语句语句2语句语句流程图流程图NY 表达式?表达式? 语句语句1 语句
5、语句2流程图流程图NY 表达式?表达式?南昌大学计算中心练习:下面程序的输出结果是练习:下面程序的输出结果是_。main()int a=1,b=3,c=5; if (c=a+b) printf(“yesn”); else printf(“non”);yesyes 南昌大学计算中心练习:下面程序的输出结果是练习:下面程序的输出结果是_。main()int x=3; if (x=5) x+; printf(“%d”,x);6 6 南昌大学计算中心练习:下面程序的输出结果是练习:下面程序的输出结果是_。main()int n=0,m=1,x=2; if (!n) x-=1; if (m) x-=2;
6、 if (x) x-=3; printf(“%dn”,x);-4-4 南昌大学计算中心练习:下面程序的输出结果是练习:下面程序的输出结果是_。main()int x=10,y=20,t=0; if (x=y) t=x;x=y;y=t; printf(“%d,%d”,x,y);20,020,0 南昌大学计算中心练习:下面程序的输出结果是练习:下面程序的输出结果是_。main()int i=1,j=1,k=2; if (j+|k+)&i+) printf(“%d,%d,%dn”,i,j,k);A)1,1,2B)2,2,1C)2,2,2D)2,2,3 南昌大学计算中心4.2.2 嵌套的嵌套的if语句
7、语句 if (表达式表达式1) if (表达式表达式2) 语句语句1 else 语句语句2 else 语句语句3 if (表达式表达式1) if (表达式表达式2) 语句语句1 else 语句语句2南昌大学计算中心练习:下面程序的输出结果是练习:下面程序的输出结果是_。main()int a=2,b=-1,c=2; if (ab) if (b0) c=0; else c+; printf(“%dn”,c);A)0B)1C)2D)3 南昌大学计算中心练习:下面程序的输出结果是练习:下面程序的输出结果是_。main()int a=2,b=-1,c=2; if (ab) ; if (bb) if(a
8、c) printf(“a=%d”,a); else printf(“b=%d”,b); printf(“c=%d”,c);c=30c=30 南昌大学计算中心 if (表达式表达式1) 语句语句1 else if (表达式表达式2) 语句语句2 else 语句语句3if (表达式表达式1) 语句语句1 else if (表达式表达式2) 语句语句2 else if (表达式表达式m) 语句语句m else 语句语句 n拓展拓展南昌大学计算中心南昌大学计算中心练习:下面程序的输出结果是练习:下面程序的输出结果是_。main()float x=2.0,y; if (x0.0) y=0.0; else
9、 if (x0) m=m+n; if (a7/3?10:20南昌大学计算中心练习:若运行时给变量练习:若运行时给变量x赋值赋值12,则下面程序的输出结果,则下面程序的输出结果是是_。main() int x,y; scanf(“%d”,&x); y=x12?x+10:x-12; printf(“%dn”,y);A)0B)22C)12D)10 南昌大学计算中心填空:以下程序输出填空:以下程序输出x,y,z三个数中的最小值。三个数中的最小值。main() int x=4,y=5,z=8; int u,v; u=xy?_; v=uz?_; printf(“%d”,v);x:yx:y u:zu:z 南
10、昌大学计算中心练习:若已定义:练习:若已定义:int a=25,b=14,c=19;执行以下三目运算执行以下三目运算符符(?:)所构成的语句:所构成的语句:a=25&b-b?(bc?1:0):0;功能功能等价的是等价的是_。A)if (ab)&(bc) k=1; else k=0;B)if (ab)|(bc) k=1; else k=0;C)if (a=b) k=0; else if (bb) k=1; else if (bc) k=1; else k=0; 南昌大学计算中心4.4 switch语句以及用语句以及用switch语句和语句和break语句构成语句构成的选择结构的选择结构4.4.1
11、 switch语句语句switch (表达式表达式) case 常量表达式常量表达式1: 语句语句1 case 常量表达式常量表达式2: 语句语句2 . . . case 常量表达式常量表达式n: 语句语句n default: 语句语句n+1南昌大学计算中心N-S结构图结构图计算计算表达式表达式常量表达式常量表达式1语句语句1常量表达式常量表达式2语句语句2 常量表达式常量表达式n语句语句ndefault语句语句n+14.4.2 switch语句的执行过程语句的执行过程如:如:switch (a) case 1: printf(&); case 2: printf(#); default:pr
12、intf($); 结果:结果:若若a等于等于1,输出:,输出:$若若a等于等于2,输出:,输出:#$若若a是其他值,输出:是其他值,输出:$南昌大学计算中心4.4.3 在在switch语句体中使用语句体中使用break语句语句switch (表达式表达式) case 常量表达式常量表达式1: 语句语句1;break; case 常量表达式常量表达式2: 语句语句2;break; . . . case 常量表达式常量表达式n: 语句语句n;break; default: 语句语句n+1;如:如:switch (a) case 1: printf(&);break; case 2: print
13、f(#);break; default:printf($);break; 结果:结果:若若a等于等于1,输出:,输出:&若若a等于等于2,输出:,输出:#若若a是其他值,输出:是其他值,输出:$南昌大学计算中心练习:下面程序的输出结果是练习:下面程序的输出结果是_。main()int x=1,a=0,b=0; switch(x) case 0:b+; case 1:a+; case 2:a+;b+; printf(“a=%d,b=%dn”,a,b);A)a=2,b=1 B)a=1,b=1 C)a=1,b=0 D)a=2,b=2 南昌大学计算中心注意:注意:case后面的常量表达式不能用浮点数形
14、式,后面的常量表达式不能用浮点数形式,switch后面的表达式也不能是浮点数形式。后面的表达式也不能是浮点数形式。练习:若有定义:练习:若有定义:float x=1.5;int a=1,b=3,c=2;则正则正确的确的switch语句是语句是_。A)switch (x) case 1.0:printf(“*n”); case 2.0:printf(“*n”);B)switch (int)x); case 1:printf(“*n”); case 2:printf(“*n”);C) switch (a+b) case 1:printf(“*n”); case 2+1:printf(“*n”);D) switch (a+b) case 1:printf(“*n”); case c:printf(“*n”); 南昌大学计算中心练习:下面程序的输出结果是练习:下面程序的输出结果是_。main()int n=c; switch(n+) default:printf(“error”);break; case a:case A:case b:case B:printf(“good”);break; case c:case C:printf(“pass”); case d:case D:printf(“warn”); passwarnpasswarn