计算机c语言第三章c.ppt_第1页
计算机c语言第三章c.ppt_第2页
计算机c语言第三章c.ppt_第3页
计算机c语言第三章c.ppt_第4页
计算机c语言第三章c.ppt_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1 第三章选择结构程序设计 3 1 1关系运算符 C语言提供了6种关系运算符 大于 大于或等于 等于 不等于 3 1关系和逻辑表达式 关于优先级及结合方向 1 关系运算是比较简单的一种逻辑运算 其优先次序为 大于 大于或等于 等于 不等于 优先级相同 优先级6 优先级相同 优先级7 结合方向 自左向右 2 关系运算符的优先级低于算术运算符 3 关系运算符的优先级高于赋值运算符 算术运算符关系运算符赋值运算符 高 低 3 1 2关系表达式 用关系运算符将两个表达式连接起来的式子 称为关系表达式 其值只能为 真 或 假 即 以 非零 代表 真 以 0 代表 假 在C语言中用1和0表示 例如 假设num1 3 num2 4 num3 5 则 1 num1 num2的值 0 2 num1 num2 num3的值 1 3 num1 num2 num3的值 1 4 num1 num2 num3的值 6 因为num1 num2的值 1 1 5 6 再次强调 C语言用整数 1 表示 逻辑真 用整数 0 表示 逻辑假 所以 关系表达式的值 还可以参与其它种类的运算 例如算术运算 逻辑运算等 例如 c a b c a b a b c a b ca bc a b c 例如 inta 3 b 2 c 1 d f a b a b cb cbf a b c 表达式值1 表达式值1 表达式值0 d 1 f 0 例如 若a 0 b 0 5 x 0 3 则a x b的值为 例如 5 2 7 8在C中是允许的 值为 例如 inti 1 j 7 a a i j 4 0 则a 例如 a 0结果为 A 100结果为 0 0 2 1 0 例如 注意区分 与 inta 0 b 1 if a b printf aequaltob elseprintf anotequaltob 3 1 3逻辑运算符和逻辑表达式 1 逻辑运算符 逻辑运算符 逻辑非 逻辑与 也叫逻辑乘 逻辑或 也叫逻辑加 逻辑运算真值表 C语言中 运算量 0表示 假 非0表示 真 运算结果 0表示 假 1表示 真 优先级及结合方向 优2 算术运算符 优3 4 关系运算符 优6 7 和 优11 12 赋值运算符 优14 高 低 部分优先级小结 2 逻辑表达式 用逻辑运算符将两个表达式连接起来的式子 称为逻辑表达式 其值只能为 真 或 假 即 以 非零 代表 真 以 0 代表 假 在C语言中用1和0表示 例如 ab x ya b x y a a b a x x b a b x y a b x y a a b 例如 a 4 b 5 aa ba b a b4 0 25 3 2 8 4 0 c d 值为0 值为1 值为1 值为1 值为1 值为1 5 3 2 8 4 0 值为1 说明 逻辑运算符两侧的运算对象不但可以是0和1 或者是0和非0的整数 也可以是任意类型的数据 如字符型 实型或指针型等 如 c d 短路特性 逻辑表达式求解时 并非所有的逻辑运算符都被执行 只是在必须执行下一个逻辑运算符才能求出表达式的解时 才执行该运算符 例a m a b n c d 结果m 0 n 1 1 二分支选择结构 2 多分支选择结构 3 2if语句和switch语句 3 2 1选择结构 注 A B A1 An可以是一个简单语句 也可以是一个基本结构 1 形式一 一种选择 if 表达式 语句 例 if x y printf d x 3 2 2if语句的三种形式 2 形式二 二重选择 if 表达式 语句1 else语句2 例 if x y printf d x elseprintf d y 3 形式三 多重选择 if 表达式1 语句1 elseif 表达式2 语句2 elseif 表达式3 语句3 else语句n 例 if salary 1000 index 0 4 elseif salary 800 index 0 3 elseif salary 600 index 0 2 elseif salary 400 index 0 1 elseindex 0 说明 1 三种形式的if语句在if后面都有 表达式 一般为逻辑表达式或关系表达式 也可以是任意的数值类型 2 else子句不能作为语句单独使用 它必须是if语句的一部分 与if配对使用 例 1 当a 1 b 2 c 3时 执行以下if语句后 a b c if a c b a a c c b 2 当a 1 b 2 c 3时 执行以下if语句后 a b c if a c b a a c c b 3 当a 1 b 2 c 3时 执行以下if语句后 a b c if a c b a a c c b 1 一般形式if 表达式1 if 表达式2 语句1 else语句2 elseif 表达式3 语句3 else语句4 3 2 3if语句的嵌套 2 说明 语句1 2 3 4可以是复合语句 每层的if与else配对 或用 来确定层次关系 C语言规定 else总是与它上面最近的且又没有配对的if语句进行配对 嵌套的if语句图解 N S结构流程图 例1 考虑下面程序输出结果 main intx 100 a 10 b 20 intv1 5 v2 0 if a b if b 15 if v1 x 1 elseif v2 x 10 x 1 printf d x 结果 1 例2 求解一元二次方程ax2 bx c 0 include stdio h include math h 数学函数头文件 include stdlib h 标准库头文件 main floata b c x m n tmp printf Pleaseinputa b c using toseparatethem n scanf f f f else m b 2 0 a tmp b b 4 a c if tmp 0 if语句的第二种形式 属二重选择 n sqrt b b 4 a c 2 0 a printf x1 f x2 f n m n m n else n sqrt b b 4 a c 2 a printf x1 f fi n m n printf x2 f fi n m n 3 2 4条件运算符 与 1 一般形式 表达式1 表达式2 表达式3 2 执行顺序 先求解表达式1 若值为非0 真 则求解表达式2 并作为最终结果 若值为0 假 则求解表达式3 并作为最终结果 例x a b x 0 表达式值为 b x 0 表达式值为 a x y 1 1 5 x y 值为1 0 x y 值为1 5 例求a b printf a b d n b 0 a b a b 3 注意 条件运算符优先级 优先级13 高于赋值运算符 低于关系运算符和算术运算符 结合方向为自右至左 例如 a b a c d c d等价于a b a c d c d 若a 5 b 15 c 25 d 35 那么整个表达式的值为35 例 以下程序的输出结果是 A 1B 2C 3D 4main intw 4 x 3 y 2 z 1 printf d n w x w z y z x 答案 A 只能取代简单的if语句 表达式1 2 3的类型可以不同 条件表达式的最终类型为2和3中较高的类型 3 2 5switch语句 开关分支语句 1 一般形式 Switch语句是多分支选择语句 在分类运算中 经常用到 switch 表达式 case常量表达式1 语句1 break case常量表达式2 语句2 break case常量表达式n 语句n break default 语句n 1 break 可不加break 2 执行过程 3 说明 E1 E2 En是常量表达式 且值必须互不相同 以case中的常量表达式值为入口标号 由此开始顺序执行 因此 每个case分支最后应该加break语句 case后可包含多个可执行语句 且不必加 switch可嵌套 多个case可共用一组执行语句 switch后面的表达式可以是整型 字符型或枚举类型表达式 例 case A case B case C printf score 60 n break 例 switch score case5 printf Verygood case4 printf Good case3 printf Pass case2 printf Fail default printf dataerror 运行结果 score为5时 输出 Verygood Good Pass Fail dataerror 例 main intx 1 y 0 a 0 b 0 switch x case1 switch y case0 a break case1 b break case2 a b break case3 a b printf na d b d a b 运行结果 a 2 b 1 例3 计算工资水平下的税率 注意用数值型和字符型表达式 多个case也可以执行同一组语句 3 3选择结构程序设计 main chara intb c printf 1 Pleaseinputthesalarylevel n printf Between1to4 whichischartype n scanf c scanf d scanf d multi case1 3 sharewiththecase3 多个case可以共用一组执行语句 均扣3 的税 例4 switch语句练习示例 main floatx y 文件名sw1 c charo doubler scanf f f c 运行时输入 35 运行结果为 0 600000 includemain intx y printf Enteraninteger scanf d 运行 Enteraninteger 12 integer 12 absolutevalue 12 例5 求一个数的绝对值 includemain inta b printf Enterintegera scanf d 运行 Enterintegera 12 Enterintegerb 12 a b 运行 Enterintegera 12 Enterintegerb 9 a b 例6 输入两个数并判断两数相等否 includemain charc printf Enteracharacter c getchar if c 0 运行 Enteracharacter Thecharacterisacontrolcharacter 运行 Enteracharacter 8 Thecharacterisadigit 运行 Enteracharacter D Thecharacterisacapitalletter 运行 Enteracharacter h Thecharacterisalowerletter 运行 Enteracharacter F1 Thecharacterisothercharacter 例7 判断输入字符种类 includemain intx y printf Enterintegerx y scanf d d 运行 Enterintegerx y 12 23

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论