选择结构程序结构设计课件

上传人:枫** 文档编号:588081844 上传时间:2024-09-07 格式:PPT 页数:36 大小:553KB
返回 下载 相关 举报
选择结构程序结构设计课件_第1页
第1页 / 共36页
选择结构程序结构设计课件_第2页
第2页 / 共36页
选择结构程序结构设计课件_第3页
第3页 / 共36页
选择结构程序结构设计课件_第4页
第4页 / 共36页
选择结构程序结构设计课件_第5页
第5页 / 共36页
点击查看更多>>
资源描述

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

1、第第 4 4 章章选择结构程序设计选择结构程序设计1第四章第四章 选择结构程序设计选择结构程序设计一、关系运算符和关系表达式一、关系运算符和关系表达式二、逻辑运算符和逻辑表达式二、逻辑运算符和逻辑表达式三、使用三、使用ifif语句实现的选择结构语句实现的选择结构四、条件运算符和条件表达式四、条件运算符和条件表达式 五、五、switchswitch语句语句 六、选择结构程序举例六、选择结构程序举例主要内容主要内容2关系运算符关系运算符 = = != (6种种)第四章第四章 选择结构程序设计选择结构程序设计优先级优先级赋值赋值 关系关系( 后后2前前4 ) 3一、关系运算符和关系表达式一、关系运算

2、符和关系表达式3219举例举例已知已知a=5,b=4,c=3,d=7求下列表达式的值求下列表达式的值a+b=c*dabca!=bbc10a!=bc01算术运算符的优先级高于算术运算符的优先级高于关系运算符关系运算符不能用于判断不能用于判断b的值是否的值是否在在a与与c之间之间“”运算符的优先级高于运算符的优先级高于“!=”4逻辑运算符逻辑运算符 !(逻辑非)(逻辑非) &(逻辑与)(逻辑与) |(逻辑或)(逻辑或)运算规则运算规则优先次序优先次序赋值赋值|&关系关系算术算术3) | b 0双目双目单目单目二、逻辑运算符和逻辑表达式二、逻辑运算符和逻辑表达式5第四章第四章 选择结构程序设计选择结

3、构程序设计二、逻辑运算符和逻辑表达式二、逻辑运算符和逻辑表达式第五章第五章 选择结构程序设计选择结构程序设计举例举例53 & 8 3) & (8 3 | (a=6)1逻辑运算符两侧的运算对象不但可逻辑运算符两侧的运算对象不但可以是和,也可以是或非的以是和,也可以是或非的整数,也可是任何类型的数据。系整数,也可是任何类型的数据。系统判定标准:为假;非为真。统判定标准:为假;非为真。当当“与运算与运算”的左的左侧为侧为0,或者,或者“或或运算运算”的左侧为的左侧为1时,右侧的表达式时,右侧的表达式不再进行计算。不再进行计算。短路短路现象现象#includevoidmain()inta=1,b=1;

4、if(a1&(b=5)a=4;printf(“%d,%d”,a,b);1,16选择结构选择结构单分支单分支双分支双分支if (表达式表达式) 语句语句多分支多分支if (表达式表达式) 语句语句else 语句语句if (表达式表达式1) 语句语句else if (表达式表达式) 语句语句else 语句语句nif 语句的嵌套语句的嵌套switch语句语句第四章第四章 选择结构程序设计选择结构程序设计选择结构的分类选择结构的分类7格式格式流程图流程图第四章第四章 选择结构程序设计选择结构程序设计if (表达式表达式) 语句语句三、三、if语句实现选择结构语句实现选择结构单分支单分支不成立(假、0)

5、表达式语句块成立(真、1)if (xy) printf(“%d”,x);举例举例8例例4.5第四章第四章 选择结构程序设计选择结构程序设计#includestdio.hintmain()intnum1,num2,max;printf(inputtwonumbers:n);scanf(%d%d,&num1,&num2);max=num1;if(maxnum2)max=num2;printf(max=%dn,max);return0;5641 max=56三、三、if语句实现选择结构语句实现选择结构单分支单分支输入两个整数,输出其中较大的数。输入两个整数,输出其中较大的数。9例例4.6第四章第四章

6、 选择结构程序设计选择结构程序设计#include int main() float a,b,t=0; scanf(“%f,%f”,&a,&b); if (ab) t=a; a=b; b=t; printf(“%5.2f,%5.2fn”,a,b); return 0;3,4 3.00, 4.00if (ab) t=a; a=b; b=t;if (ab) t=a;a=b; b=t;3,4 4.00, 0.00当某些语句作为一个整体出当某些语句作为一个整体出现的时候,必须是复合语句现的时候,必须是复合语句的形式。的形式。三、三、if语句实现选择结构语句实现选择结构单分支单分支输入两个实数,按由小到

7、大的数序输出它们。输入两个实数,按由小到大的数序输出它们。10格式格式if (xy) printf(“%d”,x);else printf(“%d”,y);第四章第四章 选择结构程序设计选择结构程序设计if (表达式表达式) 语句语句else 语句语句三、三、if语句实现选择结构语句实现选择结构双分支双分支举例举例流程图流程图11第四章第四章 选择结构程序设计选择结构程序设计#include int main() float a,b,c,p,s; scanf(“%f,%f,%f”,&a,&b,&c); if (a+bc & a+cb & b+ca) p=(a+b+c)/2; s=sqrt(p*

8、(p-a)*(p-b)*(p-c); printf(“s=%7.2fn”,s); else printf(“Not a triangle!n”); return 0;输入三角形的三边,求三角形的面积。输入三角形的三边,求三角形的面积。3,4,5 s= 6.003,4,8 Not a triangle!三、三、if语句实现选择结构语句实现选择结构双分支双分支例例4.9输入输入a,b,c是三角形吗是三角形吗?p(a+b+c)/2ssqrt(p*(p-a)*(p-b)*(p-c)输出输出s输出输出“Notatriangle!”12编程实现如下分段函数编程实现如下分段函数,输出结果保留输出结果保留2位

9、小数。位小数。y=0x0练习练习1#include#includeintmain()floatx,y;scanf(“%f”,&x);if(x=0)y=0;elsey=sqrt(x);printf(“x=%.2f,y=%.2fn”,x,y);return0;这这4行包含行包含几条语句?几条语句?if(x0)y=sqrt(x);13编程实现分段函数。编程实现分段函数。y=0x01.0/x0202x+110x20例例4.11输入输入xx=0是是否否y=0否否0x10是是y=1.0/xx20是是否否y=5*x-10x&x=10x=10y=5*x-1if(x=0)y=0;elseif(x=10)y=1.

10、0/x;elseif(x=20)y=y=2*x+1;elsey=5*x-1;输出输出y14第四章第四章 选择结构程序设计选择结构程序设计if (表达式表达式1) 语句组语句组else if (表达式表达式) 语句组语句组else if (表达式表达式n) 语句组语句组nelse 语句组语句组n+1三、三、if语句实现选择结构语句实现选择结构多分支多分支(1)ifelseif形式形式15#includestdio.hintmain()floatx,y;scanf(%f,&x);if(x=0)y=0.0;elseif(x=10)y=1.0/x;elseif(x=20)y=y=2*x+1;elsey

11、=5*x-1;printf(x=%.2f,y=%.2fn,x,y);return0;第一次运行:第一次运行:5 x=5.00,y=0.2015 x=15.00,y=31.00第二次运行:第二次运行:21.67 x=21.67, y=107.35第三次运行:第三次运行:y=0 x01.0/x 0202x+1 10x20程序如下:程序如下:16编程实现分段函数编程实现分段函数换一种判断顺序换一种判断顺序y=0x01.0/x0202x+110x20例例4.11输入输入xx=10是是否否y=1.0/x否否x=0是是y=0x=20是是否否y=2*x+1y=5*x-1if(x=10)if(x=0)y=0;

12、elsey=1.0/x;elseif(x=20)y=2*x+1;elsey=5*x-1;输出输出yif(x=10)if(x=0)y=0;elsey=1.0/x;elseif(xb)d=a;else if (cb) d=c; else d=b;if (ab)if (cb) d=c;else d=b ;if (ab)if (cb) d=c;else d=b ;if (ab) if (cb) d=c; else d=b;else d=a;d=5d=3d=0d=419使用使用if语句中应注意的问题语句中应注意的问题在在if关键字之后的括弧内关键字之后的括弧内为表达式,该表达式通常为表达式,该表达式通常

13、是逻辑表达式或关系表达是逻辑表达式或关系表达式,但也可以是其它式,但也可以是其它任何任何合法的合法的C表达式表达式条件判断表达式必须用条件判断表达式必须用括括弧弧括起来,后面括起来,后面没有分号没有分号。但在语句之后必须加分号。但在语句之后必须加分号。如果希望在满足如果希望在满足/不满足条不满足条件时执行一组件时执行一组(多个多个)语句,语句,则必须把这一组语句用则必须把这一组语句用括起来组成一个括起来组成一个复合语句复合语句#include int main() float a,b,c,p,s; scanf(“%f,%f,%f”,&a,&b,&c); if (a+bc & a+cb & b+

14、ca) p=(a+b+c)/2; s=sqrt(p*(p-a)*(p-b)*(p-c); printf(“s=%7.2fn”,s); else printf(“Not a triangle!n”); return 0;20条件运算符条件运算符条件表达式条件表达式举例举例if (ab) max=a;else max=b;第四章第四章 选择结构程序设计选择结构程序设计表达式?表达式:表达式表达式?表达式:表达式max= (ab)? a : b;条件运算符条件运算符的使用条件的使用条件若若if语句中,在表达式为语句中,在表达式为“真真”和和“假假”时,都只执行时,都只执行一个赋值语句给同一个变量赋值

15、,则可以用简单的条一个赋值语句给同一个变量赋值,则可以用简单的条件运算符来处理。件运算符来处理。取值取值表达式表达式1为真,则取值为表达式为真,则取值为表达式2的值;的值;表达式表达式1为假,则取值为表达式为假,则取值为表达式3的值。的值。四、条件运算符和条件表达式四、条件运算符和条件表达式右结合方向右结合方向21使用条件表达式求两个数的较大值。(自己看)使用条件表达式求两个数的较大值。(自己看)#includestdio.hintmain()floatnum1,num2,max=0;scanf(%f,%f,&num1,&num2);max=(num1num2)?num1:num2;print

16、f(%5.2fn,max);return0;例例4.14第一次运行:第一次运行:3.2,4 4.00第二次运行:第二次运行:4,3.2 4.0022思考思考一个简单的菜单选择程序。一个简单的菜单选择程序。示例示例1示例示例2if-elseswitch23开关语句开关语句 第四章第四章 选择结构程序设计选择结构程序设计switch (表达式表达式) case 常量表达式常量表达式1:语句组:语句组1 case 常量表达式常量表达式2:语句组:语句组2 case 常量表达式常量表达式3:语句组:语句组3 case 常量表达式常量表达式n:语句组:语句组n default: 语句组语句组n+1五、五

17、、switch语句实现多分支语句实现多分支break;执行过程执行过程定位入口、依次执行、遇定位入口、依次执行、遇break跳出跳出整型整型或或字符型字符型24例例4.17#include void main() char grade; printf(“请输入考试等级请输入考试等级AD:”); scanf(“%c”,&grade) ; switch (grade) case A: printf(“80100n”); case B: printf(“7079n”); case C: printf(“6069n”); case D: printf(“60n”); default: printf(“

18、errorn”); B 根据输入的考试成绩等级打印出百分制分数段。根据输入的考试成绩等级打印出百分制分数段。A:80100B:7079C:6069D:60说明:应在每一个说明:应在每一个printf后加后加break语句语句第四章第四章 选择结构程序设计选择结构程序设计7079606960Error25#include void main() char grade; printf(“请输入考试等级请输入考试等级AD:”); scanf(“%c”,&grade) switch (grade) case A: printf(“80100n”);break; case B: printf(“7079

19、n”);break; case C: printf(“6069n”);break; case D: printf(“60n”);break; default: printf(“errorn”); B 7079最后一行的最后一行的break可以省略。可以省略。第四章第四章 选择结构程序设计选择结构程序设计例例4.17根据输入的考试成绩等级打印出百分制分数段。根据输入的考试成绩等级打印出百分制分数段。A:80100B:7079C:6069D:6026思考思考(例例4.18)#include void main() int score; printf(“请输入考试成绩请输入考试成绩0100:”);

20、scanf(“%d”,&score); if(score100) printf(“请输入请输入0100之间的整数之间的整数n”); else if(score=80) printf(“An”); else if(score=70) printf(“Bn”); else if(score=60) printf(“Cn”); else printf(“Dn”);根据输入的考试成绩(百分制整数)打印出等级水平。根据输入的考试成绩(百分制整数)打印出等级水平。(使用(使用ifelse语句实现)语句实现)A:80100B:7079C:6069D:60思考:使用思考:使用switch语句语句如何实现?如何

21、实现?程序程序第四章第四章 选择结构程序设计选择结构程序设计28#include void main() int score; printf(“请输入考试成绩请输入考试成绩0100:”); scanf(“%d”,&score); switch (score) case 80100: printf(“An”);break; case 7079: printf(“Bn”);break; case 6069: printf(“Cn”);break; case 60: printf(“Dn”);break; default: printf(“请输入请输入0100之间的整数之间的整数n”); 根据输入的

22、考试成绩(百分制整数)打印出等级水平。根据输入的考试成绩(百分制整数)打印出等级水平。(使用(使用switch语句实现)语句实现)A:80100B:7079C:6069D:60思考:本程序思考:本程序有问题么?有问题么?程序程序思考思考(例例4.18)29#include void main() int score; printf(“请输入考试成绩请输入考试成绩0100:”); scanf(“%d”,&score); switch (score) case 0: printf(“Dn”);break; case 1: printf(“Dn”);break; case 2: printf(“Dn

23、”);break; case 3: printf(“Dn”);break; case 100:printf(“An”);break; default: printf(“请输入请输入0100之间的整数之间的整数n”); 太麻烦了太麻烦了有没有简单的有没有简单的办法呢?办法呢?改进改进程序程序1101种情况种情况思考思考(例例4.18)根据输入的考试成绩(百分制整数)打印出等级水平。根据输入的考试成绩(百分制整数)打印出等级水平。(使用(使用switch语句实现)语句实现)A:80100B:7079C:6069D:6030#include void main() int score, p; pri

24、ntf(“请输入考试成绩请输入考试成绩0100:”); scanf(“%c”,&score); p=score/10; switch (p) case 0: printf(“Dn”);break; case 1: printf(“Dn”);break; case 2: printf(“Dn”);break; case 3: printf(“Dn”);break; case 4: printf(“Dn”);break; case 5: printf(“Dn”);break; case 6: printf(“Cn”);break; case 7:printf(“Bn”);break; case 8

25、:printf(“An”);break; case 9:printf(“An”);break; case 10:printf(“An”);break; default: printf(“请输入请输入0100之间的整数之间的整数n”); 改进改进程序程序211种情况种情况思考:不同思考:不同case值时执行相同的值时执行相同的操作,是否可以操作,是否可以合并?合并?第四章第四章 选择结构程序设计选择结构程序设计31#include void main() int score, p; printf(“请输入考试成绩请输入考试成绩0100:”); scanf(“%c”,&score); p=scor

26、e/10; switch (p) case 0: case 1: case 2: case 3: case 4: case 5: printf(“Dn”);break; case 6: printf(“Cn”);break; case 7:printf(“Bn”);break; case 8: case 9: case 10:printf(“An”);break; default: printf(“请输入请输入0100之间的整数之间的整数n”); 改进改进程序程序3注意:多个注意:多个case共共用一组执行语句时,用一组执行语句时,共用的执行语句写共用的执行语句写在在最后一个最后一个case的

27、后面。的后面。第四章第四章 选择结构程序设计选择结构程序设计32第四章第四章 选择结构程序设计选择结构程序设计例例4.10求方程求方程ax2+bx+c=0的解。的解。(自学自学)真真a=0真真假假输出输出“该该方程不是方程不是二次方程二次方程”b2-4ac=0真真输出两个实根:输出两个实根:x1,x2输出两输出两个相等个相等实根实根:假假b2-4ac0假假计算复根的实部和虚部:计算复根的实部和虚部:实部实部虚部虚部输出两个复根:输出两个复根:p+qi,p-qi六、选择结构程序设计举例六、选择结构程序设计举例33第四章第四章 选择结构程序设计选择结构程序设计#include#includevoi

28、dmain()floata,b,c,disc,x1,x2,p,q;scanf(%f%f%f,&a,&b,&c);if(a=0)printf(该方程不是二次方程该方程不是二次方程);elsedisc=b*b-4*a*c;if(disc=0)printf(“该方程有两个相等的实根该方程有两个相等的实根:%8.4fn,-b/(2*a);elseif(disc0)x1=(-b+sqrt(disc)/(2*a);x2=(-b-sqrt(disc)/(2*a);printf(“该方程有两个不等的实根该方程有两个不等的实根:%8.4fand%8.4fn,x1,x2);elsep=-b/(2*a);q=sqr

29、t(-disc)/(2*a);printf(“该方程有两个复根该方程有两个复根:n);printf(%8.4f+%8.4fin,p,q);printf(%8.4f+%8.4fin,p,q);341该方程有两个不等的实根该方程有两个不等的实根:-0.3333and-1.0000431该方程有两个复根该方程有两个复根:-0.3750+0.3307i-0.3750+0.3307i例例4.10求方程求方程ax2+bx+c=0的解。的解。(各种形式各种形式)第一次运行:第一次运行:第二次运行:第二次运行:34第四章第四章 选择结构程序设计选择结构程序设计例例4.13输入三角形的三边,判断能否构成三角形。

30、如果能,说明所组成的三角形是输入三角形的三边,判断能否构成三角形。如果能,说明所组成的三角形是等腰、等边、直角、等腰直角还是一般三角形。等腰、等边、直角、等腰直角还是一般三角形。(假定边长均为整数假定边长均为整数)#includevoidmain()inta,b,c;intf1=0,f2=0;printf(“输入三角形的三边:输入三角形的三边:”);scanf(“%d%d%d”,&a,&b,&c);if(a+bc&a+cb&b+ca)elseprintf(“不构成三角形!不构成三角形!”);输入三角形的三边输入三角形的三边a,b,c能构成三角形吗?能构成三角形吗?是是否否输出输出“不不构成构成

31、三角三角形形”输出输出“等等边三边三角形角形”否否是等腰三角形吗?是等腰三角形吗?是是f1=1否否f1=1&f2=1?是是输出输出“等腰直等腰直角三角角三角形形”否否是直角三角形吗?是直角三角形吗?是是f2=1f1=1是是否否输出输出“等腰三等腰三角形角形”f2=1是是否否输出输出“直角三直角三角形角形”输出输出“一般三一般三角形角形”判断的顺序是否判断的顺序是否可以任意调整?可以任意调整?是等边三角形吗?是等边三角形吗?是是否否if(a=b&a=c)printf(“等边三角形!等边三角形!”););elseif(a=b|b=c|a=c)f1=1;if(a*a+b*b=c*c|a*a+c*c=b*b|b*b+c*c=a*a)f2=1;if(f1=1&f2=1)printf(“等腰直角三角形等腰直角三角形”);elseif(f1=1)printf(“等腰三角形等腰三角形”););elseif(f2=1)printf(“直角三角形直角三角形”););elseprintf(“一般三角形一般三角形”););35作作 业业P87习题习题4:一、二、三(写本上):一、二、三(写本上)实验二实验二选择结构程序设计选择结构程序设计实验指导实验指导P140-3.4.6.8.9选做题选做题见见课程学习网站课程学习网站预习预习程序程序要求必须先写好,上要求必须先写好,上机课先检查机课先检查。36

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 工作计划

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