C语言程序设计谭浩强编 选择结构程序设计学时.pptx
《C语言程序设计谭浩强编 选择结构程序设计学时.pptx》由会员分享,可在线阅读,更多相关《C语言程序设计谭浩强编 选择结构程序设计学时.pptx(37页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、5.1.2 关系表达式 用关系运算符将两个表达式连接起来的式子,称为关系表达式。下面为一些合法的关系表达式:a+bb+c(a=3)(b=5)ab 关系表达式的结果只有两种:真或假;在C语言中,“真”的值为1代表,“假”的值为0代表。例:假设a=3,b=2,c=1,则:(ab)=c 结果为:表达式的值为真;d=ab 结果为:d的值为1;f=abc 结果为:f的值为0;第1页/共37页 5.2 逻辑运算符和逻辑表达式5.2.1 逻辑运算符及其优先次序C语言提供三种逻辑运算符:(1)&逻辑与(与运算符)(2)|逻辑或(或运算符)(3)!逻辑非(非运算符)说明:1)“&”和“|”为双目运算符,“!”为
2、单目运算符;2)逻辑运算的结果只有两种:真或假。逻辑运 算的真值表详细情况见书P89表5.1。第2页/共37页几种运算符的优先次序为:!(!(非非)(高)(高)算术运算符算术运算符关系运算符关系运算符&和和|赋值运算符赋值运算符 (低)(低)例:!a&b|xy&c 第3页/共37页5.2.2 逻辑表达式 C语言编译系统在给出逻辑运算结果时,“真”的值为1,“假”的值为0。但是在判断一个量是否为“真”时,以0代表“假”,以非0代表“真”。例:1)若a=4,则!a=0;2)若a=4,b=5 则 a&b=1;a|b=1;!a|b=1;3)53&2|8b)&(n=cd)(m=ab)&(n=cd)后后m
3、m和和n n的值分别是多少?的值分别是多少?在逻辑表达式的求解中,并不在逻辑表达式的求解中,并不是所有的逻辑运算符都被执行,只是是所有的逻辑运算符都被执行,只是在必须执行下一个逻辑运算符才能求在必须执行下一个逻辑运算符才能求出表达式的解时,才执行该运算符。出表达式的解时,才执行该运算符。第4页/共37页一个重要的例子:判断某一年是否为闰年的方法。而为闰年的条件是符合下面两者之一:(1)能被4整除,但不能被100整除;(2)能被4整除,又能被400整除;首先分析逻辑结构:1、条件(1)和条件(2)的关系应该是“或”;2、而每个条件内部应该为“与”关系;3、条件(2)内,满足被400整除的一定满足
4、被4整除,因此只需一个逻辑表达式即可;所以最后的逻辑表达式为:(year%4=0)&(year%100!=0)|(year%400=0)根据运算符的优先级关系,上式可简化为:year%4=0&year%100!=0|year%400=0第5页/共37页 5.3 if 语句 if语句是用来判断所给的条件是否满足,根据判定的结果决定执行给出的两种操作之一。5.3.1 if 语句的三种形式:1.if (表达式)语句执行过程,如左图:if(xy)printf(“%d”,x);表达式表达式语句语句假(0)真(非0)xyxyprintf(“%d”,x)printf(“%d”,x)假(0)真(非0)第6页/
5、共37页2.if (表达式)语句1 else 语句2例如:if(xy)printf(“%d”,x);else printf(“%d”,y);表达式表达式语句语句1 1假(0)真(非0)语句语句2 2xyxyprintf(“%d”,x)printf(“%d”,x)假(0)真(非0)printf(“%d”,y)printf(“%d”,y)第7页/共37页3.if(表达式1)语句1 else if(表达式2)语句2 else if(表达式3)语句3 else if(表达式m)语句m else 语句n表达式表达式1 1语句语句1 1假真表达式表达式2 2语句语句2 2真假表达式表达式3 3语句语句3
6、3语句语句4 4真假表达式表达式4 4语句语句5 5假真第8页/共37页例:if(number500)cost=0.15;else if(number300)cost=0.10;else if(number100)cost=0.075;else if(number50)cost=0.05;else cost=0;number500number500cost=0.15cost=0.15假真cost=0.10cost=0.10真假cost=0.075cost=0.075cost=0.05cost=0.05真假cost=0cost=0假真number300number300number100numb
7、er100number50number50第9页/共37页说明:1)if 语句中在if后面都有表达式,如果表达式的值为0,则按“假”处理,如果为非0,则按“真”处理;例如:if(3)printf(“O.K.”);直接执行打印“O.K.”if(a)printf(“%d”,a);打印a的ASCII码972)注意在if 语句第二、三形式中每个语句后都有分号;if (number500)if (number500)cost=0.15 cost=0.15;elseelse if(number300)if(number300)cost=0.10 cost=0.10;else else if(number1
8、00)if(number100)cost=0.075 cost=0.075;elseelse if(number50)if(number50)cost=0.05 cost=0.05;else else cost=0 cost=0;第10页/共37页3)在if 和else后面只能含一个内嵌的操作语句,当有多个操作语句,此时须用花括号“”将几个语句括起来成为一个复合语句。例:if(ab)m=a;printf(“The MAX number is%d”,m);else m=b;printf(“The MAX number is%d”,m);第11页/共37页#例5.1:输入两个实数,按代数值由小到大
9、的次序输出这两个数;分析:这是一个简单而重要的程序,算法的关键在与设 置一个中间交换变量,用于比较两个实数的大小 后进行次序的变换;main()float a,b,t;scanf(“%f,%f”,&a,&b);if(ab)t=a;a=b;b=t;printf(“%5.2f,%5.2f”,a,b);5t3abt535第12页/共37页*例5.2 输入3个数a、b、c,要求按由小到大的顺序输出;分析:此题算法比上题稍微复杂一些。上题为两个变量 比较大小,只需进行一次比较,而本题为三个变 量,则需进行三次比较。其伪代码算法为:if ab 将a和b对换 (对换之后,a比b小)if ac 将a和c对换
10、(对换之后,a比c小,a为最小)if bc 将b和c对换 (对换之后,b比c小,b为次小)经过三次比较和变换后:a为最小值,b为次小值,c为最大值。程序可写为:第13页/共37页#includemain()float a,b,c,t;scanf(“%f,%f,%f”,&a,&b,&c);if(ab)t=a;a=b;b=t;if(ac)t=a;a=c;c=t;if(bc)t=b;b=c;c=t;printf(“%5.2f,%5.2f,%5.2f”,a,b,c);第14页/共37页5.3.2 if语句的嵌套 在 if 语句又包含一个或多个if语句称为if语句的嵌套.一般形式:if()if()语句1
11、 else 语句2else if()语句3 else 语句4注意:if与else的配对关系。else总是与它上面的最近的if 配对。第15页/共37页if()if()语句1else if()语句2 else 语句3if()if()语句1 else if()语句2 else 语句3此此if,elseif,else配对配对此此if,elseif,else配对配对它们共同构成第它们共同构成第一个一个If If的内嵌语句的内嵌语句加上一个花括符,限定了内嵌加上一个花括符,限定了内嵌if if语句的范围,可避免上述错误的语句的范围,可避免上述错误的出现出现第16页/共37页*例例5.3 5.3 有一函数
12、:有一函数:编一程序,输入一个编一程序,输入一个x x值,输出值,输出y y值。值。算法算法1:1:若若x0 y=-1x0 y=1x0 y=1 输出输出y ymain()main()int x,y;int x,y;scanf(“%d”,&x);scanf(“%d”,&x);if(x0)y=-1;if(x0)y=1;if(x0)y=1;printf(“x=%d,y=%dn”,x,y);printf(“x=%d,y=%dn”,x,y);y=-1 (x0)开始开始输入输入x xx0 x0 x0Y YN N第17页/共37页开始开始输入输入x xx0 x0 x=0 x=0Y YN Ny=0y=0y=1
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C语言程序设计谭浩强编 选择结构程序设计学时 语言程序设计 谭浩强编 选择 结构 程序设计 学时
限制150内