C语言程序设计 第5章 选择结构程序设计

上传人:E**** 文档编号:89381830 上传时间:2019-05-24 格式:PPT 页数:36 大小:86KB
返回 下载 相关 举报
C语言程序设计 第5章  选择结构程序设计_第1页
第1页 / 共36页
C语言程序设计 第5章  选择结构程序设计_第2页
第2页 / 共36页
C语言程序设计 第5章  选择结构程序设计_第3页
第3页 / 共36页
C语言程序设计 第5章  选择结构程序设计_第4页
第4页 / 共36页
C语言程序设计 第5章  选择结构程序设计_第5页
第5页 / 共36页
点击查看更多>>
资源描述

《C语言程序设计 第5章 选择结构程序设计》由会员分享,可在线阅读,更多相关《C语言程序设计 第5章 选择结构程序设计(36页珍藏版)》请在金锄头文库上搜索。

1、第五章 选择结构程序设计,对于如下的函数计算,算法上属于一个选择结构。 y= 用于实现选择结构的主要是if语句。,1/x 当x0时,10000 当x=0时,if语句的最常见形式为: if(关系表达式)语句1; else 语句2; 如: if(x!=0) y=1/x; else y=10000; 其中 x!=0 就是一个关系表达式 != 就是一个关系运算符,51 关系运算符和关系表达式 1、关系运算符 用于进行比较运算的运算符。共有六种: = = = != 优先级与结合性: 前4种大于后两种。 低于算术运算符而高于赋值运算符。 左结合性。,2、关系表达式 一般形式: 表达式关系运算符表达式 如:

2、ab a+bb+c 经过关系运算后最终有一个值-关系表达式的值。 关系表达式的值只有 0(假)或1(真),例:设 a=2, b=4, c=1 计算以下关系表达式的值: ab a+bb+c ab 可以是字符表达式 (x=2)(y=5) 可以是赋值表达式 (a(bc) 甚至可以是关系表达式 ab= =bc,例:假设 x=3, y=5, z=1, 计算以下关系表达式的值: x+zy xz=xz yxz (x=y-2)x+1,52 逻辑运算符和逻辑表达式 有时,只用一个简单的关系表达式无法完整地表达一个条件,如: y= 其中的条件需要用逻辑表达式来表达: x!=0 &a!=0 &就是一种逻辑运算符。,

3、1/x+1/a 当x0,a0时,10000 其它,1、逻辑运算符 & 逻辑与 两个操作数都为真时&运算结果为真。 | 逻辑或 两个操作数之一为真时即为真。 ! 逻辑非 (单目运算) 操作数为真(假)时为假(真)。 如:若 a=2, b=3, c=0 则: ab&bc 0 ab|bc 1 !(ab) 0,优先级(由高到低): ! 逻辑非 算术运算符 关系运算符 &逻辑与 |逻辑或 赋值运算符 结合性:左结合性,2、逻辑表达式 实际上,前面所举例子即为逻辑表达式: ab&bc ab|bc !(ab) 逻辑表达式的值同样只有1和0,但参加逻辑 运算的操作数可以是任意类型的数据,可以是 任意大小。 例

4、: a+b&b+c 是合法的逻辑表达式。 此时以0代表假,非0代表真。,例:设 a=2, b=3, c=0 , 计算以下表达式的值: a&b b&c a|c !a+c&b+c !c+a=b|bc+10,对于逻辑表达式的两种基本技能: 逻辑表达式的计算。 逻辑表达式的构造。,逻辑表达式的构造举例: abc a和b之一为0,但不同时为0,a=b=c 5=4=3,a=b&b=c,a=0&b!=0 | a!=0&b=0,a*b=0,a*b=0&a+b!=0,对于 a=0 & b!=0 | a!=0 & b=0 a=0可以用!a代替 a!=0可以直接用a !a & b | a & !b 但必须是运算结果

5、作为逻辑量的情况下。 y=(a!=0) 与 y=a 不等效,53 if语句 1、if语句的三种形式 if(表达式)语句; 有一分支为空。 scanf(“%d”, if(表达式)语句1; else 语句2; if(x!=0) y=1/x; else y=10000;, if(表达式1)语句1; else if(表达式2)语句2; else if(表达式3)语句3; else 语句n; if(score=100) printf(“A”); else if(score=90) printf(“B”); else if(score=80) printf(“C”); else if(score=70)

6、printf(“D”); else if(score=60) printf(“E”); else printf(“F”);,对于:,1/x 当x0时,10000 当x=0时,一般用: if(x!=0) y=1/x; else y=10000;,也可用: y=10000; if(x!=0) y=1/x;,y=,? y=1/x; if(x=0)y=10000,例,x (x1),2x-1 (1x10),3x-11 (x10),y=,main() float x,y; scanf(“%f”, ,说明: 语句中的表达式可以是任意表达式: if(x) y=1/x; else y=10000; 一个if结构

7、不可分割: if(x) y=1/x; z=10; else y=10000; 一个分支中包含多个语句时,要用 : if(a0) x=1; y=2; else x=10; y=20;,分支程序设计举例(基本技巧和算法) 例:从键盘输入三个整数到变量a,b,c,输出其中最大的数。 两种典型算法: 枚举法(将各种可能性枚举出来)。 选择法(先假设后判断更新)。,选择法 main() int a,b,c,max; scanf(“%d,%d,%d”, ,例:从键盘输入三个整数到变量a,b,c,要求按从大到小的顺序输出。 两种典型算法: 枚举法(将各种可能的排列枚举出来)。 换位法(将a,b,c中的数据换

8、位)。,换位法 main() int a,b,c,t; scanf(“%d,%d,%d”, ,3,5,8,5,3,8,5,5,3,a,b,c,2、if语句的嵌套 在if语句中,又包含一个或多个if语句: if(score=80) if(score=90) printf(“A”); else printf(“B”); else if(score=60) printf(“C”); else printf(“D”); 注意else与if的匹配,3、条件运算符 如果两个分支的内容都是给同一个变量赋值,则可用简单的条件运算符处理: if(ab) max=a; else max=b; 可用: max=ab

9、 ? a : b; 赋值运算符右边为一条件表达式。 条件表达式的一般形式: 表达式1 ? 表达式2 : 表达式3,条件表达式的执行过程: ab ? a : b 优先级:低于关系运算符,高于赋值运算符。 结合性:右结合性。,表达式1,条件表达式 取表达式3的值,条件表达式 取表达式2的值,非0,0,例:求a,b,c中的最大值: max= ab ? (ac?a:c) : (bc?b:c) ;,54 switch语句(多分支) 适用于根据一个表达式的值就可确定走哪个分支的情况。 switch(表达式) 常量表达式1: 语句1 常量表达式2: 语句2 常量表达式n: 语句n default: 语句n+

10、1 ,例:成绩分档: switch(score/10) case 10: printf(“A”); case 9: printf(“B”); case 8: printf(“C”); case 7: printf(“E”); case 6: printf(“F”); default : printf(“G”); 注:应使用break.,switch(score/10) case 10: printf(“A”); break; case 9: printf(“B”); break; case 8: printf(“C”); break; case 7: printf(“E”); break; c

11、ase 6: printf(“F”); break; default : printf(“G”); ,55 程序举例 有4个圆塔,圆心分别为:(2,2),(-2,2),(-2,-2),(2,-2),圆半径为1。这4个塔的高度为10m,塔以外无建筑物。今输入任一点的坐标,求该点的建筑高度(塔外的高度为0)。,算法设计: 条件“在某一圆内” : “在圆1内或在圆2内或在圆3内或在圆4内” 若设变量c1、c2、c3、c4分别代表是否在相应的圆内,则以上条件为: c1|c2|c3|c4,10 在某一圆内,0 在圆外,(x,y),h=,c1=(x-2)2+(y-2)21 c2=(x+2)2+(y-2)21 c3=(x+2)2+(y+2)21 c4=(x-2)2+(y+2)21,main() int h,c1,c2,c3,c4; float x,y; scanf(“%f%f”, ,

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

当前位置:首页 > 高等教育 > 大学课件

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