C语言程序设计05章选择结构程序设计.ppt
《C语言程序设计05章选择结构程序设计.ppt》由会员分享,可在线阅读,更多相关《C语言程序设计05章选择结构程序设计.ppt(41页珍藏版)》请在三一办公上搜索。
1、第五章 选择结构程序设计,5.1 关系运算符和关系表达式 关系运算实质是一种比较简单的比较运算。它将两个值进行比较,判断其比较的结果是否符合给定的条件,其结果为真(1)或者为假(0)。5.1.1 关系运算符及其优先次序C语言提供了6种关系运算符:,大于=大于或等于,=等于!=不等于,优先级相同(第6级),优先级相同(第7级),5.1.2 关系表达式 用关系运算符将两个表达式(可以是算术表达式、逻辑表达式、赋值表达式、字符表达式或内嵌的关系表达式)连接起来的式子,称为关系表达式。下面为一些合法的关系表达式:a+bb+c(a=3)(b=5)ab 关系表达式的结果只有两种:真或假;在C语言中,以1代
2、表“真”,0代表“假”。例:假设a=3,b=2,c=1,则:(ab)=c 结果为:表达式的值为真;d=ab 结果为:d 的值为1;f=abc 结果为:f 的值为0;,5.2 逻辑运算符和逻辑表达式5.2.1 逻辑运算符及其优先次序C语言提供三种逻辑运算符:,(1)&逻辑与(与运算符),第11级(2)|逻辑或(或运算符),第12级(3)!逻辑非(非运算符),第 2级,说明:1)“&”和“|”为双目运算符,“!”为单目运算符;2)逻辑运算的结果只有两种:真或假。逻辑运 算的真值表详细情况见书P89表5.1。,几种已学运算符的优先次序为:,5.2.2 逻辑表达式 C语言编译系统在给出逻辑运算结果时,
3、以数值1代表“真”,以数值0代表“假”。但是在判断一个量是否为“真”时,以0代表“假”,以非0代表“真”。,例:1)若a=4,则!a为0;2)53&2|84-!0 表达式的值为1;,例:已知a=3,b=4,c=5,x=6,y=7,求表达式!a&b|x y&c 的值。运算顺序:1)0&b|x y&c 2)0&b|0&c 3)0|0&c 4)0|0 5)0,说明:对于“请问:程序运行后,m,n,x的值分别为多少?,例:判断某一年是否闰年。闰年的条件是符合下面两者之一:(1)能被4整除,但不能被100整除;(2)能被100整除,又能被400整除;请写出逻辑表达式。首先分析逻辑结构:1、条件(1)和条
4、件(2)的关系应该是“或”;2、而每个条件内部应该为“与”关系;3、条件(2)内,满足被400整除的一定满足被100整除,因此只需一个逻辑表达式即可。所以最后的逻辑表达式为:(year%4=0)&(year%100!=0)|(year%400=0)根据运算符的优先级关系,上式可简化为:year%4=0&year%100!=0|year%400=0也可加一个!来判断是否为非闰年,即:!(year%4=0&year%100!=0|year%400=0)由布尔代数可简化为:year%4!=0|year%100=0&year%400!=0,5.3 if 语句,5.3.1 if 语句的三种形式:1.if
5、(表达式)语句 执行过程,如下图:,例如:if(xy)printf(“%d”,x);,2.if(表达式)语句1 else 语句2执行过程,如右图:例如:if(xy)printf(“%d”,x);else printf(“%d”,y);,3.if(表达式1)语句1 else if(表达式2)语句2else if(表达式3)语句3else if(表达式m)语句melse 语句n,表达式1,语句1,假,真,表达式2,语句2,真,假,表达式3,语句3,语句4,真,假,表达式4,语句5,假,真,else if 的后面可以没有else语句,可理解为多个else条件的嵌套。如下图:,例:if(number5
6、00)cost=0.15;else if(number300)cost=0.10;else if(number100)cost=0.075;else if(number50)cost=0.05;else cost=0;,number500,cost=0.15,假,真,cost=0.10,真,假,cost=0.075,cost=0.05,真,假,cost=0,假,真,number300,number100,number50,说明:1)在if 后面都跟有表达式,该表达式可以是各种类型的表达式(逻辑表达式、关系表达式、赋值表达式等)或是任意的数值类型(整型,实型,字符型,指针型数据)。如果表达式的值
7、为0,则按“假”处理;如果为非0,则按“真”处理。例如:if(3)printf(“O.K.”);直接执行打印“O.K.”if(a)printf(“%d”,a);打印a的ASCII码97再如:int a=0;if(a=0)printf(“%d”,0);else printf(“%d”,1);2)注意在if 语句第二、三形式中每个语句后都有分号;。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;,3)在if和e
8、lse后面可以只含一个内嵌的操作语句,也可以有多个操作语句,此时须用花括号“”将几个语句括起来成为一个复合语句。例:if(ab)m=a;printf(“The MAX number is%d”,m);else m=b;printf(“The MAX number is%d”,m);,例5.1:输入两个实数,按代数值由小到大的次序输出这两个数;分析:这是一个简单而重要的程序,此算法用到了变量值的交换,要实现两变量值的交换,关键在与设置一个中间变量。程序:main()float a,b,t;scanf(“%f,%f”,例5.2 输入3个数a、b、c,要求按由小到大的顺序输出;分析:此题算法比上题稍
9、微复杂一些。上题为两个变量比较大小,只需进行一次比较,而本题为三个变量,则需进行三次比较。其伪代码算法为:if ab 将a和b对换(对换之后,a比b小)if ac 将a和c对换(对换之后,a比c小,a为最小)if bc 将b和c对换(对换之后,b比c小,b为次小)经过三次比较和变换后:a为最小值,b为次小值,c为最大值。程序如下页:,main()float a,b,c,t;scanf(“%f,%f,%f”,5.3.2 if 语句的嵌套,一般形式:if()if()语句1 else 语句2 else if()语句3 else 语句4注意:if与else的配对关系。在没有花括符作出限定的情况下,el
10、se总是与它上面的最近的、且没有与其它else配对的if 配对。,if()if()语句1else if()语句2 else 语句3if()if()语句1 else if()语句2 else 语句3,此if,else配对,此if,else配对,这部分构成第一个if 的内嵌语句,加上一个花括符后,限定了内嵌if 语句的范围,可避免上述错误的出现,例5.3 有一函数:编一程序,输入一个x值,输出y值。算法a:若x0 y=-1否则:若x=0 y=0 否则:y=1输出y,开始,输入x,x0,X=0,Y,N,y=0,y=1,Y,N,y=-1,输出x,结束,main()int x,y;scanf(“%d”,
11、x=0,Y,y=-1,x0,Y,N,N,y=1,y=0,算法b:输入x若x=0若x0 y=1 否则:y=0否则:y=-1输出y,错误例之一的程序及流程图片段:(P95程序3)y=-1if(x!=0)if(x0)y=1;else y=0,x!=0,Y,y=-1,x0,Y,N,N,y=1,y=0,此程序的错误在于:当x=0时,使 y=-1当x0时,使y=0,书P96程序4也是犯了同样的错,在此不再累述。,5.3.3 条件运算符与条件表达式,条件运算符的引入:对于某些简单的if语句。例如:if(ab)max=a;else max=b;可简化为:max=(ab)?a:b;条件表达式的一般形式为:表达式
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 05 选择 结构 程序设计
链接地址:https://www.31ppt.com/p-6504016.html