C语言入门ppt之数据类型、运算符达与表式.ppt_第1页
C语言入门ppt之数据类型、运算符达与表式.ppt_第2页
C语言入门ppt之数据类型、运算符达与表式.ppt_第3页
C语言入门ppt之数据类型、运算符达与表式.ppt_第4页
C语言入门ppt之数据类型、运算符达与表式.ppt_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

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

文档简介

1、第五章 选择结构程序设计,5. 1 关系运算符和关系表达式 5. 2 逻辑运算符和逻辑表达式 5. 3 if 语句 5. 4 switch多分支选择 语句 5. 5 程序举例,引例 计算函数值,需要考虑: 输入x 判断x的值 根据x的值,计算y的值 输出y 显然 顺序结构不能实现,#include “stdio.h” #include ”math.h” void main( ) float x,y, ; printf(”Enter x:”); scanf(”%f”, ,关系运算,Enter x: 2 X=2.00 ,y=0.4546,5. 1 关系运算符和关系表达式,关系运算:将两个值进行比较

2、 关系运算符: = = = ! = 高 低 优先级别 算术运算符 关系运算符 赋值运算符 高 低,注意: “=” “=”,如: ca+b c(a+b) a= =bc a= =(bc) a=bc a=(bc),关系运算符的结合规则:左结合,4 .关系表达式:用关系运算符将两个表达式连接起来的式子 一般形式: 算术表达式或关系达式、逻辑表达式、赋值表达式、字符表达式,即任何C合法的表达式。 例如:a+bc-b (ab)= = c a= =“A” 注意:数值量比较:数字量的大小 字符量比较:ASCII的大小 5 .关系表达式的值:逻辑值真(1)、假(0) 如: ca+b c(a+b) a=bc a=

3、(bc) a=bc a=(bc ) 问:a=1, b=-5, c=a 上述表达式的值?,1 ,1 ,1,举例:写出下列表达式的值 若有定义:int a=3, b=2, c=1; char ch1=a; 1) b+c!=a 2) ch1b)(bbbb= =c 7) f=abc, 0, 1, 0, 1, 1, 1, 0,5. 2 逻辑运算符和逻辑表达式,1 逻辑运算符(真值表见书) !(非) ,4 逻辑表达式 用逻辑运算符将关系表达式或逻辑量连接起来的式子 (单个逻辑量或关系表达式是逻辑表达式的特例。) 5 逻辑表达式的值:逻辑值真、假 真条件成立,1代表; 假条件不成立,0代表;,若a=4,则!

4、a的值为0。 若a=4,b=5,则a 内嵌语句 一条语句、复 合语句、空语句。描述了条件 成立时要执行的操作。 可是任何形式的表达式;通常是关系或 逻辑表达式。描述了分支控制条件。 注意: if(x)相当于if(x!= 0) if(x= = 0)与if(x= 0)是不同的。,例:输入一个整数,为正则输出 #include stdio.h void main( ) int x; scanf(”%d”, ,思考:若a,b,c三个数排序,如何处理?,使用 if 语句时,要特别注意表达式的含义及写法 例如:a=3,b=2,c=1; if(a=!b) printf(” 1:”); if(ab 3:,若改

5、为:if(a!=b)printf(“1:”);,1:2:3:,注意: a=!b不要误解为 a!=b 也不要误解为 a=!b a=!b有赋值作用,a被改变,第二种形式分支选择 if (e) A else B 执行过程: e为真值(非0)执行A,否则执行B 或都可以是单一语句,或复合语句。 else部分不能独立存在, Else前有“;”,是if 的一部分。 注意 在C语言中,表达式的值为非0时,系统按“真”值处理,如: a=-5 if (a) printf(”ok”) if (a) printf(”ok”),例:根据x求y值 y= #include stdio.h void main( ) flo

6、at x, y; scanf(”%f”, ,x x0 x2 + 1 x0,例:输入两个数并按由小到大顺序输出 #include stdio.h void main( ) float a,b,t; scanf(”%f,%f”, ,例:求任意三角形面积,若三边值不能构成三角形时输出表示错误的信息。 #include stdio.h void main( ) float a, b, c, s, area; printf(”Enter a, b, c:”); scanf(”%f,%f,%f”, ,第三种形式嵌套分支、阶梯if if ( e1 ) s1 else if ( e2 ) s2 else if

7、 ( e3 ) s3 else if ( em ) sm else sn 其中:ei各层的分支条件;si各层的内嵌语句; 执行过程:系统自上而下逐个判断条件ei,一旦发现某条件ei满足时,执行其后续的语句si,并跳过其他剩余的阶梯。若所有条件不满足,执行最后一个else语句或后续语句。 注意: else与最近的if 匹配,e1,e2,T F T F T F s1 s2 s3 s4,e3,例:对学生成绩分档; void main( ) int g; printf(”Enter score:”); scanf(”%d”, ,80100分 A档 7079分 B档 6069分 C档 059分 D档,上

8、例:用单路分支实现 #include stdio.h void main( ) int g; printf(”Enter score:”); scanf(”%d”, 执行效率和条件与阶梯 if有什么差别?,80100分 A档 7079分 B档 6069分 C档 059分 D档,2. if的嵌套: 在一个分支结构中,又完整地包含一个或多个分支结构,则构成了分支结构的嵌套。,e1 e2 e3,T F T F T F s1 s2 s3 s4,if (e1) if (e2) s1 else s2 else if (e3) s3 else s4,实现多路分支,Else 与最近的if 匹配,比较: if(

9、x) if(y) printf(“1”); else printf(“2”);,if(x) if(y) printf(“1”); else printf(“2”);,由此看出:通过加“ ”,改变else的层次,从而改变程序的流程。,例:编程,判定某年是否闰年 闰年条件:整百的年份能被400整除; 或非整百的年份能被4整除。 算法表示:,输入year year%100= =0,year%400= =0,year%4= =0,T F T F leap=1 leap=0 leap=1 leap=0,leap= =1,T F,T F,输出“is” 输出“not”,程序清单: #include stdi

10、o.h void main( ) int year, leap; scanf(”%d”, ,3. 条件运算符和条件表达式 条件运算符 ? : 唯一三目 条件表达式 e1 ?e2: e3 其中:各个表达式可以是任何形式的表达式。 求解过程: 先求解e1, e1值非0,计算并返回e2的值,否则计算并返回e3的值 运算顺序:高于赋值运算,低于算、关系、逻辑运算,例: xy? (y=-x ): (y=+x); 或:y=xy?-x :+x ; 等价于 if (xy) y= -x; else y= +x;,结合方向:“自右至左” ab?acd?cd 相当于 ab?a(cd?cd),例:ch=(ch=A,-

11、1 x0,使用说明: 表达式2、3值的类型可不同,此时整个条件式值的类型与两者中较高者一致。 例: float x, y; int a=2; scanf(”%f”, y=x40 ? a : a*0.9 分支条件成立条件表达式值为2.0, 条件不成立条件表达式值为1.8。,5. 4 switch多分支选择 语句,1. switch的一般形式 switch (e) case c1 :s1 case c2 :s2 case cn :sn default : sn+1 ,其中: 表达式可是任何形式,但其值应为整型、字符型;ci可是整、字符、符号常量、常量表达式。,相对嵌套的if语句实现多路分支问题,程

12、序结构清晰、易读,2. switch的执行流程 求表达式e的值 若与ci的值一致,则从语句si开始执行,到其后的所有内嵌语句执行完毕,直到遇break语句或switch的“” 若与任何常量表达式的值均不相等,则执行default后的语句或后续语句。,switch执行流程图: switch (表达式) case c1: s1 case c2: s2 case cn: sn default : sn+1 ,注意: 常量表达式ci只起标号作用,不作求值判断 常量表达式必须唯一,没有先后顺序 多个case语句可公用一组执行语句,在switch中可以使用break语句跳出switch结构;,例:对成绩分

13、档 #include “stdio.h” void main( ) char c1; int g; scanf(”%d”, ,80100分 A档 7079分 B档 6069分 C档 059分 D档,break; break; break;,#include stdio.h void main( ) int g; printf(”Enter score:”); scanf(”%d”, ,关键: 如何表示表达式和常量 常量的取值与表达式有关,5. 5 选择结构程序举例,例:找出三个整数中的最大、最小数。 #include stdio.h void main( ) int a, b, c, max,

14、 min; printf(”Enter a,b,c:”); scanf(”%d,%d,%d”, ,思考:从键盘输入四个整数,输出其中的最大数。,例:要求输入三个数并按由小到大顺序输出 #include stdio.h void main( ) float a,b,c,t; scanf(%f,%f,%f, ,练习:输入四个整数,升序排序并输出。,输入a、b、c、d T ab F ab T ac F ac T ad F ad ,T bc F bc T bd F bd T cd F cd 输出a、b、c、d,例:编写一个能进行二个操作数的加、减、乘、除运算的计算器模拟程序。 #include stdio.h void main() char op; float x,y; printf(t Input a arithmetiic expressionnt); scanf(%f%c%f, ,分析 输入两个数级、运算符 switch表达式:运算符 常量: + - * /,练习:将上例题目改为 设计的菜单选择程序,根据一个简单选择可实现a与b的四则运算。 提示:程序分三部分 1

温馨提示

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

最新文档

评论

0/150

提交评论