c语言选择结构程序设计.pptx

上传人:莉*** 文档编号:87593446 上传时间:2023-04-16 格式:PPTX 页数:38 大小:235.09KB
返回 下载 相关 举报
c语言选择结构程序设计.pptx_第1页
第1页 / 共38页
c语言选择结构程序设计.pptx_第2页
第2页 / 共38页
点击查看更多>>
资源描述

《c语言选择结构程序设计.pptx》由会员分享,可在线阅读,更多相关《c语言选择结构程序设计.pptx(38页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、4.1 4.1 选择结构程序选择结构的选择结构的N-S流程图如图所示。流程图如图所示。第1页/共38页关系运算:比较运算,比较两个操作数,看是否满足给定的关系。1、关系运算符:小于:小于:小于:小于 ,53,3553,35=:小于等于,:小于等于,:小于等于,:小于等于,5=3,3=55=3,3:大于,:大于,:大于,:大于,5353,3535=:大于等于,:大于等于,:大于等于,:大于等于,5=3,3=5 5=3,3=5,与数学上与数学上与数学上与数学上()()不同不同不同不同=:等于,:等于,:等于,:等于,5=3,5=3,与数学上与数学上与数学上与数学上(=)(=)不同不同不同不同!=!

2、=:不等于,:不等于,:不等于,:不等于,5!=3 5!=3,与数学上与数学上与数学上与数学上()()不同不同不同不同4.1.1 关系运算符与关系表达式第2页/共38页2、关系表达式用关系运算符将表达式连接起来的式子用关系运算符将表达式连接起来的式子优先级优先级 =高高 低低=!=!=结合方向结合方向自左向右自左向右自左向右自左向右表达式的值表达式的值关系成立,即为真,结果为关系成立,即为真,结果为1 1;关系不成立,即为假,结果为关系不成立,即为假,结果为0 0;算术算术运算符运算符高高 低低C C语言中,真:非语言中,真:非0 0值,假:值,假:0 0值值 第3页/共38页1、逻辑运算符!

3、:逻辑非,一元运算符!:逻辑非,一元运算符!:逻辑非,一元运算符!:逻辑非,一元运算符运算规则:取反,真运算规则:取反,真运算规则:取反,真运算规则:取反,真假,假假,假假,假假,假真真真真&:逻辑与:逻辑与:逻辑与:逻辑与 。又称逻辑乘。又称逻辑乘。又称逻辑乘。又称逻辑乘。运算规则:两个操作数均为真,结果为真。运算规则:两个操作数均为真,结果为真。运算规则:两个操作数均为真,结果为真。运算规则:两个操作数均为真,结果为真。|:逻辑或:逻辑或:逻辑或:逻辑或 。又称逻辑加。又称逻辑加。又称逻辑加。又称逻辑加。运算规则:只要两个操作数有一个为真,结果运算规则:只要两个操作数有一个为真,结果运算规

4、则:只要两个操作数有一个为真,结果运算规则:只要两个操作数有一个为真,结果为真。为真。为真。为真。4.1.2逻辑运算符与逻辑表达式第4页/共38页2、逻辑表达式的值非非非非0 0 值:真值:真值:真值:真0 0值:假值:假值:假值:假整型整型实型实型字符型字符型指针类型指针类型0 00.00.000NULLNULL第5页/共38页3、逻辑表达式用逻辑运算符将表达式连接起来的式子。用逻辑运算符将表达式连接起来的式子。优先级优先级关系关系运算符运算符高高 低低&逻辑与逻辑与算术算术运算符运算符高高 低低!逻辑非逻辑非高高 低低高高 低低|逻辑或逻辑或结合性结合性!:自右向左!:自右向左!:自右向左

5、!:自右向左&、|:自左向右:自左向右第6页/共38页例:int a=5;float b=3.5;int a=5;float b=3.5;!a!a0 0!b!b0 0a&ba&b1 1a|ba|b1 1!a&!b!a&!b 0 0第7页/共38页4、注意在逻辑表达式的求解中,并不是所有的逻在逻辑表达式的求解中,并不是所有的逻辑运算符都被执行,只是在必须执行下一辑运算符都被执行,只是在必须执行下一个逻辑运算符才能求出表达式的解时,才个逻辑运算符才能求出表达式的解时,才执行该运算符。执行该运算符。第8页/共38页例:例:a=0;b=1;c=2;d=a+&b+&-c;d=(a+)&(b+)&(-c)

6、;运算结果运算结果:d=0,a=1,b=1,c=2(1)a&b&c求解方法:只有求解方法:只有a为真(非为真(非0),才需要判),才需要判断断b的值,只有的值,只有a和和b都为真,才需要判断都为真,才需要判断c的值。只要的值。只要a为假,就不必判断为假,就不必判断b和和c,运算,运算立即中止。立即中止。第9页/共38页(2)a|b|c求解方法:只要求解方法:只要a为真(非为真(非0),就不必判就不必判断断b和和c;只有;只有a 为假,才判断为假,才判断b;a和和b都都为假,才判断为假,才判断c。例例2-8:a=0;b=1;c=2;d=a+|b+|-c;d=(a+)|(b+)|(-c);运算结果

7、运算结果:d=1,a=1,b=2,c=2 第10页/共38页实际问题中逻辑量的描述实际问题中逻辑量的描述(1)图所示x轴上阴影区间的数据描述x=1&x=2 1=x=2错误第11页/共38页(2)闰年问题 假定闰年为year,判定是否闰年的标准为:如果该年能被4整除且不能被100整除,或者该年能被400整除,则都为闰年。能被4整除且不能被100整除,可表示为:year%40 year%100!0;&能被400整除可表示为:year%400 0闰年问题的表达式为:year%40&year%100!0|year%4000也可表示为:!(year%4)&year%100|!(year%400)第12页

8、/共38页 1、单分支选择、单分支选择if语句语句if语语句句有有三三种种形形式式:单单分分支支选选择择if语语句句、双双分分支支选择选择if语句、多分支选择语句、多分支选择if语句。语句。语句形式:语句形式:if (表达式)表达式)语句;语句;语句执行流程:语句执行流程:表达式表达式语句语句真(非0)假(0)一、if语句的三种形式4.1.3 if4.1.3 if语句语句第13页/共38页例例:从从键键盘盘输输入入两两个个整整数数a和和b,如如果果a大大于于b则则交交换换两两数,最后输出两个数。数,最后输出两个数。#include 输入输入a,ba,babab交换交换a a、b b输出输出结束

9、结束真假 void main()int a,b,t;scanf(%d,%d,&a,&b);if(ab)t=a;a=b;b=t;printf(a=%d,b=%dn,a,b);第14页/共38页注意:注意:(1 1)ifif语句自动结合一个语句,当满足条件需要语句自动结合一个语句,当满足条件需要执行多个语句时,应用一对大括号执行多个语句时,应用一对大括号 将需要执行将需要执行的多个语句括起,形成一个复合语句。的多个语句括起,形成一个复合语句。(2 2)ifif语句中表达式形式很灵活,可以是常量、语句中表达式形式很灵活,可以是常量、变量、任何类型表达式、函数、指针等。只要表达变量、任何类型表达式、函

10、数、指针等。只要表达式的值为非零值,条件就为真,反之条件为假。式的值为非零值,条件就为真,反之条件为假。第15页/共38页2、双分支选择、双分支选择if语句语句语句形式:语句形式:if (表达式)表达式)语句语句1;else 语句语句2;语句执行流程:语句执行流程:表达式表达式语句语句1真(非0)假(0)语句语句2第16页/共38页例例:输输入入两两个个整整数数,输输出出其中较大的数。其中较大的数。#include#include void main()int x,y,max;scanf(%d,%d,&x,&y);if(xy)max=x;else max=y;printf(max=%dn,ma

11、x);输入输入x,yx,yxyxymax=xmax=x输出最大值输出最大值结束结束真假max=ymax=y第17页/共38页注意:注意:if和和else语语句句之之间间只只能能有有一一个个语语句句,当当ifelse之之间的语句不只一句时,应用一对间的语句不只一句时,应用一对将语句括起。将语句括起。if(ab)a+;b+;else a=0;b=10;第18页/共38页3、多分支选择、多分支选择if语句语句语句形式:语句形式:if (表达式表达式1)语句语句1;else if (表达式表达式2)语句)语句2;else if (表达式表达式n)语句)语句n;else 语句语句n+1;第19页/共38

12、页语句执行流程:语句执行流程:表达式表达式1 1语句语句1真(非0)假(0)语句语句2表达式表达式2 2真(非0)表达式表达式2 2语句语句n语句语句n+1假(0)假(0)第20页/共38页例:计算分段函数。例:计算分段函数。假输入输入x xX=1X=1真X10X=60n);break;default:printf(grade60);各各casecase和和defaultdefault子句的先后顺序可以变动,而子句的先后顺序可以变动,而不会影响程序执行结果。不会影响程序执行结果。第30页/共38页defaultdefault语句可以省略不用。语句可以省略不用。casecase和和default

13、default与其后面的常量表达式间至少有与其后面的常量表达式间至少有一个空格。一个空格。switchswitch语句可以嵌套,语句可以嵌套,breakbreak语句只跳出它所在语句只跳出它所在的的switchswitch语句。语句。第31页/共38页例例:企企业业发发放放的的奖奖金金根根据据利利润润提提成成。从从键键盘盘输输入入当当月利润,求应发放奖金总数?月利润,求应发放奖金总数?第32页/共38页利润xx=1010 x2020 x4040 x6060 x100100 x(int)x/10 常量0,11,22,3,44,5,66,7,8,9,1010以上用这种方法转换后,用这种方法转换后,

14、n n出现了在不同区域有重复数字的情况。解决的方出现了在不同区域有重复数字的情况。解决的方法有很多,其中一种是可以采用当法有很多,其中一种是可以采用当x x为为1010的整数倍时,将计算出的的整数倍时,将计算出的n n值值减减1 1。使用使用switchswitch解题的解题的关键,关键,通过分通过分析找到析找到表达式,表达式,将问题将问题分成几分成几种情况。种情况。第33页/共38页#include stdio.hvoid main()float x,y;int n;scanf(%f,&x);n=(int)x/10;if(int)x%10=0)n-;switch(n)case 0:y=x*0

15、.1;break;case 1:y=x*0.12;break;case 2:case 3:y=x*0.14;break;case 4:case 5:y=x*0.16;break;case 6:case 7:case 8:case 9:y=x*0.18;break;default:y=x*0.2;printf(y=%.2fn,y);程序如下:程序如下:第34页/共38页4.1.5 选择结构程序设计举例例:将任意三个整数按从大到小的顺序输出。例:将任意三个整数按从大到小的顺序输出。#include stdio.hvoid main()int x,y,z,t;scanf(%d,%d,%d,&x,&y

16、,&z);if(xy)t=x;x=y;y=t;/*交换交换x,y的值的值*/if(xz)t=x;x=z;z=t;/*交换交换x,z的值的值*/if(yz)t=y;y=z;z=t;/*交换交换y,z的值的值*/printf(%d,%d,%dn,x,y,z);第35页/共38页1.main()int x=1,y=0,a=0,b=0;switch(x)case 1:switch(y)case 0:a+;break;case 1:b+;break;case 2:a+;b+;break;case 3:a+;b+;printf(“a=%d,b=%dn”,a,b);结果结果:a=2,b=1课堂练习课堂练习第36页/共38页2.程序填空程序填空:以下程序判断输入的整数能否被以下程序判断输入的整数能否被3或或7整除整除.main()int x,f=0;scanf(“%d”,&x);if(1 )2 if(f=1)printf(“YESn”);else printf(“NOn”);1、x%3=0|x%7=02、f=1;第37页/共38页感谢您的欣赏!第38页/共38页

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

当前位置:首页 > 应用文书 > PPT文档

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

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com