《C语言程序设计》第4章选择结构程序设计ppt课件.ppt

上传人:飞****2 文档编号:82412766 上传时间:2023-03-25 格式:PPT 页数:33 大小:465KB
返回 下载 相关 举报
《C语言程序设计》第4章选择结构程序设计ppt课件.ppt_第1页
第1页 / 共33页
《C语言程序设计》第4章选择结构程序设计ppt课件.ppt_第2页
第2页 / 共33页
点击查看更多>>
资源描述

《《C语言程序设计》第4章选择结构程序设计ppt课件.ppt》由会员分享,可在线阅读,更多相关《《C语言程序设计》第4章选择结构程序设计ppt课件.ppt(33页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、第第4章章 选择结构程序设计选择结构程序设计目前我们已经讲了顺序结构程序设计,实际目前我们已经讲了顺序结构程序设计,实际生活中,若需要处理事情,往往会根据不同的情生活中,若需要处理事情,往往会根据不同的情况,采取相应不同的处理措施。在程序设计中,况,采取相应不同的处理措施。在程序设计中,这种算法表现为根据不同的判定条件,控制执行这种算法表现为根据不同的判定条件,控制执行不同的程序流程。选择结构是程序结构中很重要不同的程序流程。选择结构是程序结构中很重要的一种控制结构。在程序设计时,当需要进行选的一种控制结构。在程序设计时,当需要进行选择、判断和处理的时候,就要用到选择结构。择、判断和处理的时候

2、,就要用到选择结构。1要设计选择结构程序,要考虑两个方面的问题:要设计选择结构程序,要考虑两个方面的问题:一、在一、在C语言中如何来表示选择的条件语言中如何来表示选择的条件?二、在二、在C语言中实现选择结构用什么语句语言中实现选择结构用什么语句?在在C语言中表示条件,一般用关系表达式或逻语言中表示条件,一般用关系表达式或逻辑表达式,实现选择结构用辑表达式,实现选择结构用if语句或语句或switch语句。语句。我们今天要讲的主要内容如下:我们今天要讲的主要内容如下:4.if语句语句4.switch语句语句4.程序举例程序举例24.1.1 if语句的形式语句的形式1.单单if语句语句2.if-el

3、se语句语句3.if-else if-else语句语句4.1 if语句语句4.1.2 if语句的嵌套语句的嵌套31.单单if语句语句(1)(1)语句格式:语句格式:ifif(表达式表达式)语句语句(3)(3)执行过程:执行过程:表达式表达式语句语句if语句的下一语句语句的下一语句真真假假(2)(2)注意:注意:表达式即条件,一定要有表达式即条件,一定要有括号,可以是任意类型的表括号,可以是任意类型的表达式,值为真或假;达式,值为真或假;语句可以是单语句也可以语句可以是单语句也可以是语句块。是语句块。4w【例例4.1】求两个整数求两个整数a,b中较大者。中较大者。w(1)(1)算法分析:算法分析

4、:w 设三个变量设三个变量a,b,maxa,b,max。w 首先假设首先假设max=amax=a,w 然后判断然后判断a,b,a,b,若若a=ba=b则则max=bmax=b,w 最后输出最后输出maxmax。1.单单if语句语句5(2)(2)流程图描述:流程图描述:开始开始输入输入a,b结束结束输出输出maxmaxb max=b真真假假max=a1.单单if语句语句#include stdio.hvoid main()int a,b,max;printf(a,b=);scanf(%d,%d,&a,&b);max=a;if (maxb max=b真真假假 max=a2.if-else语句语句#

5、include stdio.hvoid main()int a,b,max;printf(a,b=);scanf(%d,%d,&a,&b);if(ab)max=a;else max=b;printf(max=%dn,max);93.if-else if-else语句语句(1)(1)语句格式:语句格式:if if(表达式表达式1)1)语句语句1 1 else if else if(表达式表达式2)2)语句语句2 2 else if else if(表达式表达式3)3)语句语句3 3 elseelse 语句语句n n(2)执行过程:执行过程:if-else if-else语句的下一语句语句的下一语

6、句表达式表达式1语句语句1真真假假表达式表达式2语句语句2真真假假表达式表达式n-1n-1语句语句n-1真真假假语句语句n10w【例例4.】根据成绩打印出等级。根据成绩打印出等级。w (0-59:60-69:70-79:C 80-89:B 90-100:A)算法分析:算法分析:设成绩为设成绩为score,假设取值在,假设取值在0-100之间,没之间,没有错误的输入。有错误的输入。60score0 E 70score60 D 80score70 C 90score80 B 100score90 A 3.if-else if-else语句语句111#include stdio.h2 void ma

7、in()3 /*E:0-59 D:60-69 C:70-79 B:80-89 A:90-100*/4 int score;5 printf(score=);6 scanf(%d,&score);7 if (score=0&score=60&score=70&score=80&score=0&score60)8 printf(grade is E);9 else if (score=79)10 printf(grade is C);11 else if (score=89)12 printf(grade is B);13 else if (score=90)8 printf(grade is A

8、);9 else if (score=80)10 printf(grade is B);11 else if (score=70)12 printf(grade is C);13 else if (score=60)14 printf(grade is D);15 else16 printf(grade is E);17 144.1.2 if语句的嵌套语句的嵌套1.1.嵌套的概念:嵌套的概念:在在ifif语句中又包含一个或多个语句中又包含一个或多个ifif语句。语句。内嵌内嵌if内嵌内嵌if2.2.嵌套的形式嵌套的形式:ifif语句可以内嵌在语句可以内嵌在ifif子句中,又可以内嵌在子句中,又

9、可以内嵌在elseelse子句中。子句中。例如:例如:if()if()语句语句1 else 语句语句2 else if()语句语句3 else 语句语句415一个完整的一个完整的if语句语句【例例4.4】猜数程序,和预定的数比较,并给出相应的提示。猜数程序,和预定的数比较,并给出相应的提示。4.1.2 if语句的嵌套语句的嵌套1#include stdio.h2 void main()3 int number=200;4 int i;5 scanf(%d,&i);6 if (inumber)7 printf(Its large!);8 else 9 if (ib)8 if (bc)9 max=

10、a;10 else11 if (ac)12 max=b;13 printf(max=%dn,max);14 一个完整的一个完整的if语句语句说明:说明:内嵌的内嵌的if语句既可以嵌套在语句既可以嵌套在if部分,也可以嵌套在部分,也可以嵌套在else部分。部分。4.1.2 if语句的嵌套语句的嵌套【例例4.5】求三个整数求三个整数a,b,c中的最大数。中的最大数。173.if 与与else的配对规则:的配对规则:else总是与它上面最近的总是与它上面最近的if配对。配对。特别注意:特别注意:(1)(1)要采用正确的缩进格式;要采用正确的缩进格式;(2)(2)不易弄清的地方要加上不易弄清的地方要加

11、上 。例例4.5:7 if (ab)8 if (bc)9 max=a;10 else11 if (ac)12 max=b;4.1.2 if语句的嵌套语句的嵌套例例4.4:6 if (inumber)7 printf(Its large!);8 else 9 if (ib&bc)8 max=a;9 else if (bc&ba)10 max=b;11 else12 max=c;13 printf(max=%dn,max);14 用用if-else if-else语句改写例语句改写例4.5。20比较比较方法一:方法一:ifelse if语句语句不仅要对多个条件进行并列测试,而且程序不仅要对多个条件

12、进行并列测试,而且程序描述不够简洁。描述不够简洁。方法二:方法二:if语句的嵌套语句的嵌套当当分分支支较较多多时时,嵌嵌套套的的if语语句句层层数数多多,程程序序冗长而且可读性降低。冗长而且可读性降低。初初学学者者要要尽尽量量避避免免使使用用if语语句句的的嵌嵌套套来来解解决决多分支问题。多分支问题。214.2 switch语句语句w1.1.语句格式:语句格式:wswitch switch(表达式表达式)w casecase 常量表达式常量表达式1:1:语句语句1 1w casecase 常量表达式常量表达式2:2:语句语句2 2w w casecase 常量表达式常量表达式n:n:语句语句n

13、 nw defaultdefault:语句语句n+1n+1w 2.执行过程:执行过程:计算表达式计算表达式 从上至下寻找与表达从上至下寻找与表达式的值相匹配的式的值相匹配的casecase 执行相应的执行相应的casecase语句语句 不再判断,顺序执行不再判断,顺序执行下面的语句下面的语句 22wswitch switch(表达式表达式)w casecase 常量表达式常量表达式1:1:语句语句1 1w case case 常量表达式常量表达式2:2:语句语句2 2w w casecase 常量表达式常量表达式n:n:语句语句n nw defaultdefault:语句语句n+1n+1 w

14、w 注意:注意:w 1.可以是整型或字可以是整型或字符型表达式;符型表达式;w 2.case后面必须是常量表达后面必须是常量表达式,不能包含变量;式,不能包含变量;w 3.每个常量表达式的值应互每个常量表达式的值应互不相同;不相同;w 4.case语句先后顺序随意;语句先后顺序随意;w 5.若从上至下没有找到与表若从上至下没有找到与表达式的值相匹配的达式的值相匹配的case,含有,含有default子句时,执行语句子句时,执行语句n+1。4.2 switch语句语句23w【例例4.6】输入一个星期数字,输出其对应的英文单词输入一个星期数字,输出其对应的英文单词。4.2 switch语句语句1#

15、include stdio.h2 void main()3 int a;4 printf(please input a week number:);5 scanf(%d,&a);6 switch(a)7 case 1:printf(Mondayn);8 case 2:printf(Tuesdayn);9 case 3:printf(Wednesdayn);10 case 4:printf(Thursdayn);11 case 5:printf(Fridayn);12 case 6:printf(Saturdayn);13 case 7:printf(Sundayn);14 default:pr

16、intf(Error!n);15 16 24注意使用注意使用break语句。程序修改如下:语句。程序修改如下:4.2 switch语句语句1#include stdio.h2 void main()3 int a;4 printf(please input a week number:);5 scanf(%d,&a);6 switch(a)7 case 1:printf(Mondayn);break;8 case 2:printf(Tuesdayn);break;9 case 3:printf(Wednesdayn);break;10 case 4:printf(Thursdayn);brea

17、k;11 case 5:printf(Fridayn);break;12 case 6:printf(Saturdayn);break;13 case 7:printf(Sundayn);break;14 default:printf(Error!n);15 16 25【例例4.7】输入任一平年的月份,输出该月份对应的输入任一平年的月份,输出该月份对应的天数。天数。算法分析:算法分析:设月份为设月份为month,天数为,天数为day month=1,3,5,7,8,10,12 day=31 month=4,6,9,11 day=30 month=2 day=28w注意:注意:当多个常量表达式都

18、执行同一组语句时,可当多个常量表达式都执行同一组语句时,可将它们集中写在一起。将它们集中写在一起。问题:怎样使得问题:怎样使得 case语句数目较少?语句数目较少?4.2 switch语句语句#include stdio.h void main()int month,day;printf(please input month:);scanf(%d,&month);switch(month)case 4:case 6:case 9:case 11:day=30;break;case 2 :day=28;break;default:day=31;printf(day=%d,day);26if-el

19、se if-else语句与语句与switch语句的区别语句的区别if-else if-else 语句:语句:用于多条件并列测试,从中取一的情形;用于多条件并列测试,从中取一的情形;switch语句:语句:用于单条件测试,从其多种结果中取一的情形。用于单条件测试,从其多种结果中取一的情形。1#include /*例例4.7*/2 main()3 int month,day;4 printf(please input month:);5 scanf(%d,&month);6 switch(month)7 case 4:8 case 6:9 case 9:10 case 11:day=30;brea

20、k;11 case 2 :day=28;break;12 default:day=31;13 14 printf(day=%d,day);15 1#include stdio.h /*例例4.3*/2 void main()3 int score;5 printf(score=);6 scanf(%d,&score);7 if (score=0&score=60&score=70&score=80&scoreb)8 max=a;min=b;9 else10 max=b;min=a;11 if(maxc)15 min=c;16 printf(max=%dnmin=%d,max,min);17 2

21、8【例例4.9】计计算器程序。用算器程序。用户输户输入运算数和四入运算数和四则则运算符,运算符,输输出出计计算算结结果。果。4.3 程序举例程序举例1#include stdio.h2 void main()3 4 float a,b;5 char c;6 printf(请输入运算数和四则运算符如请输入运算数和四则运算符如a+(-,*,/)b:);7 scanf(%f%c%f,&a,&c,&b);8 switch(c)9 10 case+:printf(%fn,a+b);break;11 case-:printf(%fn,a-b);break;12 case*:printf(%fn,a*b);

22、break;13 case/:printf(%fn,a/b);break;14 default:printf(Input error!n);15 16 29【例例4.10】求一元二次方程求一元二次方程ax2+bx+c=0的根。的根。4.3 程序举例程序举例分析:分析:一元二次方程的根有下列情况:一元二次方程的根有下列情况:当当a=0a=0,b=0b=0时,方程无解;时,方程无解;当当a=0a=0,b0b0时,方程只有一个实根时,方程只有一个实根-c/b-c/b;当当a0a0时,方程的根为时,方程的根为 x=x=其中,当其中,当b b2 24ac04ac0时有两个实根;时有两个实根;当当b b2

23、 24ac4ac0 0时有两个虚根。时有两个虚根。304.3 程序举例程序举例我我们们把上述描述用流程把上述描述用流程图图表示,表示,逻辑逻辑关系更关系更为为清晰。清晰。314.3 程序举例程序举例#include stdio.h#include math.h void main()float a,b,c,disc,x1,x2,realpart,imagpart;printf(a,b,c=);scanf(%f,%f,%f,&a,&b,&c);if(fabs(a)=1e-6&fabs(b)=1e-6)printf(方程无解方程无解!n);else if(fabs(a)1e-6)printf(方程

24、有单根是方程有单根是%8.4fn,-c/b);else disc=b*b-4*a*c;if(fabs(disc)1e-6)x1=(-b+sqrt(disc)/(2*a);x2=(-b-sqrt(disc)/(2*a);printf(方程有两个实根方程有两个实根!n);printf(x1=%8.4fn,x1);printf(x2=%8.4fn,x2);else realpart=-b/(2*a);imagpart=sqrt(-disc)/(2*a);printf(方程有两个虚根方程有两个虚根!n);printf(x1=%8.4f+%8.4fin,realpart,imagpart);printf

25、(x2=%8.4f-%8.4fin,realpart,imagpart);324.3 程序举例程序举例注意:注意:(1)disc代代表表b24ac,realpart代代表表实实部部,imagpart代表虚部,以增加可读性。代表虚部,以增加可读性。(2)由由于于a,b,disc(即即b24ac)为为实实数数,而而实实数数在在计计算算和和存存储储时时会会有有一一些些微微小小的的误误差差,因因此此不不能能直直接接进进行行如如下下判判断断:if(a=0.0)。所所以以采采取取的的办办法法是是判判别别a的的绝绝对对值值fabs(a)是是否否小小于于一一个个很很小小的的数数(如如10-6),如果小于此数,就认为),如果小于此数,就认为a=0。33

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

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁