C语言程序设计第4章-选择结构程序设计课件.pptx
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《C语言程序设计第4章-选择结构程序设计课件.pptx》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 选择 结构 程序设计 课件
- 资源描述:
-
1、0101020203034 4.1.1 关系运算符与关系表达关系运算符与关系表达式式 4.2 4.2 逻辑运算符与逻辑表达式逻辑运算符与逻辑表达式4.3 4.3 ifif语句语句第四章第四章 选择结构程序设计选择结构程序设计040405050606 4.4 4.4 switch switch 语句语句4.5 4.5 知识点强化与应用知识点强化与应用4.6 4.6 本章小结本章小结【学习要点】1.关系运算符、关系表达式 逻辑运算符、逻辑表达式 2.IF 语句3.Switch 语句本章主要介绍关系运算符和关系表达式、逻辑运算符和逻辑表达式、if语句、switch语句。要求掌握关系运算符和关系表达式
2、的定义和使用;掌握逻辑运算符和逻辑表达式的定义和使用;掌握if语句和switch语句的定义和使用。【导入案例:根据给定的条件,执行不同的操作】图4-1选择结构程序设计案例 定义学生信息管理系统中的各个子模块的功能,用户根据需要进行的操作输入相应的(1-9)数字后,系统按照对应的功能进行执行,如录入学生信息,查找学生信息,统计学生信息,删除学生信息,退出程序等操作。【导入案例:根据给定的条件,执行不同的操作】在本案例中,用户根据自已的需要进行功能的选择,在某一时刻只能选择其中一种功能,比如用户需要“录入学生信息”功能时,就要输入数字1进行选择;用户需要“修改学生信息”功能时,就要输入数字2进行选
3、择,依此类推,用户需要执行图中九种功能中的某一种功能时,就要输入某一功能前所对应的数字进行选择?在程序设计中,上述功能的实现就需要用选择结构来实现。选择结构的作用是根据所给条件的真假,决定程序的运行途径。如何表示条件呢?这就要学习C语言的关系运算符和逻辑运算符及其对应的表达式。分析 所谓“关系运算”实际上就是“比较运算”,即将两个数据进行比较,判定两个数据是否符合给定的关系。例如,“a b”中的“”表示一个大于关系运算。如果a的值是5,b的值是3,则大于关系运算“”的结果为“真”,即条件成立;如果a的值是2,b的值是3,则大于关系运算“”的结果为“假”,即条件不成立。4.1 关系运算符与关系表
4、达式 在程序中经常需要比较两个量的大小关系,以决定程序下一步的工作。比较两个量的运算符称为关系运算符。在C语言中有以下关系运算符:小于 大于=大于或等于=等于!=不等于4.1.1 关系运算符 关系运算符都是双目运算符,其结合性均为左结合。关系运算符的优先级低于算术运算符,高于赋值运算符。在六个关系运算符中,=的优先级相同,高于=和!=,=和!=的优先级相同。注意 在语言中,“等于”关系运算符是双等号“=”,而不是单等号“=”(赋值运算符)。4.1.1 关系运算符关系表达式的一般形式为:表达式 关系运算符 表达式 例如:64,a!=b,a-bc+d,-i-3*j=k+8;都是合法的关系表达式。由
5、于表达式也可以又是关系表达式。因此也允许出现嵌套的情况,例如:ac),i!=(j=k)等。由于语言没有逻辑型数据,所以用整数“”表示“逻辑真”,用整数“”表示“逻辑假”。如:64的值为“真”,即为1。(a=3)(b=5)由于35不成立,故其值为假,即为0。4.1.2 关系表达式4.1.2 关系表达式【例4-1】关系运算符的使用。#includevoid main()char ch=c;int a=5,b=2,c=1;float x=0.85,y=8.2;printf(%d,%dn,a+6ch,x+5.15=y-x);printf(%d,%dn,2ba+5);运行结果:0,1 1,0说明:在本例
6、中求出了各种关系运算符的值。a+6ch表达式中字符变量a是以它对应的ASC码参与运算的,相当于97+699,显示结果为假(0),x+5.25=y-x相当于0.85+5.15=1”。如果需要描述“x=1”、同时“x=0)&(x10),(x5),!(x=0),(year%4=0)&(year%100!=0)|(year%400=0)4.2.1 逻辑运算符与运算符&和或运算符|均为双目运算符。具有左结合性。非运算符!为单目运算符,具有右结合性。逻辑运算符和其它运算符优先级的关系可表示如下:!(非)&(与)|(或)!算术运算 关系运算&|赋值运算按照运算符的优先顺序可以得出:ab&cd等价于(ab)&
7、(cd)!b=c|da等价于(!b)=c)|(dc&x+yc)&(x+y)0&42,由于50为真,42也为真,相与的结果也为真。(2)或运算|参与运算的两个量只要有一个为真,结果就为真。两个量都为假时,结果为假。例如:50|58,由于50为真,相或的结果也就为真。(3)非运算!参与运算量为真时,结果为假;参与运算量为假时,结果为真。例如:!(50)的结果为假。虽然C编译在给出逻辑运算值时,以“1”代表“真”,“0”代表“假”。但反过来在判断一个量是为“真”还是为“假”时,以“0”代表“假”,以非“0”的数值作为“真”。例如:由于5和3均为非“0”,因此5&3的值为“真”,即为1。又如:5|0的
8、值为“真”,即为1。4.2.1 逻辑运算符逻辑表达式的一般形式为:表达式 逻辑运算符 表达式如:b&c4、!c=a|b4、x1&x100都是合法的逻辑表达式。逻辑表达式的结果和关系表达式的结果一样,是一个逻辑值,即“真”或“假”,分别用整数1和0表示。在判断一个量的真假时,以0表示“假”,以非0表示“真”。逻辑运算符的求值规则,见书P56表4-1。4.2.2 逻辑表达式注意注意:在求解逻辑表达式的值时并不是所有的运算都要被执行,除了考虑各种运算的优先级和结合性之外,还要考虑与(&)和或(|)运算具有的短路效应,即当某个运算对象的值可以确定整个逻辑表达式的值时,其余的运算对象将不需要再参与运算,
9、具体几种情况见书P56-57,请同学们认真阅读理解。4.2.2 逻辑表达式4.2.2 逻辑表达式【例4-2】逻辑运算符的应用。#includevoid main()int x=0,y=1,z=0,a,b,c;a=x&y-&+z;printf(x=%d,y=%d,z=%d,a=%dn,x,y,z,a);b=+x|+y|-z;printf(x=%d,y=%d,z=%d,b=%dn,x,y,z,b);c=x+&-y|+z;printf(x=%d,y=%d,z=%d,c=%dn,x,y,z,c);运行结果:x=0,y=1,z=0,a=0 x=1,y=1,z=0,b=1 x=2,y=0,z=1,c=14
10、.2.2 逻辑表达式说明:本例中在a=x&y-&+z;语句中,x的值为0,短路了后面的运算,表达式结果为(a=0),y=1,z=0值不发生变化;在b=+x|+y|-z;语句中,x的值为1,短路了后面的运算,表达式结果为1(b=1),y=1,=0值不发生变化;在c=x+&-y|+z;语句中,先进行与运算,再进行或运算。选择结构语句是通过判断给定的条件是否满足,从而决定执行条件匹配的分支程序段。选择结构包括单分支选择结构、双分支结构和多分支结构三种基本形式。4.3 IF 语句 单分支if语句格式:if(表达式)功能:(1)表达式是选择结构执行的条件,一般是一个逻辑表达式或关系表达式,也可以是一个数
11、值,需要用圆括号括起来。(2)用花括号括起来的语句组称为复合语句,当语句只有一条,可以省略花括号()。(3)当条件成立(即表达式的值为真)时,执行语句块,然后执行if语句下面的一条语句,如果条件不成立,则不执行语句块,直接执行if语句下面的一条语句。4.3.1 单分支 IF 语句 4.3.1 单分支if语句【例4-3】从键盘输入一个圆的半径,如果半径大于0,则计算其面积,否则,什么都不做。分析:需要定义两个变量s、a用来存放圆的面积和半径,可以用“int s,a”语句定义;使用scanf语句从键盘输入圆的半径的值,存储于a变量中;判定圆的半径的值是否大于0,如果大于0,就利用公式计算机出圆的面
12、积,最后使用printf语句输出圆的面积,如果输入圆的半径的值小于0,则什么都不做,直接退出程序。#define pi 3.14159void main()int a,s;printf(请输入圆的半径:n);scanf(%d,&a);if(a0)s=pi*a*a;4.3.1 单分支if语句printf(this rear is:%dn,s);运行结果:请输入圆的面积:4This rear is:50.265440 双分支if语句 格式:if(表达式)else (执行流程图)功能:if 和else是C语言的关键字,在该结构执行时,先计算机表达式的值,如果表达式的值为“真”(为非0),则执行语句块
13、1;否则执行语句块2。当语句1和语句2是多条语句时,要用花括号括起来。4.3.2 双分支 IF 语句 4.3.2 双分支if语句【例4-6】在购买某商品时,商品价格随团购的购买人数而定,试根据团购人数求最终实际出售价格,求解过程应遵循如下规则:如果团购人数为10人以上时,商品价格为实际价格的9折;否则商品按原价出售。分析:需要定义三个变量,第一个变量用来存放购买人数,第二个变量用来存放商品的原来价格,第三个变量用来存放商品的出售价格,然后根据团购的人数来计算商品的出售价格,如果如果团购人数为10人以上时,商品价格为实际价格的9折;否则商品按原价出售。参考程序如下:#include void m
14、ain()int number=0;double originprice,price;printf(请输入number的值:);scanf(%d,&number);4.3.2 双分支if语句 printf(请输入originprice的值:);scanf(%lf,&originprice);if(number=10)price=originprice*0.9;else price=originprice;printf(商品价格为:%lfn,price);多分支if语句 格式:if(表达式1)else if(表达式2)else if(表达式n)else 功能:首先计算表达式1的值,如果为真,则执
15、行语句块1后,表示该多分支结构执行完毕,接着执行else下面的语句;否则判断表达式2的值是否为真,若为真,则执行语句块2;否则继续往下判断下面的表达式的值,若前n-1个表达式的值为“假”(0),但第n个表达式的值为“真”(为非0),则执行语句n;若所有表达式的值都为“假”(0),则执行语句n+1。4.3.3 多分支 IF 语句 4.3.3 多分支if语句【例4-7】编程实现分段函数。0 x 0 y=2x+1 0 x10 3x+2 10 x20 5x-1 x20输入x的值,求对应的y值并输出。分析:(1)判断条件x 0是否成立,如果成立,y=0。(2)判断条件0 x10是否成立,如果成立,y=2
16、*x+1。(3)判断条件10 x20是否成立,如果成立,y=3*x+2。(4)以上条件都不成立,y=5*x-1。(5)最后使用printf函数输出y的值。4.3.3 多分支if语句参考程序如下:#include void main()float x,y;scanf(%f,&x);if(x=0)y=0;else if(x=10)y=2*x+1;else if(x=20)y=3*x+2;else y=5*x-1;printf(x=%f,y=%fn,x,y);4.3.4 IF 语句的嵌套在if语句中又包含一个或多个if语句称为if语句的嵌套,一般有以下两种情况。1内嵌一个if 语句语句格式为:if(
17、表达式1)else if(表达式2)else2.内嵌多个if语句语句格式为:if(表达式1)if(表达式2)elseelse if(表达式3)else4.3.4 IF 语句的嵌套说明:(1)在if语句的嵌套中,出现了多个if与else语句,其中else语句不能单独作为语句使用,其必须和if语句配对使用;else总是与离它上面最近的、尚未与其他else配对的if 语句配对,一般是从后往前查找,确定else与if的匹配关系,此时不要被缩进对齐格式所迷惑。(2)if与else的个数最好相同,从内层到外层要一一对应,以避免出错。(3)如果if与else的个数不相同,可以用花括号来确定配对关系,形式如下
18、:if()if(表达式1)else 这时的 限定了内嵌if语句的范围,因此else与最上面的if配对。4.3.4 IF 语句的嵌套【例4-8】输入一个字符,如果是数字则输出1,是字母则输出2,是其它符号则输出3。分析:(1)定义一个字符变量并完成输入。(2)判断输入的字符是否是数字,如果成立,输出1。(3)判断输入的字符是否是字母,如果成立,输出2。(4)判断输入的字符是否是除了数字和字母的其它字符,如果成立,输出3。参考程序如下:#include void main()char c;scanf(%c,&c);if(0=c&c=9)printf(c=%c%cn,c,1);/*如果是数字,则输出
19、字符1*/else if(A=c&c100是否成立,如果成立,输出“输入分值错误!”。(2)判断条件0n60是否成立,如果成立,输出等级“E”。(3)判断条件60n70是否成立,如果成立,输出等级“D”。(4)判断条件70n80是否成立,如果成立,输出等级“C”。(5)判断条件80n90是否成立,如果成立,输出等级“B”。(6)判断条件90n100是否成立,如果成立,输出等级“A”。参考程序如下:#includevoid main()int c;printf(n Input a score:);4.3.4 IF 语句的嵌套scanf(%d,&c);if(c100|c=90&c=80&c=70&
展开阅读全文