ImageVerifierCode 换一换
格式:PPT , 页数:25 ,大小:151.50KB ,
资源ID:5865257      下载积分:10 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.docduoduo.com/d-5865257.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(C语言选择结构.ppt)为本站会员(11xg27ws)主动上传,道客多多仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知道客多多(发送邮件至docduoduo@163.com或直接QQ联系客服),我们立即给予删除!

C语言选择结构.ppt

1、1,第五章 选择结构程序设计,5.1 关系运算符与关系表达式 5.2 逻辑运算符与逻辑表达式 5.3 if语句 5.4 switch语句 5.5 选择结构程序设计举例,2,5.1 关系运算及其表达式,所谓“关系运算”实际上就是“比较运算”,即将两个数据进行比较,判定两个数据是否符合给定的关系。 一、 关系运算符及其优先关系 1关系运算符 C语言提供6种关系运算符: = = != 注意:在语言中,“等于”关系运算符是双等号“= =”,而不是单等号“= ”(赋值运算符)。 2优先级 关系运算符的优先级,低于算术运算符,但高于赋值运算符。 a+b b+c 等效于 (a+b)(b+c)。 a=bc 等

2、效于a =( bc)。,3,3.结合性:自左至右;二、 关系表达式 1关系表达式的概念所谓关系表达式是指,用关系运算符将两个表达式连接起来,进行关系运算的式子。例如,下面的关系表达式都是合法的:ab,a+bc-d,(a=3)=b,(ab)= =(bc)2关系表达式的值:条件成立为真,整数“”表示“逻辑真;条件不成立为假,用整数“”表示“逻辑假”。 例如: int a=2,b=3,c=1;a33 ,值是1 , 再计算 12,值为 1,4,练习,假设num1=3,num2=4,num3=5,则:(1)num1num2的值=?。(2)(num1num2)!=num3的值=?。(3)num1num2n

3、um3的值=?。思考题:任意改变num1或num2的值,会影响整个表达式的值吗?为什么?(4)(num1num2)+num3的值=?再次强调:C语言用整数“1”表示“逻辑真”,用整数“0”表示“逻辑假”。所以,关系表达式的值,还可以参与其它种类的运算,例如算术运算等。,5,三、条件运算符 ?和: ,它们与三个操作数组组成三元运算。 形式为: ? : 求值规则和表达式的值:真(非0),求解表达式2求解表达式1 条件表达式的值假(0),求解表达式3 例如: int max,a=5,b=3;max=ab?a:b max及赋值表达式的值均为5;ab?a:b+1 条件表达式的值为4。,总结:1、除单目运

4、算符、赋值运算符和条件运算符是右结合性外,其它运算符都是左结合性。2、逗号运算符的优先级最低,赋值运算符次之。,6,5.2 逻辑运算及其表达式,关系表达式只能描述单一条件,例如“x=0”。如果需要描述“x=0”、同时“x10”,就要借助于逻辑表达式了。一、 逻辑运算符及其优先次序 1.逻辑运算符及其运算规则 (1)C语言提供三种逻辑运算符: & 逻辑与(相当于“同时”) | 逻辑或(相当于“或者”) ! 逻辑非(相当于“否定”),7,(2)运算规则1)&:全真为真。当且仅当两个运算量的值都为“真”时,运算结果为“真”,否则为“假”。 2) | :全假为假。当且仅当两个运算量的值都为“假”时,运

5、算结果为“假”,否则为“真”。3) ! :非真即假,非假即真。当运算量的值为“真”时,运算结果为“假”;当运算量的值为“假”时,运算结果为“真”。 例如,假定x=5,则(x=0) & (x5)的值为“假”,!(x5)的值为“真”。,8,2逻辑运算符的运算优先级 (1)逻辑非的优先级最高,逻辑与次之,逻辑或最低,即: !(非) &(与) |(或)(2)与其它种类运算符的优先关系! 算术运算 关系运算 & | 赋值运算3逻辑运算符的结合律 C语言逻辑运算符采用左结合律。表达式中出现优先级别为同一级别的运算符时, 按从左到右的结合方向处理。例如: a & b & c 计算顺序为:(a& b)& c。

6、,4 - 0,1 & 2,8 4,1,0,1,5 3 & 2 | 8 4 - !5,9,二、逻辑表达式1逻辑表达式的概念所谓逻辑表达式是指,用逻辑运算符将1个或多个表达式连接起来,进行逻辑运算的式子。在C语言中,用逻辑表达式表示多个条件的组合。例如,a=a & a=1 num31的值=1。,10,3说明 在计算逻辑表达式时,只有在必须执行下一个表达式才能求解时,才求解该表达式(即并不是所有的表达式都被求解)。换句话说:1)对于逻辑与运算,如果第一个操作数被判定为“假”,系统不再判定或求解第二操作数。 例:a = 0; b = 1; c = a+ 结果: a为0,b为0,c为0,d为1。,11,

7、5.3 if语句 if语句是一种用来实现选择结构程序的语句。 一、if语句的四种形式:1单分支if语句一般形式为:if (表达式) 语句组 含义:若表达式为真,执行语句,否则执行if后面的语句组。2双分支if语句 一般形式为:if (表达式) 语句组1else 语句组2 含义:若表达式为真,执行语句组1,否则执行语句组2。,语句组2,12,案例5.1 输入任意三个整数num1、num2、num3,求三个数中的最大值。 main() int num1,num2,num3,max; printf(“Please input three numbers:“); scanf(“%d,%d,%d“, ,

8、程序运行情况如下: Please input three numbers:11,22,18 The three numbers are:11,22,18 max=22,13,假,表达式2,表达式3,语句4,语句3,语句2,真,真,假,假,3多分支选择结构的if语句if(表达式1) 语句组1;else if(表达式2) 语句组2;else if(表达式3) 语句组3;.else if(表达式m) 语句组m;else 语句组m+1;,14,案例5.2从键盘上输入一个百分制成绩score,按下列原则输出其等级:score90,等级为A;80score90,等级为B;70score80,等级为C;60

9、score70,等级为D;score60,等级为E。 main( ) int score;scanf(“%d”, ,15,4. if语句的嵌套在上述3种if语句结构中,当if(表达式)或else后面的语句本身又是一个if语句结构时,就形成了if语句的嵌套结构。 if 语句的二层嵌套结构如下: if ( 表达式1)if ( 表达式1_2)语句1_1else语句1_2 elseif ( 表达式2_1) 语句2_1else语句2_2,16,二、说明 (1)else子句(可选)是if语句的一部分,必须与if配对使用,不能单独使用。 (2)if语句嵌套时,else子句与if的匹配原则:与在它上面、距它最

10、近、且尚未匹配的if配对。,17,案例5.3 写一程序,从键盘上输入1年份year(4位十进制数),判断其是否闰年。闰年的条件是:能被4整除、但不能被100整除,或者既能被100整除,又能被400整除。 算法设计要点: (1)如果能被整除,则余数为,即如果的值等于,则表示能被整除! (2)首先将是否闰年的标志leap预置为0(非闰年),这样仅当year为闰年时将leap置为1即可。这种处理两种状态值的方法,对优化算法和提高程序可读性非常有效,请仔细体会。参考程序如下:,18,main() int year,leap=0;/* leap=0:预置为非闰年*/printf(“Please inpu

11、t the year:“);scanf(“%d“, ,19,5.4 switch语句,C语言提供了switch语句直接处理多分支选择。 switch(表达式) case 常量表达式1:语句组1 break;case 常量表达式2:语句组2 break;case 常量表达式n:语句组n break;default: 语句组n+1 ,20,执行过程 (1)当switch后面“表达式”的值,与某个case后面的“常量表达式”的值相同时,就执行该case后面的语句(组);当执行到break语句或switch语句中的最后一条语句时,跳出switch语句,转向执行switch语句的下一条。(2)如果没有任

12、何一个case后面的“常量表达式”的值,与“表达式”的值匹配,则执行default 后面的语句(组)。然后,再执行switch语句的下一条。,21,案例5.4 从键盘上输入一个百分制成绩score,按下列原则输出其等级:score90,等级为A;80score90,等级为B;70score80,等级为C;60score70,等级为D;score60,等级为E。 main() int score, grade; printf(“Input a score(0100): ”); scanf(“%d”, case 5: case 4:,22,case 3:case 2:case 1:case 0:

13、printf(“grade=En”); break;default: printf(“The score is out of range!n”); 程序运行情况如下: Input a score(0100): 85 grade=B,23,3说明 (1)每个case后面“常量表达式”的值,必须各不相同,否则会出现相互矛盾的现象(即对表达式的同一值,有两种或两种以上的执行方案)。(2)case后面的常量表达式仅起语句标号作用,并不进行条件判断。系统一旦找到入口标号,就从此标号开始执行,不再进行标号判断,所以必须加上break语句,以便结束switch语句。 思考题:如果去掉案例5.4程序中的所有b

14、reak语句,且输入的成绩为75,输出会如何?(3)用switch语句实现的多分支结构程序,完全可以用if语句或if语句的嵌套来实现。,24,5.5 选择结构程序设计举例,案例5.5 求一元二次方程ax2+bx+c=0的解(a0)。 #include “math.h“ main() float a,b,c,disc,x1,x2,p,q; scanf(“%f,%f,%f”, ,25,else p=-b/(2*a); /*求出两个共轭复根*/ q=sqrt(fabs(disc)/(2*a); printf(“x1=%7.2f + %7.2f in“, p, q); /*输出两个共轭复根*/ printf(”x2=%7.2f - %7.2f in“, p, q); 说明:由于实数在计算机中存储时,经常会有一些微小误差,所以本案例判断disc是否为0的方法是:判断disc的绝对值是否小于一个很小的数(例如10-6)。 思考题:如果将系数a、b、c定义成整数,能否直接判断disc是否等于0?,

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报