电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

C程序设计 第二版 教学课件 ppt 作者 荣政_ 第4章

66页
  • 卖家[上传人]:E****
  • 文档编号:89342993
  • 上传时间:2019-05-23
  • 文档格式:PPT
  • 文档大小:658KB
  • / 66 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 1、第四章 分支结构的C程序设计,4.1 分支结构中的表达式 4.2 if语句 4.3 switch语句 4.4 程序设计举例 习题,4.1 分支结构中的表达式 在其他高级语言中,分支结构中的表达式仅指关系表达式和逻辑表达式,比较简单。C语言中要复杂得多,可以是任何有效的表达式,如算术表达式、赋值表达式、字符表达式、 条件表达式,还可以是任意类型的数据,如整型、实型、字符型、指针类型等。,4.1.1 C语言中的逻辑值 C语言中没有专门定义逻辑类型的变量、常量和输入、输出格式。但对逻辑值作了更宽的规定:表达式的值非0,则表示逻辑真;表达式的值为0,则表示逻辑假。 这就是说,不管什么类型的表达式,只要值不是0就表示真,如1、2、0.5、a,都表示真。值只有是0、0(字符0的ASCII值为0)才表示假。 对逻辑真、假值的这种策略,使得所有类型的表达式都能在分支语句中作条件使用, 允许我们编制效率极高的程序。,4.1.2 关系表达式 1. 关系表达式的概念 所谓关系表达式是指,用关系运算符将两个表达式连接起来,进行关系运算的式子。 例如,下面的关系表达式都是合法的: ab,a+bc-d,(a=3)

      2、=b,(ab)= = (bc),2. 关系表达式的运算结果逻辑值(非“真”即“假”) C语言用整数“1”表示“逻辑真”,用整数“0”表示“逻辑假”。所以,关系表达式的值,还可以参与其它种类的运算,例如算术运算、逻辑运算等。 例如,假设num1=3,num2=4,num3=5,则: (1) num1num2的值为0。 (2) (num1num2)!=num3的值为1。 (3) num1num2num3的值为1。 (4) (num1num2)+num3的值为6,因为num1num2的值为1,1+5=6。,4.1.3 逻辑表达式 1. 逻辑表达式的概念 关系表达式只能描述单一条件,例如“x=0”。如果需要描述“x=0”、同时“x=0) & (x10)就是一个判断数x是否大于等于0且小于10的逻辑表达式。,2. 逻辑表达式的运算结果 逻辑表达式的值也是一个逻辑值(非“真”即“假”)。 例如: (ab) & (xy) 等效于 ab & xy (a=b) | (x=y) 等效于 a=b | x=y (!a) | (ab) 等效于 !a | ab,要根据优先级处理数值运算、关系运算和逻辑运算,想提高

      3、某运算的级别或增加运算关系的清晰性,可以加括号。逻辑表达式求解,在值已能确定的情况下不一定求到最后。如: (1) 表达式a & b & c: 当a=0时,表达式的值为0,不必计算判断b、c; 当a=1、b=0时,表达式的值为0,不必计算判断c; 只有a=1、b=1,才判断c。 (2) 表达式a | b | c: 当a=1(非0)时, 表达式的值为1,不必计算判断b、c; 当a=0时,才判断b,如b=1,则表达式的值为1,不必计算判断c; 只有a=0、b=0,才判断c。,熟练掌握关系运算符和逻辑运算符,可以用逻辑表达式表示一个复杂的条件。例如,判断某年y是否为闰年。y满足二者之一为闰年:(1)y能被4整除,但不能被100整除;(2)y能被400整除。两个条件为或(|)的关系,条件(1)内的两个条件为与(&)的关系。判断整除用求余运算%,余数为0,则能整除。表达式可写成: ( y%4 =0 & y%100 != 0 )| y%400 = 0 判断非闰年,则将上述整个条件取反即可: !( y%4 =0 & y%100 != 0 )| y%400 = 0 ),4.1.4 其它形式的表达式 C语

      4、言分支的表达式比较复杂,因为它可以是任何有效的表达式。常用的还有: 1. 算术表达式 如if(a * b 3 * c) ,以算术表达式“a*b-3*c”的值是否为真决定程序流向,而不必写成逻辑表达式“a*b-3*c=1”的形式。 if(a) 、if(3) 、if(0) 使用的都是算术表达式。如果写成if(a=1) 或if(a=0) ,则用的是逻辑表达式,是有冗余且潜在低效的,不是好风格。,2. 赋值表达式 用赋值表达式作表达式,清晰度不高,最容易使人“上当受骗”。 例如:“int a=3, b=5; if(a=b)”,请问条件是否成立? 有人说不成立,因为35。错了! 这里“a=b”是赋值表达式,而不是“a = b”,a为5。表达式取a的值,为真。 再如:“int a=3, b=0; if(a=b)”,请问条件是否成立?有人说不成立,因为30。说条件不成立, 是正确的,但理由是“a=b”是赋值表达式,赋值后a为0,表达式取a的值,故为假。,3. 字符表达式 如定义“char c=3;”,则if(c)、if(B)使用的都是字符表达式,其值同样是0为假,非0为真。 还有其它形式的表达式,如

      5、逗号表达式等,其逻辑值的取法与上述相同。,4.2 if 语 句 分支结构(又称选择结构)最常用的语句是if语句,它是用来判定所给定的条件是否满足,根据判定的结果(真或假)决定执行给出的两种操作之一。if语句有三种形式,下面我们分别介绍。 4.2.1 if语句的简单形式 if语句的简单形式如下: if(表达式)语句 其中表达式不限于逻辑表达式或关系表达式,可以是各种表达式,如算术表达式等。当表达式的值为非零时为“真”,当表达式的值为零时为“假”。 if语句的执行过程如图4.1所示。,图 4.1 if语句执行过程,当表达式的值为真时,执行后面的语句,接着执行下一语句; 当表达式的值为假时,就直接执行下一语句。 if语句中的“语句”从语法上讲必须也只能是一条语句,它可以是第三章中介绍过的各种语句。很多情况下它不止一句,当超过一句时,必须用花括号括起来,构成一个复合语句。,例 4.1 打印出不及格的成绩。 程序: #include void main() float score; scanf(“%f“,&score); if (score60.0) printf(“score=%5.1fn“,

      6、score); 运行: 68 (输入,不满足条件,无输出) 再次运行: 50 (输入) score= 50.0(输出) if结构中也可以采用复合语句。,例 4.2 输入一个数,求平方根。 程序: #include #include #include void main() float x,y; scanf(“%f“, ,运行: 15 (输入) x=15.000000,y=3.872983 (输出) 再次运行: 10 (输入) x0,error (输出),4.2.2 ifelse结构 1. ifelse结构的形式 ifelse结构是if语句的基本形式,形式如下: if(表达式) 语句1 else 语句2 其执行过程如图4.2所示。,图 4.2 ifelse语句执行过程,当表达式的结果为真(非零)时,执行语句1,执行完后跳到下一语句; 当表达式的结果为假(零)时,执行语句2,执行完后顺序执行下一语句。此属二中选一的情况,必选其一,只选其一。 其中语句1和语句2可以是单个语句,也可以是复合语句(即用花括号括起来的一组语句)。复合语句中又可以含有if语句,这就是后面要讲的if嵌套。子句else

      7、是任选的,当没有else子句时,就变成第一种形式了。在书写格式上语句1、elsc、语句2都可以另起一行,但仍看做是在同一个if语句内。,例 4.3 打印成绩60分为“Pass”,否则为“Fail”。 解 我们可以使用两种方法编程。 方法一:用两个简单的if语句实现。 #inchde void main() float score; scanf(“%f“,&score); if(score=60.0) printf(“score=%5.1f-Passn“,score); ,运行: 50 score= 50.0-Fail 再次运行: 80 score= 80.0-Pass 在第二个if语句中,if(score=60.0)是不能缺少的,否则不管score是否小于60,都将打印出第二行的结果。,方法二:用ifelse语句实现。 #include void main() float score; scanf(“%f“,&score); if(score60.0) printf(“score=%5.1f-Failn“,score); else printf(“score=%5.1f-Passn“,

      8、score); ,运行: 50 score= 50.0-Fail 再次运行: 80 score= 80.0-Pass 从例4.3中可看出,ifelse结构较两个if语句简单、清晰,也不易出错。 上例if语句和else语句后都有一个分号,该分号是C语言语句语法所要求的。if语句后的分号并不是表示if结构已结束,而是其后的printf语句要求的分号; else语句后的分号也是其后的printf语句要求的,同时表示此if语句到此结束,而不必连用两个分号来表示ifelse结构的结束。,2. 条件运算符的使用 当ifelse结构中的语句是表达式语句时,就可以使用条件运算符“? :”,即下列ifelse语句: if(表达式1) 表达式2; else 表达式3; 用条件运算符写成通用形式即为: 表达式1? 表达式2:表达式3,说明: (1) 条件运算符的执行顺序:先解表达式1,若为非0(真),则求解表达式2,此时表达式2的值就作为整个条件表达式的值。若表达式1的值为0(假),则求解表达式3,此时表达式3的值就作为整个条件表达式的值。 max=(ab)? a:b 执行结果就是将条件表达式的值赋给max

      9、。也就是将a和b两者中大者赋给max。 (2) 条件运算符优先于赋值运算符,因此上面赋值表达式的求解过程是先求解条件表达式,再将它的值赋给max。 条件运算符的优先级比关系运算符和算术运算符都低。因此, max=(ab)? a:b 等效于 max=ab? a:b ab? a:b+1等效于 ab? a:(b+1),(3) 条件运算符的结合方向为“自右向左”。如果有以下条件表达式: ab? a:cd?c:d 相当于 ab?a:(cd?c:d) 如果a=1,b=2,c=3,d=4,则条件表达式的值为4。 由于函数调用也返回一个值,因此表达式2,3也可出现函数的调用。如以下形式: 表达式? 函数调用1: 函数调用2,例 4.4 输入x的值,当x0时调用sqrt(x),否则调用fabs(x)。 程序: #include #include void main() float x,y; scanf(“%f“,&x); y=x0? sqrt(x):fabs(x); printf(“x=%f,y=%fn“,x,y); ,运行: 9.0 x=9.000000,y=3.000000 再次运行: 9.0 x=9.000000,y=9.000000 本例中使用了数学函数sqrt(开平方根)和fabs(求绝对值),因此在程序头部要加上文件包含命令#include 。这两个函数的函数值和自变量均为双精度类型,因此x最好定义成双精度型。取整型数的绝对值可使用abs(x)函数。这些可查附录二的库函数表。,例 4.5 打印a,b两个数中较大的一个数。 方法一:用ifelse结构实现。 #include void main() int a,b; scanf(“%d,%d“,&a,&b); if (ab) printf(“max=%dn“,a); else printf(“max=%dn“,b); ,方法二:用条件运算符实现。 #include void

      《C程序设计 第二版 教学课件 ppt 作者 荣政_ 第4章》由会员E****分享,可在线阅读,更多相关《C程序设计 第二版 教学课件 ppt 作者 荣政_ 第4章》请在金锄头文库上搜索。

      点击阅读更多内容
    最新标签
    信息化课堂中的合作学习结业作业七年级语文 发车时刻表 长途客运 入党志愿书填写模板精品 庆祝建党101周年多体裁诗歌朗诵素材汇编10篇唯一微庆祝 智能家居系统本科论文 心得感悟 雁楠中学 20230513224122 2022 公安主题党日 部编版四年级第三单元综合性学习课件 机关事务中心2022年全面依法治区工作总结及来年工作安排 入党积极分子自我推荐 世界水日ppt 关于构建更高水平的全民健身公共服务体系的意见 空气单元分析 哈里德课件 2022年乡村振兴驻村工作计划 空气教材分析 五年级下册科学教材分析 退役军人事务局季度工作总结 集装箱房合同 2021年财务报表 2022年继续教育公需课 2022年公需课 2022年日历每月一张 名词性从句在写作中的应用 局域网技术与局域网组建 施工网格 薪资体系 运维实施方案 硫酸安全技术 柔韧训练 既有居住建筑节能改造技术规程 建筑工地疫情防控 大型工程技术风险 磷酸二氢钾 2022年小学三年级语文下册教学总结例文 少儿美术-小花 2022年环保倡议书模板六篇 2022年监理辞职报告精选 2022年畅想未来记叙文精品 企业信息化建设与管理课程实验指导书范本 草房子读后感-第1篇 小数乘整数教学PPT课件人教版五年级数学上册 2022年教师个人工作计划范本-工作计划 国学小名士经典诵读电视大赛观后感诵读经典传承美德 医疗质量管理制度 2 2022年小学体育教师学期工作总结
    关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
    手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
    ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.