《C语言程序设计课件ppt及程序代码第5章.ppt》由会员分享,可在线阅读,更多相关《C语言程序设计课件ppt及程序代码第5章.ppt(31页珍藏版)》请在课桌文档上搜索。
1、1,5 选择结构程序设计,if(50)y=1;if(1=53)y=1;else y=-1;,2,5.1 关系运算符和关系表达式,5.1.1 关系运算符及其优先次序,3,5.1 关系运算符和关系表达式,关系运算符与算术运算符、赋值运算符的优先级关系 ca+b 等效于 c(a+b)ab!=c 等效于(ab)!=c a=bc 等效于 a=(bc),4,5.1.2 关系表达式,关系表达式的一般形式为:表达式 关系运算符 表达式 表达式可以是算术表达式、逻辑表达式、赋值表达式、字符表达式 a+bc-d x3/2 a+1(bc)a!=(c=d)关系表达式的值是“真”和“假”,用“1”和“0”表示。例、a=
2、3,b=2,c=1,则:ab 真,表达式的值为1(ab)=c 真,表达式的值为1b+cbd的值等于1,请问 abc 的值是?,假,表达式的值为0,5,5.1.2 关系表达式,5_1_1.cpp5_1_2.cpp,6,5.1.2 关系表达式,7,5.1.2 关系表达式,(x=y)与(x=y)含义不同,8,5.2 逻辑运算符和逻辑表达式,if(ab AND xy)printf(“OK”);用逻辑运算符将关系表达式或逻辑量连接起来的式子就是逻辑表达式。如果ab且xy,则上述逻辑表达式的值为“真”。,9,5.2 逻辑运算符和逻辑表达式,5.2.1 逻辑运算符及其优先次序,10,5.2 逻辑运算符和逻辑
3、表达式,a&b(若a和b均为真,逻辑表达式a&b为真)a|b(若a或b为真,逻辑表达式a|b为真)!a(若a为真,逻辑表达式!a为假),11,5.2 逻辑运算符和逻辑表达式,在一个逻辑表达式中,包含多个逻辑运算符,按如图优先级运算:,f=!a&b|xy+2&c,f=(!a)&b|xy+2&c,f=(!a)&b|x(y+2)&c,f=(!a)&b|(x(y+2)&c,f=(!a)&b|(x(y+2)&c),12,5.2.2 逻辑表达式,逻辑表达式的值应该是一个逻辑量“真”或 假”。c语言编译系统在给出逻辑运算结果时,以数值1代表“真”,以0代表“假”,但在判断个量是否为“真”时,以0代表“假”,
4、以非0代表“真”。即将一个非零的数值认作为“真”。,5_2_1.cpp,13,5.2.2 逻辑表达式,编译器在求解逻辑表达式的值时,采用“非完全求解”的方法,1、a&b&c 只有a为真时,才判别b的值;只有a和b均为真时,才判别c的值。只要a为假,就不再判别b和c的值,直接求得表达式的值为假。,5_2_2.cpp,14,5.2.2 逻辑表达式,2、a|b|c只有a为假时,才判别b的值;只有a和b均为假时,才判别c的值。只要a为真,就不再判别b和c的值,直接求得表达式的值为真。,5_2_3.cpp,15,5.3 if语句,5.3.1 if语句的三种形式1.第一种形式为基本形式:if(表达式)语句
5、 if(xy)printf(“%d”,x);语句可以是用括起来的复合语句,表达式可以是常量、变量、表达式。其类型可以是整、实、字符型。语句可以是一句或复合语句。其语义是:如果表达式的值为真,则执行其后的语句,否则不执行该语句。其过程可表示为下图。,16,5.3 if语句,2.第二种形式为:if-elseif(表达式)语句1;else 语句2;其语义是:如果表达式的值为真,则执行语句1,否则执行语句2。其执行过程可表示为下图,17,5.3 if语句,3.第三种形式为if-else-if形式if(表达式1)语句1;else if(表达式2)语句2;else if(表达式3)语句3;else if(
6、表达式m)语句m;else 语句n;其语义是:依次判断表达式的值,当出现某个值为真时,则执行其对应的语句。然后跳到整个if语句之外继续执行程序。如果所有的表达式均为假,则执行语句n。然后继续执行后续程序。,18,5.3 if语句,5_3_2.cpp,19,5.3 if语句,说明:1.执行if语句时,先判断表达式的值,为真时(非0),执行其后语句,为假(0)时不执行其后的语句,表达式可以是常量、变量、表达式(关系、逻辑、算术、赋值)。2.if的各内嵌语句用“;”号结束。3.if和else后面的内嵌语句若有多句,用 括起构成复合语句。,20,5.3 if语句,嵌套:在if语句中,又包含1到多个if
7、 语句 一般形式:if()条件成立时的内嵌语句 if()语句1 else 语句2 else 条件不成立时的内嵌语句 if()语句3 else 语句4,21,5.3 if语句,使用内嵌的if语句时,应区分表面形式与实际作用 if()if()语句1 else if()语句2 else 语句3,在C语言中,if与else 的配对原则是:从最内层开始,else总是与它上面最近的,未曾配对的if配对。因此,上述问题在编译时的真正效果是:,22,5.3 if语句,为了使程序清晰,不至出错,采取的方法是:用 实现,如上述问题可进行如下描述:if()if()语句1 else if()语句2 else 语句3,
8、23,C,24,5.3 if语句,5.3.3 条件运算符 条件表达式的一般形式:表达式1?表达式2:表达式3 其中:?:是条件运算符号(三目),说明:1、条件运算符的执行顺序:,例:max=(ab)?a:b;相当于If(ab)max=a;else max=b,25,5.3 if语句,2、条件运算符的优先级高于赋值运算符,低于算术运算符和关系运算符。max=ab?a:b max=(ab)?a:b)ab?a:b+1(ab)?a:(b+1)3、条件运算符的结合方向:从右向左 ab?a:cd?c:d a,b,c,d的取值9,8,4,3,求表达式的值?,5_2_4.cpp,26,5.3 if语句,4、表
9、达式2和表达式3不仅可以式是数值表达式,还可以是赋值表达式或函数表达式。例如:main()int a,b;scanf(“%d,%d”,输入:3,5 输出:max=5,27,5.3 if语句,5、表达式1,2,3类型可以相同,也可不同,如果类型不同时,低类型向高类型转换 main()int x=-1,y=5,z=6;printf(“%cn”,x?a:b);printf(“%f n”,yz?1:1.5);输出结果?,输出:a 1.000000,5_3_7.cpp,28,5.4 switch语句,switch(表达式)case 常量表达式1:语句1;case 常量表达式2:语句2;case 常量表达
10、式n:语句n;default:语句n+1;1、switch后的表达式,新的ANSI C标准中允许表达式的类型为任何类型。2、每个case后的常量表达式只能是常量组成的表达式,当switch后的表达式的值与某一个常量表达式的值一致时。程序就转到此case后的语句开始执行。如果没有一个常量表达式的值与switch后的值一致,就执行default后的语句。,29,5.4 switch语句,3、第个case后的常量表达式的值必须互不相同,不然的话程序就不知该跳到何外开始执行。4、在执行完一个case后面的语句后,程序流程转到下一个case后的语句开始执行,5_3_6.cpp,30,5.4 switch语句,6、如果只想执行某个case后的语句,那么就要在case的语句的最后使用break语句以跳出switch语句。,31,5.4 switch语句,7、default这一行可以省略。8、多个 case可以共用一段程序。比如我们给判定学生的成绩等级,只区分及格和不及格的。,