第3章 选择程序设计2017年3月(第7周).ppt

上传人:安*** 文档编号:27075746 上传时间:2022-07-21 格式:PPT 页数:38 大小:976KB
返回 下载 相关 举报
第3章 选择程序设计2017年3月(第7周).ppt_第1页
第1页 / 共38页
第3章 选择程序设计2017年3月(第7周).ppt_第2页
第2页 / 共38页
点击查看更多>>
资源描述

《第3章 选择程序设计2017年3月(第7周).ppt》由会员分享,可在线阅读,更多相关《第3章 选择程序设计2017年3月(第7周).ppt(38页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、12022-7-16第第3 3章章 选择程序设计选择程序设计主要内容主要内容n3.1 算法算法n3.2 关系运算符和关系表达式关系运算符和关系表达式n3.3 逻辑运算符和逻辑表达式逻辑运算符和逻辑表达式n3.4 if语句语句n3.5 条件运算符和条件运算表达式条件运算符和条件运算表达式n3.6 switch语句语句n3.7 选择程序结构选择程序结构22022-7-163.1 算法算法n 定义:定义: 解决问题的方法和步骤解决问题的方法和步骤n 分类:分类:(1 1)数值运算算法:)数值运算算法: 求解数值求解数值(2 2)非数值运算算法:事务管理领域)非数值运算算法:事务管理领域n 特性:特性

2、:(1 1)有穷性)有穷性(2 2)确定性)确定性(3 3)有零个或多个输入)有零个或多个输入(4 4)有一个或多个输出)有一个或多个输出(5 5)有效性)有效性n表示形式:表示形式:自然语言、自然语言、流程图流程图、N-SN-S盒图、盒图、伪代码伪代码32022-7-16用用流程图流程图表示算法表示算法n例例3.2 3.2 求求5! 5! 参考参考P48 P48 1t1t2i2it t* *ititi+1ii+1ii5i5输出输出t t开始开始结束结束y yn n42022-7-16用用伪代码伪代码表示算法表示算法n例例3.3 3.3 输入三个数,输出其中最大的数。输入三个数,输出其中最大的

3、数。参考参考P49 P49 输入输入a, b, c;if (a = b)max=a;elsemax=b;if (max = c)输出输出max;else输出输出c;52022-7-163.2 关系运算符和关系表达式关系运算符和关系表达式n3.2.1 关系运算符关系运算符n种类:种类: = = !=n优先级优先级高高 10 10 9 9 低低n结合性:结合性: 自左向右自左向右n注意注意:C C语言中语言中“=”=”表示判定相等,表示判定相等, 而而“=”=”表示赋值。表示赋值。例例 ab!=c / (ab)!=c a=bc / a=(bc / a=(bc) ca+b / c(a+b)62022

4、-7-16n3.2.2 关系表达式关系表达式n定义:定义: 用关系运算符将两个表达式前后连起来的式子用关系运算符将两个表达式前后连起来的式子n格式:格式: 表达式表达式 关系运算符关系运算符 表达式表达式n说明:说明: 关系表达式的值只有两个关系表达式的值只有两个 如果关系表达式如果关系表达式 成立成立, 则关系表达式则关系表达式为为“真真”(用(用 1 1 表示)表示) 如果关系表达式如果关系表达式不成立不成立,则关系表达式,则关系表达式为为“假假”(用(用 0 0 表示)表示)n例:例: int a=3, b=2, c=1, d; ab (ab)=c b+cb /真,关系表达式值真,关系表

5、达式值 1 1/真,关系表达式值真,关系表达式值 1 1/假,关系表达式值假,关系表达式值 0 0/ / d=1 ,赋值表达式值,赋值表达式值 1 12. 关系表达式当成整数关系表达式当成整数 0 0 或者或者 1 1 参与运算参与运算例例 int i=1, j=7,a; a=i+(j%4!=0); / 则则a= 21.字符数据的比较是按照字符数据的比较是按照ASCIIASCII码值参与运算的,参考码值参与运算的,参考P312P312例例 a0 A100/ 结果为结果为 1/ 结果为结果为 0n关系运算注意点:关系运算注意点:4.应避免对实数作相等或不等的判断应避免对实数作相等或不等的判断例例

6、 1.0/3.0*3.0=1.0 / 结果为结果为可改写为:可改写为:fabs(1.0/3.0*3.0-1.0)1e-603.关系表达式与数学表达式的区别关系表达式与数学表达式的区别例例 为了表示为了表示 x 在在 1 10 之间之间 1x10 / 结果为结果为 可改写为:可改写为:1x & x10 永远为永远为 1 82022-7-163.3 逻辑运算符和逻辑表达式逻辑运算符和逻辑表达式n3.3.1 逻辑运算符逻辑运算符n种类:种类: ! & |n优先级:优先级: 14 5 4n逻辑运算逻辑运算真值表真值表( ( 即运算规则即运算规则) )ab!a!ba&ba|b真真假假真真假假假假假假真真

7、真真假假假假真真真真假假假假真真真真真真假假假假假假真真假假真真真真C C语言中语言中, ,运算量运算量: 0 : 0 当做当做“假假”(也就是(也就是0 0)参加运算)参加运算 非非0 0 当做当做“真真”(也就是(也就是1 1)参加运算)参加运算 运算结果运算结果: : 用用 0 0 表示表示 结果结果“假假” ” 用用 1 1 表示表示 结果结果“真真”注注意意92022-7-16n结合性结合性! : :从右向左从右向左& : :从左向右从左向右| : :从左向右从左向右例例 a=x & xb&xy a=b|x=y !a|ab/ (a=x) & (xb)&(xy)/ (a=b)|(x=y

8、)/ (!a)|(ab)例例 a=4;b=5; !a a&b a|b !a|b 4&0|2 53&2|83)&2|(8b)&(n=cd) / / 结果结果 m=0,n=1122022-7-16n例例3.6 分析下面程序的输出结果。参考分析下面程序的输出结果。参考P53P53 132022-7-163.4 if 语句语句n3.4.1 if 语句的三种形式语句的三种形式形式形式1、if 单分支结构单分支结构n格式:格式: if (表达式表达式) 语句;语句;n执行过程:如果表达式的值为真,则执行其后的语句,执行过程:如果表达式的值为真,则执行其后的语句,否则不执行该语句否则不执行该语句。表达式表达

9、式语句语句真真假假例例: if (xy) printf(“%d”,x);142022-7-16形式形式2、 if-else 双分支双分支结构结构n格式:格式:if (表达式表达式) 语句语句1; else 语句语句2;n执行过程:如果表达式的值为真,则执行语句执行过程:如果表达式的值为真,则执行语句1, 否则执行语句否则执行语句2。 语句语句1表达表达式式语句语句2真真假假例例:if (xy) max=x; else max=y;152022-7-16形式形式3、if-else-if多分支形式多分支形式n格式:格式:if ( (表达式表达式1) ) 语句语句1; else if (表达式表达式

10、2) 语句语句2; ; else if ( (表达式表达式3) ) 语句语句3; ; else if ( (表达式表达式m) ) 语句语句m; ; else 语句语句n;n执行过程:依次判断表达式的值,当出现某个值为真时,则执行其对执行过程:依次判断表达式的值,当出现某个值为真时,则执行其对应的语句。然后跳到整个应的语句。然后跳到整个if语句之外继续执行程序。如果所有的表达语句之外继续执行程序。如果所有的表达式均为假,则执行语句式均为假,则执行语句n。然后继续执行后续程序。然后继续执行后续程序。表达表达式式1 1语句语句1 1真真假假表达表达式式3 3语句语句n n语句语句3 3语句语句2 2

11、真真真真假假假假表达表达式式2 2例:例: if (salary10000) index=0.4; else if (salary8000) index=0.3; else if (salary6000) index=0.2; else if (salary4000) index=0.1; else index=0; 例:例:if(a=b&x=y) printf(“a=b,x=y”); if(3) printf(“OK”); if(a) printf(“%d”,a);1. if后面的表达式类型任意后面的表达式类型任意2. 语句可以是复合语句(语句可以是复合语句(用一对用一对括起来括起来)例:例

12、: 考虑下面程序的输出结果考虑下面程序的输出结果: : #include int main() int x,y; scanf(“%d%d”,&x,&y); if(xy) x=y; y=x; else x+; y+; printf(“%d,%dn”,x,y); return 0;Compile Error!说明:说明:n一般形式:一般形式:if (表达式表达式1) if (表达式表达式2) 语句语句1 else 语句语句2else if(表达式表达式3) 语句语句3 else 语句语句4内嵌内嵌if内嵌内嵌ifif (表达式表达式1) if (表达式表达式2) 语句语句1 else 语句语句2内

13、嵌内嵌ifif (表达式表达式1) if (表达式表达式2) 语句语句1else 语句语句3 内嵌内嵌ifif (表达式表达式1) 语句语句1else if(表达式表达式r3) 语句语句3 else 语句语句4内嵌内嵌if3. if语句嵌套语句嵌套#include int main( ) int x,y; printf(Enter integer x,y:); scanf(%d%d,&x,&y); if(x!=y) if(xy) printf(XYn); else printf(XYn); else printf(X=Yn); return 0;三种运行:三种运行: Enter integer

14、 x,y:12,23 XY Enter integer x,y:12,12 X=Y例例 输入两数并判断其大小关系输入两数并判断其大小关系缺省缺省 时时,else总是和它上面离它最近的未配对的总是和它上面离它最近的未配对的if配对配对if()if()if()else.else.else.if else 配对原则:配对原则:例:例: if (a=b) if(b=c) printf(“a=b=c”); else printf(“a!=b”);修改:修改: if (a=b) if(b=c) printf(“a=b=c”); else printf(“a!=b”);实现实现if else 正确配对方法:

15、正确配对方法:加加 实现实现if else 正确配对方法正确配对方法212022-7-163.5 条件运算符和条件运算表达式条件运算符和条件运算表达式n格式:格式: 表达式表达式1? 表达式表达式2:表达式表达式3n执行过程:执行过程: 先计算表达式先计算表达式1 1的值,的值, 若为真,则以若为真,则以表达式表达式2 2的值的值作为条件表达式的值;作为条件表达式的值;若为假,则以若为假,则以表达式表达式3 3的值的值作为条件表达式的值。作为条件表达式的值。表达式表达式1 1取取表达式表达式2 2值值取取表达式表达式3 3值值真真假假222022-7-16n例:例: max= (ab) ? a

16、 : b; 相当于:相当于:if (ab) max=a; else max=b;n具体意思是:具体意思是: 如如ab为真,则把为真,则把a赋予赋予max,否则把,否则把b赋予赋予max。n条件表达式的功能:条件表达式的功能:相当于条件语句,但不能取代一般相当于条件语句,但不能取代一般ifif语句语句例例 if (ab) printf(“%d”,a); else printf(“%d”,b);printf(“%d”,ab?a:b);例例 求求 a+|b| printf(“a+|b|=%dn”, b0?a+b:a-b );例例 (a=b)?Y:N (x%2=1)?1:0 (x=0)?x:-x (c

17、=a & c0?1:(xb?a:cd?c:d ab?a:(cd?c:d)n表达式表达式1、表达式表达式2、表达式表达式3类型可不同,表达式值取较高的类型类型可不同,表达式值取较高的类型例例 x?a:b /x=0,表达式值为表达式值为b; x0,表达式值为表达式值为a xy?1:1.5 /xy ,值为值为1.0; x60n”); break; .说明:说明:例例 switch(score) case 5: printf(“Very good!”); case 4: printf(“Good!”); case 3: printf(“Pass!”); case 2: printf(“Fail!”);

18、 default : printf(“data error!”); 运行结果运行结果:score为为5时时,输出输出: Very good! Good! Pass! Fail! data error!例例 修改后修改后 switch(score) case 5: printf(“Very good!”);break; case 4: printf(“Good!”); break; case 3: printf(“Pass!”); break; case 2: printf(“Fail!”); break; default : printf(“data error!”); 运行结果运行结果:sc

19、ore为为5时时,输出输出: Very good! 282022-7-16n例例3.14 某班级准备周末举行一个班级活动,但活某班级准备周末举行一个班级活动,但活动内容要根据表中所示的天气情况来决定。动内容要根据表中所示的天气情况来决定。参考参考P64P64n算法描述:算法描述:n首先分别用整数首先分别用整数1、2、3、4分别代表分别代表晴天、有风无雨、下雪、下雨晴天、有风无雨、下雪、下雨;n然后通过然后通过输入天气情况输入天气情况weather的值,来确定活动场所的值,来确定活动场所。天天 气气活活 动动 内内 容容晴晴 天天登登 山山有风无雨有风无雨郊郊 游游下下 雪雪堆堆 雪雪 人人下下

20、 雨雨不举行班级活动不举行班级活动其他天气其他天气参观博物馆参观博物馆292022-7-16n编写程序:编写程序:# include int main ( ) int weather; printf (请输入天气情况所表示的数字请输入天气情况所表示的数字);scanf (%d,&weather); switch (weather) case 1: printf (晴晴 天天-登山登山n);case 2: printf (有风无雨有风无雨-郊游郊游n);case 3: printf (下下 雪雪-堆雪人堆雪人n);case 4: printf (下下 雨雨-不举行班级活动不举行班级活动n);de

21、fault: printf (其他天气其他天气-参观博物馆参观博物馆n);return 0;302022-7-16n修改后的程序:修改后的程序:# include int main ( ) int weather; printf (请输入天气情况所表示的数字请输入天气情况所表示的数字);scanf (%d,&weather); switch (weather) case 1: printf (“晴晴 天天-登山登山n”); break;case 2: printf (有风无雨有风无雨-郊游郊游n); break;case 3: printf (下下 雪雪-堆雪人堆雪人n); break;cas

22、e 4: printf (下下 雨雨-不举行班级活动不举行班级活动n); break;default: printf (其他天气其他天气-参观博物馆参观博物馆n);return 0;312022-7-163.7 选择程序结构选择程序结构n例例3.15 计算器程序。计算器程序。 参考参考P66P66 用户输入运算数和四则运算符,输出计算结果。用户输入运算数和四则运算符,输出计算结果。n算法描述:算法描述: 1 1、首先判断是哪种四则运算,将四则运算进行分支。、首先判断是哪种四则运算,将四则运算进行分支。 2 2、然后用对应的法则计算出输入的式子。、然后用对应的法则计算出输入的式子。 322022

23、-7-16n编写程序:编写程序:# includeint main ( ) float a,b; char c;printf (input expression: a (+-,*,/) b n);scanf (%f%c%f,&a,&c,&b); switch (c)case +: printf (%fn,a+b);break;case -: printf (%fn,a-b);break;case *: printf (%fn,a*b);break;case /: printf (%fn,a/b);break;default: printf (input errorn); return 0;33

24、2022-7-16n例例3.16 运输费用的计算问题。运输费用的计算问题。参考参考P67P67 距离距离S越远,每公里的运费越低越远,每公里的运费越低。设每公里每吨货物的基本运费为设每公里每吨货物的基本运费为 P, 货物重量为货物重量为W(吨吨),), 距离为距离为S(km),), 折扣为折扣为d, 则总运输费用则总运输费用f f的计算公式为:的计算公式为:f=P*W*S*(1-d) 其中其中折扣数折扣数d与距离有关与距离有关,具体标准如下:,具体标准如下: 0S250km没有折扣没有折扣 250S500折扣折扣 2%500S1000折扣折扣 5%1000S2000折扣折扣 8%2000S30

25、00折扣折扣 10%3000S折扣折扣 15%342022-7-16n编写程序:编写程序:#include int main ( )int c,s;float p,w,d,f;printf (please input p,w,s:n);scanf (“%f,%f,%d,&p,&w,&s);if (s=3000)c=12;elsec=s/250;switch (c)case 0:d=0;break;case 1:d=2;break;case 2:case 3:d=5;break;case 4:case 5:case 6:case 7:d=8;break;case 8:case 9:case 10

26、:case 11:d=10;break;case 12:d=15;break;f=p*w*s* (1-d/100);printf (Total freight is:%10.2fn,f);return 0;352022-7-16n例例3.17 输入某学生的成绩,经处理后给出输入某学生的成绩,经处理后给出学生的等级,等级分类如下:学生的等级,等级分类如下: 参考参考P69P6990分以上(包括分以上(包括90):):A80至至90分(包括分(包括80):):B70至至80分(包括分(包括70):):C60至至70分(包括分(包括60):):D60分以下:分以下:E362022-7-16n编写程序

27、:编写程序:# include int main ( ) float score;char grade;printf (please input a student score:);scanf (%f,&score);if (score100|score=90) grade=A;elseif (score=80)grade=B;elseif (score=70)grade=C;elseif (score=60)grade=D;else grade=E;printf (the student grade:%cn,grade);return 0;please input a student sco

28、re:85the student grade:BPress any key to continue372022-7-16n方法二:方法二:# include int main ( ) float score;char grade;printf (please input a student score:);scanf (%f,&score);if (score100|score0)printf (ninput error!);elsen= (int)score/10;switch (n)case 9:case 10: grade=A; break;case 8: grade=B; break;case 7: grade=C; break;case 6: grade=D; break;default: grade=E; break;printf (the student grade:%cn,grade);return 0;382022-7-16本章小结本章小结n算法算法n关系运算符和关系表达式关系运算符和关系表达式n逻辑运算符和逻辑表达式逻辑运算符和逻辑表达式nif语句语句n条件运算符和条件表达式条件运算符和条件表达式nswitch语句语句n选择程序结构选择程序结构

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

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

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

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