C语言ppt课件第4章.ppt
南昌大学计算中心,C语言程序设计,南昌大学计算中心,第4章 选择结构,4.1 关系运算和逻辑运算4.1.1 C语言的逻辑值通过关系运算或逻辑运算都会得到一个逻辑值。只有两种结果:“真”和“假”,在C中非0就认作“真”,0就认作“假”。4.1.2 关系运算符和关系表达式C语言的关系运算符(左结合) = = = != 较高 较低关系运算符是双目运算符。所有6种运算符的优先级都高于赋值运算符,但都低于算术运算符。,南昌大学计算中心,关系表达式的值为逻辑值(0或1)。如:1=3 值为0 1+1=4/2 值为14.1.3 逻辑运算符和逻辑表达式 ! 逻辑非& 逻辑与 | 逻辑或,南昌大学计算中心,逻辑运算规则: ! 逻辑非,单目,否定运算& 逻辑与,双目,两边均为“真”结果为“真” | 逻辑或,双目,两边均为“假”结果为“假”,逻辑运算的短路规则:运算按照从左至右的顺序进行时,一旦能够确定整个逻辑表达式的值,就立即结束运算。如:假设a=0,b=1,c=2a & b & c 表达式的结果为0,(+a) | (b-) & (-c) 表达式的结果为1,南昌大学计算中心,练习:下面程序的输出结果是_。main()int a=5,b=4,c=3,d; d=(abc); printf(“%dn”,d);,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); printf(“%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,南昌大学计算中心,练习:下面程序的输出结果是_。main()int a=1,b=3,c=5; if (c=a+b) printf(“yesn”); else printf(“non”);,yes,南昌大学计算中心,练习:下面程序的输出结果是_。main()int x=3; if (x=5) x+; printf(“%d”,x);,6,南昌大学计算中心,练习:下面程序的输出结果是_。main()int n=0,m=1,x=2; if (!n) x-=1; if (m) x-=2; if (x) x-=3; printf(“%dn”,x);,-4,南昌大学计算中心,练习:下面程序的输出结果是_。main()int x=10,y=20,t=0; if (x=y) t=x;x=y;y=t; printf(“%d,%d”,x,y);,20,0,南昌大学计算中心,练习:下面程序的输出结果是_。main()int i=1,j=1,k=2; if (j+|k+)A)1,1,2B)2,2,1C)2,2,2D)2,2,3,南昌大学计算中心,4.2.2 嵌套的if语句 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 (b0) c=0; else c+; printf(“%dn”,c);A)0B)1C)2D)3,南昌大学计算中心,练习:下面程序的输出结果是_。main()int a=10,b=20,c=30; if (ab) if(ac) printf(“a=%d”,a); else printf(“b=%d”,b); printf(“c=%d”,c);,c=30,南昌大学计算中心,if (表达式1) 语句1 else if (表达式2) 语句2 else 语句3,if (表达式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 if (x10.0) y=1.0/x; else y=1.0; printf(“%fn”,y);A)0.000000B)0.250000C)0.500000D)1.000000,南昌大学计算中心,练习:下面程序运行时输入:-1 -2 ,输出结果是_。main()int a,b,m=1,n=1; scanf(“%d%d”,m=1 n=2,南昌大学计算中心,4.3 条件表达式构成的选择结构利用C语言中唯一的三目运算符(? :)构成选择结构。条件表达式的形式:表达式1 ? 表达式2 : 表达式3条件表达式的结果是表达式2或表达式3,取决于表达式1的真假。条件运算符优先级高于赋值、逗号运算符,低于其他运算符如:5/37/3?10:20,南昌大学计算中心,练习:若运行时给变量x赋值12,则下面程序的输出结果是_。main() int x,y; scanf(“%d”,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:y,u:z,南昌大学计算中心,练习:若已定义:int a=25,b=14,c=19;执行以下三目运算符(?:)所构成的语句:a=25输出结果是_。A)*a=25,b=13,c=19B) *a=26,b=14,c=19 C) #a=25,b=13,c=19 D) #a=26,b=14,c=19,南昌大学计算中心,练习:以下程序段中与语句k=ab?(bc?1:0):0;功能等价的是_。A)if (ab),南昌大学计算中心,4.4 switch语句以及用switch语句和break语句构成的选择结构4.4.1 switch语句switch (表达式) case 常量表达式1: 语句1 case 常量表达式2: 语句2 . . . case 常量表达式n: 语句n default: 语句n+1,南昌大学计算中心,N-S结构图,4.4.2 switch语句的执行过程如:switch (a) case 1: printf(&); case 2: printf(#); default:printf($); ,结果:若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: printf(#);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后面的常量表达式不能用浮点数形式,switch后面的表达式也不能是浮点数形式。,南昌大学计算中心,练习:下面程序的输出结果是_。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”); ,passwarn,