新第3章 选择结构程序设计.ppt_第1页
新第3章 选择结构程序设计.ppt_第2页
新第3章 选择结构程序设计.ppt_第3页
新第3章 选择结构程序设计.ppt_第4页
新第3章 选择结构程序设计.ppt_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第3章 选择结构程序设计,C 语言程序设计,内容概述,关系运算符和表达式 逻辑运算符和表达式 if语句 switch语句,教学目标,掌握关系运算符及其表达式。 掌握逻辑运算符及其表达式。 掌握条件运算符及其表达式。 掌握if语句和switch语句。,3.1.1关系运算符及其优先级, =,= !=,高,低,3.1 关系运算符和关系表达式,优先级,从左向右,3.1.2关系表达式,用关系运算符将两个表达式(可以是算术表达式、关系表达式、赋值表达式或逻辑表达式)连接起来的式子,称为关系表达式。 关系表达式的值为逻辑值“真”或“假”,以1代表“真”,以0代表“假”。,结合性:,例如: 关系表达式“8=4

2、”的值为“假”,表达式的值为0。 关系表达式“50”的值为“真”,表达式的值为1。 若a=5,b=3,c=1,则 abc的计算过程是: 先计算ab,结果为真,值为1 再计算1c,结果为假,值为0 f=bc!=a的计算过程是: 先计算bc,结果为1 再计算1!=a结果为1 最后将1赋值给f,!:逻辑非,一元运算符,运算规则:取反,真 假,假 真, b=1; c=2; 执行 d=a+之后,a,b,c,d的值各是什么?,运算结果: d=0,a=1,b=1,c=2,(2)a | b | c,求解方法:只要a为真(非0),就不必判断b和c;只有a 为假,才判断b;a和b都为假,才判断c。,例如: 若 a

3、=0; b=1; c=2; 执行 d=a+|b+|- -c; 后a,b,c,d的值各是什么?,运算结果: d=1,a=1,b=2,c=2,【例】设a=5、b=3、c=2、d=1、x=1、y=1,求表达式(x=ab) printf(Input two numbers: ); scanf(%d%d, ,运行结果为:Input two numbers: 5 12 max=12,第二种形式为: if-else,if(表达式) 语句1; else 语句2;,其语义是: 如果表达式的值为真,则执行语句1,否则执行语句2 。 其执行过程可表示为下图。,【例】用if-else语句改写上例,#include i

4、nt main() int a, b; printf(Input two numbers: ); scanf(%d%d, ,运行结果为:Input two numbers: 5 12 max=12,第三种形式为: if-else-if,前两种形式的if语句一般都用于两个分支的情况。当有多个分支选择时,可采用if-else-if语句。 其语义是:依次判断表达式的值,当出现某个值为真时,则执行其对应的语句。然后跳到整个if语句之外继续执行程序。 如果所有的表达式均为假,则执行语句n。然后继续执行后续程序。,if(表达式1) 语句1; else if(表达式2) 语句2; else if(表达式3)

5、 语句3; else if(表达式m) 语句m; else 语句n;,一般形式为:,【例】个人年收入低于1万元,可免个人所得税;年收入在1万2万元之间,超过1万元的部分交5%的个人所得税;年收入在2万元以上则交总收入的7%的个人所得税。请编写一个程序,根据个人年收入计算个人所得税(精确到元)。,个人年收入和个人所得税分别用整型变量x、y保存。根据题意,个人所得税与个人年收入的关系可用一个分段函数表示:,#includestdio.h void main() int x,y; printf(请输入个人年收入:); scanf(%d, ,程序运行情况如下: 请输入个人年收入:15 000 个人所得

6、税=250元,#includestdio.h void main() int score, grade; printf(请输入成绩:); scanf(%d, ,程序运行情况如下: 请输入成绩:76 成绩76的对应积点是3,【例】计算学习成绩积点,在使用if语句中还应注意以下问题,在三种形式的if语句中,在if关键字之后均为表达式。该表达式通常是逻辑表达式或关系表达式,但也可以是其它表达式,如赋值表达式等,甚至也可以是一个变量。,例如: if (a=5) 语句; if (b) 语句; 都是允许的。只要表达式的值为非0,即为“真”。,在if语句的三种形式中,所有的语句应为单个语句,如果要想在满足条

7、件时执行一组(多个)语句,则必须把这一组语句用括起来组成一个复合语句。但要注意的是在之后不能再加分号。,if (xy) x = x+5; y = y+10; else x = 10; y = 5; ,例如:,在if语句中,条件判断表达式必须用括号括起来,在语句之后必须加分号。,例如:if (b) 语句;,3.3.2 if 语句的嵌套 当if语句中的执行语句又是if语句时,则构成了if 语句嵌套的情形。 其一般形式可表示如下: if(表达式) if语句; 或者为 if(表达式) if语句; else if语句; 在嵌套内的if语句可能又是if-else型的,这将会出现多个if和多个else重叠的

8、情况,这时要特别注意if和else的配对问题。,例如: if(表达式1) if(表达式2) 语句1; else 语句2; 其中的else究竟是与哪一个if配对呢?,应该理解为: if(表达式1) if(表达式2) 语句1; else 语句2; 还是应理解为: if(表达式1) if(表达式2) 语句1; else 语句2;,为了避免这种二义性,语言规定,else 总是与它前面最近的if配对,因此对上述例子应按前一种情况理解。,1.条件运算符 条件运算符由问号“?”和比例号“:”组成,用于连接三个运算对象,是C语言中唯一的一个三目运算符。,2.条件表达式,一般形式: ? :,求值规则和表达式的值

9、:,求解 表达式1,真(非0),求解 表达式2,假(0),求解 表达式3,表达式 的值,3.3.3 条件运算符与条件表达式,优先级:逻辑 条件 赋值 结合性:自右至左,【例】若有定义a=2、b=3、c=4,求下列表达式的值。 (1)m=ab?a:b (2)m=ab?a:bc?b:c,结果为: ,3.4 switch语句,1、语句形式:,switch (表达式) case 常量1: 语句1; case 常量2: 语句2; case 常量3: 语句3; . case 常量n: 语句n; default : 语句n+1; ,根据表达式的不同值,选择不同的程序分支,又称开关语句。,数值型 或 字符型,

10、常量表达式的值必须互不相同,否则执行时将出现矛盾,即同一个开关值,将对应多种执行方案。,2、语句执行流程:,指语句的最后一条是否为break,简单语句或复合语句,case语句出 现的次序并 不影响执行 结果。,void main() int n; printf(请输入成绩:); scanf(%d, ,请输入成绩:78 成绩78的等级为中等 成绩78的等级为及格 成绩78的等级为不及格,出错啦!?,【例】编写程序,对学生成绩进行等级评定。将成绩分为几个等级:059分为不及格,6069分为及格,7079分为中等,8089分为良好,90100分为优秀。要求输入一个成绩,输出其对应的等级。,在“swi

11、tch”语句中,“case 常量表达式”只相当于一个语句标号,表达式的值和某标号相等则转向该标号执行,但不能在执行完该标号的语句后自动跳出整个switch 语句,因此会继续执行所有后面语句的情况。 为此,语言提供了一种break语句,其功能是可以跳出它所在的switch语句。,将上面的例子修改如下:,void main() int n; printf(请输入成绩:); scanf(%d, ,请输入成绩:78 成绩78的等级为中等,使用switch语句时还应注意以下几点,switch后面圆括号内表达式的值和case语句中常量表达式的值,都必须是整型的、枚举型的或字符型的,不允许是浮点型的。在case后的各常量表达式的值不能相同。 每个case子句既可以是一条语句,也可以是多条语句。当是多条语句时,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论