c语言程序设计课件:选择结构.ppt

上传人(卖家):罗嗣辉 文档编号:2088390 上传时间:2022-02-14 格式:PPT 页数:36 大小:91KB
下载 相关 举报
c语言程序设计课件:选择结构.ppt_第1页
第1页 / 共36页
c语言程序设计课件:选择结构.ppt_第2页
第2页 / 共36页
c语言程序设计课件:选择结构.ppt_第3页
第3页 / 共36页
c语言程序设计课件:选择结构.ppt_第4页
第4页 / 共36页
c语言程序设计课件:选择结构.ppt_第5页
第5页 / 共36页
点击查看更多>>
资源描述

1、第五章第五章 选择结构程序设计选择结构程序设计 对于如下的函数计算,算法上属于一个选对于如下的函数计算,算法上属于一个选择结构。择结构。 y=y= 用于实现选择结构的主要是用于实现选择结构的主要是ifif语句。语句。1/x 1/x 当当x0 x0时时 10000 10000 当当x=0 x=0时时ifif语句的最常见形式为:语句的最常见形式为: if(if(关系表达式关系表达式) )语句语句1 1; else else 语句语句2 2;如:如: if(if(x!=0 x!=0) y=1/x;) y=1/x; else y=10000; else y=10000;其中其中 x!=0 x!=0 就

2、是一个关系表达式就是一个关系表达式 !=!= 就是一个关系运算符就是一个关系运算符5 51 1 关系运算符和关系表达式关系运算符和关系表达式1 1、关系运算符、关系运算符用于进行比较运算的运算符。共有六种:用于进行比较运算的运算符。共有六种: = = = != = = = !=优先级与结合性:优先级与结合性: 前前4 4种大于后两种。种大于后两种。 低于算术运算符而高于赋值运算符。低于算术运算符而高于赋值运算符。 左结合性。左结合性。2 2、关系表达式、关系表达式一般形式:一般形式:表达式关系运算符表达式表达式关系运算符表达式 如:如:ab a+bb+cab a+bb+c 经过关系运算后最终有

3、一个值经过关系运算后最终有一个值-关系表达关系表达式的值式的值。 关系表达式的值只有关系表达式的值只有 0 0( (假假)或)或1 1(真真)例:例:设设 a=2, b=4, c=1 a=2, b=4, c=1 计算以下关系表达计算以下关系表达式的值:式的值:ab ab a+bb+ca+bb+cab ab 可以是字符表达可以是字符表达式式(x=2x=2)(y=5) (y=5) 可以是赋值表达式可以是赋值表达式(a(bc) (a(bc) 甚至可以是关系表达式甚至可以是关系表达式ab= =bcab= =byx+zyxy=yzxy=yz=xzyz=xzyxz yxz (x=y-2)z+1=x+y(x

4、=y-2)z+1=x+ya=x+y=x+zx+1a=x+y=x+zx+15 52 2 逻辑运算符和逻辑表达式逻辑运算符和逻辑表达式有时,只用一个简单的关系表达式完整地表有时,只用一个简单的关系表达式完整地表达一个条件,如:达一个条件,如: y= y= 其中的条件需要用逻辑表达式来表达:其中的条件需要用逻辑表达式来表达: x!=0 &a!=0 x!=0 &a!=0 &就是一种逻辑运算符。就是一种逻辑运算符。1/x+1/a 1/x+1/a 当当x0,a0 x0,a0时时 10000 10000 其它其它1 1、逻辑运算符、逻辑运算符& & 逻辑与逻辑与 两个操作数都为真时两个操作数都为真时&运算结

5、果为真。运算结果为真。| 逻辑或逻辑或 两个操作数之一为真时即为真。两个操作数之一为真时即为真。! ! 逻辑非逻辑非 (单目运算单目运算) 操作数为真(操作数为真(假假)时为假()时为假(真真)。)。 如:如:若若 a=2, b=3, c=0 a=2, b=3, c=0 则:则: ab&bc ab&bc 0 0 ab|bc ab|bc 1 1 !(ab) !(ab) 0 0优先级优先级(由高到低):(由高到低):! ! 逻辑非逻辑非算术运算符算术运算符关系运算符关系运算符&逻辑与逻辑与|逻辑或逻辑或赋值运算符赋值运算符结合性:结合性:左结合性左结合性2 2、逻辑表达式、逻辑表达式 实际上,前面

6、所举例子即为逻辑表达式实际上,前面所举例子即为逻辑表达式: ab&bc ab|bc !(ab)ab&bc ab|bc !(ab) 逻辑表达式的值同样只有逻辑表达式的值同样只有1 1和和0 0,但参加逻辑,但参加逻辑 运算的操作数可以是任意类型的数据,可以是运算的操作数可以是任意类型的数据,可以是 任意大小。任意大小。例:例: a+b&b+ca+b&b+c 是合法的逻辑表达式。是合法的逻辑表达式。此时以此时以0 0代表代表假假,非非0 0代表代表真真。例:例:设设 a=2, b=3, c=0 , a=2, b=3, c=0 , 计算以下表达式计算以下表达式的值:的值: a&b b&c a|ca&

7、b b&c a|c !a+c&b+c !a+c&b+c !c+a=b|ba !c+a=b|bc+10 a+c|a+bc+10对于逻辑表达式的两种基本技能:对于逻辑表达式的两种基本技能: 逻辑表达式的计算。逻辑表达式的计算。 逻辑表达式的构造。逻辑表达式的构造。逻辑表达式的构造举例:逻辑表达式的构造举例: abcabc a a和和b b之一为之一为0 0,但不同时为,但不同时为0 0a=b=c a=b=c 5=4=35=4=3a=b&b=ca=b&b=ca=0&b!=0 | a!=0&b=0a*b=0a*b=0&a+b!=0对于对于 a=0 & b!=0 | a!=0 & b=0a=0 & b!

8、=0 | a!=0 & b=0 a=0 a=0可以用可以用!a!a代替代替 a!=0a!=0可以直接用可以直接用a a !a & b | a & !b!a & b | a & !b但必须是运算结果作为逻辑量的情况下。但必须是运算结果作为逻辑量的情况下。 y=(y=(a!=0a!=0) ) 与与 y=y=a a 不等效不等效5 53 if3 if语句语句1 1、ifif语句的三种形式语句的三种形式 ifif(表达式表达式)语句;)语句; 有一分支为空。有一分支为空。 scanfscanf(“%d”,&score);(“%d”,&score); if( if(score=60score=60) p

9、rintf) printf(“pass”)(“pass”); ; ifif(表达式表达式)语句)语句1 1; else else 语句语句2 2; if(if(x!=0 x!=0) y=1/x;) y=1/x; else y=10000; else y=10000; ifif(表达式表达式1 1)语句)语句1 1; else if(else if(表达式表达式2 2) )语句语句2 2; else if(else if(表达式表达式3 3) )语句语句3 3; else else 语句语句n n; if(score=100) printfif(score=100) printf(“A”);(“

10、A”); else else if(score=90) printfif(score=90) printf(“B”);(“B”); else else if(score=80) printfif(score=80) printf(“C”);(“C”); else else if(score=70) printfif(score=70) printf(“D”);(“D”); else else if(score=60) printfif(score=60) printf(“E”);(“E”); else printf else printf(“F”);(“F”); 对于:对于: 1/x 1/x

11、当当x0 x0时时10000 10000 当当x=0 x=0时时一般用:一般用:if(x!=0) y=1/x;if(x!=0) y=1/x;else y=10000;else y=10000;也可用:也可用:y=10000;y=10000;if(x!=0) y=1/x;if(x!=0) y=1/x;y=y=? ?y=1/x;y=1/x;if(x=0)y=10000if(x=0)y=10000 例:(习题例:(习题5.55.5): :x (x1)2x-1 (1x10)10) 3x-11 (x10)y=y= main()main() float x,y; float x,y; scanf scan

12、f(“%f”,&x);(“%f”,&x); if(x1) y=x;if(x1) y=x; else if(x10) y=2 else if(x10) y=2* *x-1;x-1; else y=3 else y=3* *x-11;x-11; printf printf(“n y=%f”,y);(“n y=%f”,y); 说明:说明: 语句中的表达式可以是任意表达式:语句中的表达式可以是任意表达式: if(if(x x) y=1/x;) y=1/x; else y=10000; else y=10000; 一个一个ifif结构不可分割:结构不可分割: if(x) y=1/x;if(x) y=1/

13、x; z=10;z=10; else y=10000; else y=10000;一个分支中包含多个语句时,要用一个分支中包含多个语句时,要用 : if(a0) if(amax) max=b; if(bmax) max=b; if(cmax) max=c; if(cmax) max=c; printf printf(“n max=%d”,max);(“n max=%d”,max); 例:例:从键盘输入三个整数到变量从键盘输入三个整数到变量a,b,c,a,b,c,要求要求按从大到小的顺序输出。按从大到小的顺序输出。 两种典型算法:两种典型算法: 枚举法枚举法(将各种可能的排列枚举出来)(将各种可

14、能的排列枚举出来)。 换位法换位法(将(将a,b,ca,b,c中的数据换位)。中的数据换位)。换位法换位法main()main() int a,b,c,t; int a,b,c,t; scanf scanf(“%d,%d,%d”,&a,&b,&c);(“%d,%d,%d”,&a,&b,&c); if(ab) t=a; a=b; b=t;if(ab) t=a; a=b; b=t; if(ac) t=a; a=c; c=t; if(ac) t=a; a=c; c=t; if(bc) t=b; b=c; c=t; if(b=80)if(score=80) if(score=90) printfif(

15、score=90) printf(“A”);(“A”); else else printf printf(“B”);(“B”);else else if(score=60) printfif(score=60) printf(“C”);(“C”); else printf else printf(“D”);(“D”);注意注意elseelse与与ifif的匹配的匹配3 3、条件运算符、条件运算符如果两个分支的内容都是给同一个变量赋值如果两个分支的内容都是给同一个变量赋值,则可用简单的条件运算符处理:,则可用简单的条件运算符处理: if(ab) max=a;if(ab) max=a; else

16、max=b; else max=b;可用:可用: max=max=ab ab ? ? a a : : b b; ;赋值运算符右边为一条件表达式。赋值运算符右边为一条件表达式。条件表达式的一般形式:条件表达式的一般形式: 表达式表达式1 1 ? 表达式表达式2 2 : 表达式表达式3 3条件表达式的执行过程:条件表达式的执行过程: ab ab ? ? a a : : b b 优先级:优先级:低于关系运算符,高于赋值运算符。低于关系运算符,高于赋值运算符。结合性结合性:右结合性。:右结合性。 表达式表达式1 1条件表达式条件表达式, ,取表达式取表达式3 3的值的值条件表达式条件表达式 取表达式取

17、表达式2 2的值的值 非00 例:求例:求a,b,ca,b,c中的最大值:中的最大值:max= ab max= ab ? ? (ac (ac? ?a a: :c) c) : : (bc (bc? ?b b: :c) ;c) ;5 54 switch4 switch语句(语句(多分支多分支) 适用于根据一个表达式的值就可确定适用于根据一个表达式的值就可确定走哪个分支的情况。走哪个分支的情况。 switchswitch(表达式表达式) 常量表达式常量表达式1 1: 语句语句1 1 常量表达式常量表达式2 2: 语句语句2 2 常量表达式常量表达式n n: 语句语句n n default defau

18、lt: 语句语句n+1n+1 例:成绩分档:例:成绩分档:switch(switch(score/10score/10) ) case 10: printf case 10: printf(“A”);(“A”); case 9: printf case 9: printf(“B”);(“B”); case case 8: printf 8: printf(“C”);(“C”); case 7: printf case 7: printf(“E”);(“E”); case 6: printf case 6: printf(“F”);(“F”); default : printf default

19、: printf(“G”);(“G”); 注:应使用注:应使用break.break.switch(switch(score/10score/10) ) case 10: printf case 10: printf(“A”); (“A”); break;break; case 9: printf case 9: printf(“B”); (“B”); break;break; case 8: printf case 8: printf(“C”); (“C”); break;break; case 7: printf case 7: printf(“E”); (“E”); break;brea

20、k; case 6: printf case 6: printf(“F”); (“F”); break;break; default : printf default : printf(“G”);(“G”); 5 55 5 程序举例程序举例 ( (习题习题5.10) 5.10) 有有4 4个圆塔,圆心分别为:(个圆塔,圆心分别为:(2 2,2)2),(-2-2,2 2),(),(-2-2,-2-2),(),(2 2,-2-2),圆),圆半径为半径为1 1。这。这4 4个塔的高度为个塔的高度为10m,10m,塔以外无塔以外无建筑物。今输入任一点的坐标,求该点的建筑物。今输入任一点的坐标,求该点的

21、建筑高度(塔外的高度为建筑高度(塔外的高度为0 0)。)。算法设计:算法设计: 条件条件“在某一圆内在某一圆内” ” : “ “在圆在圆1 1内或在圆内或在圆2 2内或在圆内或在圆3 3内或在圆内或在圆4 4内内” 若设变量若设变量c1c1、c2c2、c3c3、c4c4分别代表是否在相分别代表是否在相应的圆内,则以上条件为:应的圆内,则以上条件为: c1|c2|c3|c4c1|c2|c3|c4 10 在某一圆内在某一圆内0 在圆外在圆外 (x,yx,y) h=h=c1=(x-2)c1=(x-2)2 2+(y-2)+(y-2)2 211c2=(x+2)c2=(x+2)2 2+(y-2)+(y-2

22、)2 211c3=(x+2)c3=(x+2)2 2+(y+2)+(y+2)2 211c4=(x-2)c4=(x-2)2 2+(y+2)+(y+2)2 211main()main() int int h,c1,c2,c3,c4;h,c1,c2,c3,c4; float x,y; float x,y; scanf scanf(“%f%f”,&x,&y);(“%f%f”,&x,&y); c1=(x-2) c1=(x-2)* *(x-2)+(y-2)(x-2)+(y-2)* *(y-2)=1;(y-2)=1; c2=(x+2) c2=(x+2)* *(x+2)+(y-2)(x+2)+(y-2)* *(y-2)=1;(y-2)=1; c3=(x+2) c3=(x+2)* *(x+2)+(y+2)(x+2)+(y+2)* *(y+2)=1;(y+2)=1; c4=(x-2) c4=(x-2)* *(x-2)+(y+2)(x-2)+(y+2)* *(y+2)=1;(y+2)=1; if(c1|c2|c3|c4) h=10;if(c1|c2|c3|c4) h=10; else h=0; else h=0; printf printf(“n h=%d”,h);(“n h=%d”,h);

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 大学
版权提示 | 免责声明

1,本文(c语言程序设计课件:选择结构.ppt)为本站会员(罗嗣辉)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|