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

上传人(卖家):momomo 文档编号:7375482 上传时间:2023-12-12 格式:PPT 页数:32 大小:651KB
下载 相关 举报
《C语言程序设计(第三版)》课件第4章 选择结构程序设计.ppt_第1页
第1页 / 共32页
《C语言程序设计(第三版)》课件第4章 选择结构程序设计.ppt_第2页
第2页 / 共32页
《C语言程序设计(第三版)》课件第4章 选择结构程序设计.ppt_第3页
第3页 / 共32页
《C语言程序设计(第三版)》课件第4章 选择结构程序设计.ppt_第4页
第4页 / 共32页
《C语言程序设计(第三版)》课件第4章 选择结构程序设计.ppt_第5页
第5页 / 共32页
点击查看更多>>
资源描述

1、l掌握关系表达式和逻辑表达式的组成及运算掌握关系表达式和逻辑表达式的组成及运算l理解选择结构(分支结构)程序设计的概念理解选择结构(分支结构)程序设计的概念l掌握掌握if语句、语句、switch语句的基本结构及执行过语句的基本结构及执行过程程l学会简单的选择结构程序设计学会简单的选择结构程序设计 4.1 关系运算符与关系表达式关系运算符与关系表达式 l4.1.1 关系运算符关系运算符 l关系运算符关系运算符l、=、=、bb)c等价于等价于a!=(bc)4.1 关系运算符与关系表达式关系运算符与关系表达式l关系表达式关系表达式labla+1!=bl3.1415=3.1416 l34=100 la

2、99 4.2 逻辑运算符与逻辑表达式逻辑运算符与逻辑表达式 l4.2.1 逻辑运算符逻辑运算符 l逻辑运算符逻辑运算符 l!(逻辑非)、(逻辑非)、&(逻辑与)、(逻辑与)、|(逻辑或)(逻辑或)4.2 逻辑运算符与逻辑表达式逻辑运算符与逻辑表达式l优先级优先级 l逻辑或运算符(逻辑或运算符(|)l逻辑与运算符(逻辑与运算符(&)l关系运算符关系运算符l双目算术运算符(双目算术运算符(+、-、*、/、%等)等)l逻辑非运算符(!)、单目算术运算符(逻辑非运算符(!)、单目算术运算符(+、-等)等)l结合性结合性 l非运算符(!)的结合性为右结合;与运算符非运算符(!)的结合性为右结合;与运算符

3、(&)和或运算符()和或运算符(|)的结合性为左结合。)的结合性为左结合。【例例4-1】分析下面程序段的运行结果分析下面程序段的运行结果#include void main()char c;int a,b;c=A;a=1;b=2;printf(cB=%dn,cB);printf(ab2=%dn,ab2);逻辑运算符的逻辑运算符的“短路短路”现象现象 l若若&运算符左边的表达式为假(或运算符左边的表达式为假(或0),则其),则其右边的表达式将不再运算右边的表达式将不再运算,整个表达式的值,整个表达式的值必然为假必然为假l若若|运算符左边的表达式为真(或非运算符左边的表达式为真(或非0值),则值)

4、,则其右边的表达式将不再运算其右边的表达式将不再运算,整个表达式的,整个表达式的值必然为真值必然为真 l35|+b【例例4-2】测试短路现象测试短路现象#include void main()int a,b;a=b=0;a|+b;printf(%d,%dn,a,b);a=b=1;a|+b;printf(%d,%dn,a,b);a=b=0;a&+b;printf(%d,%dn,a,b);a=b=1;a&+b;printf(%d,%dn,a,b);*【例例4-3】测试短路现象测试短路现象#include int show(int n,int a)printf(%d,%d),n,a);return

5、a;void main()int a;a=show(1,1)|show(2,2)&show(3,3);printf(a=%dn,a);a=show(1,0)|show(2,0)&show(3,1);printf(a=%dn,a);a=show(1,0)|show(2,1)&show(3,2);printf(a=%dn,a);4.3 if语句语句 l4.3.1 单分支单分支if语句语句 lif(表达式表达式)语句语句;【例例4-4】从键盘输入一个整数,判断是否是偶数,若是,则输从键盘输入一个整数,判断是否是偶数,若是,则输出出“Yes”。#include void main()int a;pri

6、ntf(Please input a:);scanf(%d,&a);if(a%2=0)printf(Yesn);4.3 if语句语句l4.3.2 双分支双分支if语句语句l形式为:形式为:if(表达式表达式)语句语句1;else 语句语句2;【例例4-5】从键盘输入一个整数,判断是否是偶从键盘输入一个整数,判断是否是偶数,若是,则输出数,若是,则输出“Yes”,否则输出,否则输出“No”#include void main()int a;printf(Please input a:);scanf(%d,&a);if(a%2=0)printf(Yesn);elseprintf(Non);【例例4

7、-6】从键盘输入两个整数,从键盘输入两个整数,输出其中最大者输出其中最大者#include void main()int a,b;printf(Please input a,b:);scanf(%d,%d,&a,&b);if(ab)printf(max=%dn,a);elseprintf(max=%dn,b);4.3.3 多分支选择结构多分支选择结构 l多分支选择结构的多分支选择结构的if语句一般形式为:语句一般形式为:if(表达式表达式1)语句语句1;else if(表达式表达式2)语句语句2;else if(表达式表达式n)语句语句n;else 语句语句n+1;【例例4-7】输入出租车类型

8、和里程,输入出租车类型和里程,计算打车的费用。计算打车的费用。l计算方式为:计算方式为:3公里以内公里以内8元;元;3公里以上公里以上0车型每车型每公里公里1.5元,元,1车型每公里车型每公里2元。元。#include void main()int taxiType;float s;float money;printf(Input taxi type(0,1):);scanf(%d,&taxiType);printf(Input s:);scanf(%f,&s);if(s y)max=x;else max=y;lmax=xy?x:y l优先级优先级 l右结合性右结合性:lab?a:cd?c:d

9、 等价于等价于 ab?a:(cd?c:d)【例例4-9】用条件运算符输出用条件运算符输出3个个整数中的最大者整数中的最大者#include void main()int a,b,c,max;printf(input a,b,c:);scanf(%d,%d,%d,&a,&b,&c);max=ab?a:b;max=cmax?c:max;printf(max=%dn,max);4.4 switch语句语句 switch(表达式表达式)case常量表达式常量表达式1:语句语句1;case常量表达式常量表达式2:语句语句2;case常量表达式常量表达式n:语句语句n;default:语句语句n+1;【例

10、例4-10】输入一个十进制数,根据输入的数输输入一个十进制数,根据输入的数输出所对应的英文星期单词,若所输入的数小于出所对应的英文星期单词,若所输入的数小于1或大于或大于7,则输出,则输出“Error”。#include void main()int a;printf(Input a:);scanf(%d,&a);switch(a)case 1:printf(Mondayn);case 2:printf(Tuesdayn);case 3:printf(Wednesdayn);case 4:printf(Thursdayn);case 5:printf(Fridayn);case 6:print

11、f(Saturdayn);case 7:printf(Sundayn);default:printf(Errorn);4.4 switch语句语句switch(表达式表达式)case常量表达式常量表达式1:语句语句1;break;case常量表达式常量表达式2:语句语句2;break;case常量表达式常量表达式n:语句语句n;break;default:语句语句n+1;修改后的例修改后的例4-10程序程序#include void main()int a;printf(Input a:);scanf(%d,&a);switch(a)case 1:printf(Mondayn);break;c

12、ase 2:printf(Tuesdayn);break;case 3:printf(Wednesdayn);break;case 4:printf(Thursdayn);break;case 5:printf(Fridayn);break;case 6:printf(Saturdayn);break;case 7:printf(Sundayn);break;default:printf(Errorn);break;【注意注意】lswitch后跟的后跟的“表达式表达式”允许为任何类型的表达式,其允许为任何类型的表达式,其数据类型和数据类型和case后面的常量表达式的数据类型一致。后面的常量表达

13、式的数据类型一致。l每一个每一个case后的各常量表达式的值不允许重复,否则后的各常量表达式的值不允许重复,否则会报错。会报错。l每一个每一个case后允许有多条语句,可以不用花括号后允许有多条语句,可以不用花括号“”括起来。括起来。lcase和和default子句出现的先后顺序可以变动,不会影子句出现的先后顺序可以变动,不会影响程序的执行结果。响程序的执行结果。default子句也可以省略不用。子句也可以省略不用。l多个多个case可以共用一组执行语句。例如:可以共用一组执行语句。例如:llcase A:lcase B:lcase C:printf(Passn);break;4.5 程序举例

14、程序举例【例例4-11】输入一个输入一个100以内的十进制正整数,以内的十进制正整数,判断该数是否包含数字字符判断该数是否包含数字字符“6”。若是输出。若是输出“Yes!”,否则输出,否则输出“No!”。#include void main()int a;printf(Input a:);scanf(%d,&a);if(a=6|(a%10=6|a/10=6)printf(Yes!n);elseprintf(No!n);【例例4-12】输入输入3个数,按从小到个数,按从小到大的顺序输出。大的顺序输出。#include stdio.hvoid main()int a,b,c,t;printf(In

15、put a,b,c:);scanf(%d,%d,%d,&a,&b,&c);if(ab)t=a;a=b;b=t;if(bc)t=b;b=c;c=t;if(ab)t=a;a=b;b=t;printf(%d=%d=%dn,a,b,c);【例例4-13】将一个百分制的成绩(设是整将一个百分制的成绩(设是整数)转化成数)转化成5个等级个等级l90分以上为分以上为A,8089分为分为B,7079分为分为C,6069分为分为D,60分以下为分以下为E。例如,输入例如,输入75,则显示,则显示C。【分析分析】先判断输入的数据是否在合理的分数先判断输入的数据是否在合理的分数范围(范围(0100)内,然后再判断是

16、哪个分数)内,然后再判断是哪个分数段:段:90分以上输出分以上输出A,8089分输出分输出B,7079分输出分输出C,6069分输出分输出D,否则显示,否则显示E。【例例4-13】将一个百分制的成绩(设是整将一个百分制的成绩(设是整数)转化成数)转化成5个等级个等级#include void main()int a;printf(Input a:);scanf(%d,&a);if(a100)printf(Input data errorn);elseif(a=90)printf(An);else if(a=80)printf(Bn);else if(a=70)printf(Cn);else i

17、f(a=60)printf(Dn);else printf(En);【分析】【分析】l使用使用switch语句,当然最笨的办法是每一个分数一个语句,当然最笨的办法是每一个分数一个case分支,将需要分支,将需要101个分支,显然这种程序不值得个分支,显然这种程序不值得推荐。那么有没有简化的办法呢?推荐。那么有没有简化的办法呢?其实,任何好的算法都是对问题分析和提炼的结果。其实,任何好的算法都是对问题分析和提炼的结果。l题目中题目中60分以上都是每分以上都是每10分一个层次,分一个层次,60分以下是分以下是一个层次。只要把每个层次的共性找到就容易找到一个层次。只要把每个层次的共性找到就容易找到简

18、化程序的办法了。简化程序的办法了。l以以6069为例。每个分数的十位数都是为例。每个分数的十位数都是6,对于该,对于该层次的成绩,整除层次的成绩,整除10的结果都是的结果都是6。同样对于。同样对于7079、8089、9099都是一样。而都是一样。而69分以下的成分以下的成绩整除绩整除10的结果都小于的结果都小于6。【例例4-13】将一个百分制的成绩(设是整将一个百分制的成绩(设是整数)转化成数)转化成5个等级(用个等级(用switch语句完成)语句完成)#include void main()int a;printf(Input a:);scanf(%d,&a);if(a100)printf(

19、Input data errorn);elseswitch(a/10)case 10:case 9:printf(An);break;case 8:printf(Bn);break;case 7:printf(Cn);break;case 6:printf(Dn);break;default:printf(En);l根据某种条件的成立与否而采用不同的程序段进行处根据某种条件的成立与否而采用不同的程序段进行处理的程序结构称为选择结构,也称为分支结构。选择理的程序结构称为选择结构,也称为分支结构。选择结构体现了程序的逻辑判断能力。结构体现了程序的逻辑判断能力。l对于条件的判断,对于条件的判断,C语

20、言采用逻辑值语言采用逻辑值1和和0分别表示真分别表示真和假。产生这种逻辑值的表达式是关系表达式和逻辑和假。产生这种逻辑值的表达式是关系表达式和逻辑表达式。二者可以统称条件表达式。表达式。二者可以统称条件表达式。lC语言采用语言采用if语句和语句和switch语句描述选择结构。语句描述选择结构。lif语句可分为单分支、双分支和多分支。一般采用语句可分为单分支、双分支和多分支。一般采用if语句实语句实现简单的分支结构程序。现简单的分支结构程序。lswitch语句和语句和break语句配合可以实现多分支结构程序。语句配合可以实现多分支结构程序。l嵌套的嵌套的if语句和语句和siwtch语句都能设计完

21、成多分支的程序,二语句都能设计完成多分支的程序,二者各有特色。对于条件具备规律性的问题,采用者各有特色。对于条件具备规律性的问题,采用switch语句语句效率更好,可读性也更好。效率更好,可读性也更好。l下面程序的输出结果是下面程序的输出结果是:#include main()int x=1,a=0,b=0;switch(x)case 0:b+;case 1:a+;case 2:a+;b+;printf(a=%d,b=%dn,a,b);l设计一个简单的计算器程序,用户输入运算数和四则设计一个简单的计算器程序,用户输入运算数和四则运算符(运算符(+、-、*、/),输出计算的结果。),输出计算的结果。l编写程序,从键盘输入学生成绩,输出对应的等级编写程序,从键盘输入学生成绩,输出对应的等级(100分为分为A,9099分为分为B,8089分为分为C,7079分为分为D,6069分为分为E,小于,小于60分为分为F)。)。

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

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

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


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

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


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