c语言教程课件第四章-选择结构

上传人:F****n 文档编号:88185364 上传时间:2019-04-20 格式:PPT 页数:27 大小:158KB
返回 下载 相关 举报
c语言教程课件第四章-选择结构_第1页
第1页 / 共27页
c语言教程课件第四章-选择结构_第2页
第2页 / 共27页
c语言教程课件第四章-选择结构_第3页
第3页 / 共27页
c语言教程课件第四章-选择结构_第4页
第4页 / 共27页
c语言教程课件第四章-选择结构_第5页
第5页 / 共27页
点击查看更多>>
资源描述

《c语言教程课件第四章-选择结构》由会员分享,可在线阅读,更多相关《c语言教程课件第四章-选择结构(27页珍藏版)》请在金锄头文库上搜索。

1、第四章 选择结构程序设计,4.1 关系运算符和关系表达式,关系运算符及其优先级 , = 优先级相同高于 =, != 说明:关系运算符优先级低于算术运算符高于赋值运算符 关系表达式 用关系运算符将两个表达式连接起来的式子 关系表达式的值是一个逻辑值,即“真”或“假”,而在C语言中没有专门的逻辑值,用1代表“真”,用0代表“假”,4.2 逻辑运算符与逻辑表达式,逻辑运算符及其优先级 ! ( 逻辑非)高于 & (逻辑与)高于 | (逻辑或) 优先级:! 高于算术运算符,关系运算符高于 & 高于 | 逻辑表达式 逻辑表达式的值为1(真)或0(假),而在运算过程中任何非零值都认为是“真” 用逻辑表达式表

2、示指定条件 是否为闰年 一个数n是否在-1到1之间(注意:关系运算符与逻辑运算符都是左结合的) 一个字符是否是英文字母,注意:,在逻辑表达式的求解中,并不是所有的逻辑运算符都要被执行。 (1)a&b&c 只有a为真时,才需要判断b的值,只有a和b都为真时,才需要判断c的值。 (2)a|b|c 只要a为真,就不必判断b和c的值,只有a为假,才判断b。a和b都为假才判断c,例:执行表达式(m=ab)&(n=cd)后,问各变量的值,当a=1,b=2,c=3,d=4,m和n的原值为1时,由于“ab”的值为0,因此m=0,而“n=cd”不被执行,因此n的值不是0而仍保持原值1。,4.3 if语句,1、单

3、分支选择if语句,if 语句有三种形式:单分支选择 if 语句、双分支选择if语句、多分支选择 if 语句。,语句形式:,if (表达式) 语句;,语句执行流程:,4.3.1 if语句的三种形式,说明: 表达式必须用括号括起来,尾部一般不加分号而且其可以为各种类型的表达式,一般为关系表达式或逻辑表达式,其值为真或假,但也可以是其他表达式,只要值为非0即为真,否则为假。,if(E)等价于 if(E!=0) if(!E) 等价于 if(E=0) if(E1=E2) 与 if(E1=E2)的区别,注意:,(1)if语句自动结合一个语句,当满足条件需要执行多个语句时,应用一对大括号 将需要执行的多个语

4、句括起,形成一个复合语句。,(2)if语句中表达式形式很灵活,可以是常量、变量、任何类型表达式、函数、指针等。只要表达式的值为非零值,条件就为真,反之条件为假。,2、双分支选择if语句,语句形式:,if (表达式) 语句1; else 语句2 ;,语句执行流程:,表达式,语句1,真(非0),假(0),语句2,if和else语句之间只能有一个语句,当ifelse之间的语句不只一句时,应用一对将语句括起。,if(ab) a+;b+; else a=0;b=10;,注意:,3、多分支选择if语句,语句形式:,if (表达式1) 语句1; else if (表达式2)语句2; else if (表达式

5、n)语句n; else 语句n+1;,语句执行流程:,语句含义:,语句形式:,当if语句中又包含若干个if语句时,则构成了if语句嵌套的情形。,4.3.2 if语句的嵌套,if ( 表达式1) if ( 表达式2) 语句1;,if ( 表达式1) if ( 表达式2) 语句1; else 语句2;,注意: 当if语句中出现多个“if”与“else”的时候,要特别注意它们之间的匹配关系,否则就可能导致程序逻辑错误。,“else”与“if”的匹配原则是“就近一致原则”,即“else”总是与它前面最近的“if”相匹配。,例 有一个函数,编一程序,输入一个x值,输出y值。,上例中的程序段有四个,请判断

6、哪个是正确的?,程序1: if(x0) y=-1; else if(x=0) y=0; else y=1;,程序2: if(x=0) if(x0) y=1; else y=0; else y=-1;,程序3: y=-1; if(x!=0) if(x0) y=1; else y=0;,程序4: y=0; if(x=0) if(x0) y=1; else y=-1;,4.4 条件运算符,格式: 表达式?表达式表达式 功能: 先求解表达式,若为非(真)则求解表达式,此时表达式的值就作为整个条件表达式的值。若表达式的值为(假),则求解表达式,表达式的值就是整个条件表达式的值 使用场合: 若在if语句中

7、,当被判别的表达式的值为“真”或“假” 时,都执行一个赋值语句且向同一个变量赋值时,可以用一个条件运算符来处理。,说明: 条件运算符优先级高于赋值运算符 ,低于关系运算符和算术运算符。 条件运算符的结合方向为“自右至左”。 “表达式2”和“表达式3”不仅可以是数值表达式,还可以是赋值表达式或函数表达式。 条件表达式中,表达式的类型可以与表达式和表达式的类型不同。,例: if (ab) max=a; else max=b; 当ab时将a的值赋给max,当ab时将b的值赋给max,可以看到无论ab是否满足,都是向同一个变量赋值,可以用下面的条件运算符来处理: max=(ab)?a:b;,4.5 s

8、witch语句,1、语句形式:,switch(表达式) case 常量1: 语句1; case 常量2: 语句2; case 常量3: 语句3; . case 常量n: 语句n; default : 语句n+1; ,根据表达式的不同值,选择不同的程序分支,又称开关语句。,数值型 或 字符型,常量表达式的值必须互不相同,否则执行时将出现矛盾,即同一个开关值,将对应多种执行方案。,千万不能接(;)号,2、语句执行流程:,指语句的最后一条是否为break,简单语句或复合语句,例 假设用0、1、26分别表示星期日、星期一星期六。现输入一个数字,输出对应的星期几的英文单词。如果输入3,输出“Wednes

9、day”。,程序运行情况如下: 3 Wednesday Thursday Friday Saturday error,#include “stdio.h“ void main() int n; scanf(“%d“, ,在“switch”语句中,“case 常量表达式”只相当于一个语句标号,表达式的值和某标号相等则转向该标号执行,但不能在执行完该标号的语句后自动跳出整个switch 语句,因此会继续执行所有后面语句的情况。,为此,语言提供了一种break语句,其功能是可以跳出它所在的switch语句。,将上例4修改如下:,#include “stdio.h“ void main() int n

10、; scanf(“%d“, ,程序运行情况如下: 3 Wednesday,3、说明,多个case语句可以共用一组执行语句。,switch(grade) case A: case B: case C:printf(“grade=60n“);break; default:printf(“grade60“); ,各case和default子句的先后顺序可以变动,而不会影响程序执行结果。,default语句可以省略不用。,case与其后面的常量表达式间至少有一个空格。,switch语句可以嵌套,break语句只跳出它所在的switch语句。,例 企业发放的奖金根据利润提成。从键盘输入当月利润,求应发放

11、奖金总数?,利润x x=10 10x20 20x40 40x60 60x100 100x,(int )x/10,常量 0,1 1,2 2,3,4 4,5,6 6,7,8,9,10 10以上,用这种方法转换后,n出现了在不同区域有重复数字的情况。解决的方法有很多,其中一种是可以采用当x为10的整数倍时,将计算出的n值减1。,使用switch解题的关键,通过分析找到表达式,将问题分成几种情况。,1. 写出下面程序的运行结果 main() int x=1,y=0,a=0,b=0; switch(x) case 1: switch(y) case 0: a+;break; case 1:b+;break; case 2: a+;b+;break; case 3:a+;b+; printf(“a=%d,b=%dn”,a,b); ,结果: a=2,b=1,2.程序填空: 以下程序判断输入的整数能否被3或7整除.,main() int x,f=0; scanf( “%d”, ,1 x%3=0 | x%7=0 2 f=1;,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号