




已阅读5页,还剩35页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
一 关系运算符和表达式1 关系运算符在程序中经常需要比较两个量的大小关系 以决定程序下一步的工作 比较两个量的运算符称为关系运算符 在 语言中有以下关系运算符 大于 大于或等于 等于 不等于关系运算符都是双目运算符 其结合性均为左结合 关系运算符的优先级低于算术运算符 高于赋值运算符 在六个关系运算符中 的优先级相同 高于 和 和 的优先级相同 第五章选择结构程序设计 2 关系表达式关系表达式的一般形式为 表达式关系运算符表达式例如 a b c d x 3 2 a 1 b c a c d 等 关系表达式的值是 真 和 假 用 1 和 0 表示 如 5 0的值为 真 即为1 a 3 b 5 由于3 5不成立 故其值为假 即为0 includemain charc k inti 1 j 2 k 3 floatx 3e 5 y 0 85 printf d d n a 5 k 1 printf d d n 1 j 5 x 5 25 x y printf d d n i j k 2 j k j i 5 在本例中求出了各种关系运算符的值 字符变量是以它对应的ASCII码参与运算的 对于含多个关系运算符的表达式 如k j i 5 根据运算符的左结合性 先计算k j 该式不成立 其值为0 再计算0 i 5 也不成立 故表达式值为0 1 逻辑运算符 语言中提供了三种逻辑运算符 与运算 或运算 非运算与运算符 和或运算符 均为双目运算符 具有左结合性 非运算符 为单目运算符 具有右结合性 逻辑运算符和其它运算符优先级的关系可表示如课本中 图5 2所示 按照运算符的优先顺序可以得出 a b c d等价于 a b c d b c dc x yc x y b 二 逻辑运算符和表达式 2 逻辑运算的值逻辑运算的值也为 真 和 假 两种 用 1 和 0 来表示 其求值规则如下 1 与运算 参与运算的两个量都为真时 结果才为真 否则为假 例如 5 0 4 2由于5 0为真 4 2也为真 结果为真 加速法则 若0 x 则x不进行运算 2 或运算 参与运算的两个量只要有一个为真 结果就为真 两个量都为假时 结果为假 例如 5 0 5 8 由于5 0为真 结果也就为真 加速法则 若1 x 则x不进行运算 3 非运算 参与运算量为真时 结果为假 参与运算量为假时 结果为真 例如 5 0 的结果为假 虽然 编译在给出逻辑运算值时 以 1 代表 真 0 代表 假 但反过来在判断一个量是为 真 还是为 假 时 以 0 代表 假 以非 0 的数值作为 真 例如 由于5和3均为非 0 因此5 3的值为 真 即为1 又如 5 0的值为 真 即为1 3 逻辑表达式逻辑表达式的一般形式为 表达式逻辑运算符表达式其中的表达式可以又是逻辑表达式 从而组成了嵌套的情形 例如 a b c根据逻辑运算符的左结合性 上式也可写为 a b c逻辑表达式的值是式中各种逻辑运算的最后值 以 1 和 0 分别代表 真 和 假 includemain charc k inti 1 j 2 k 3 floatx 3e 5 y 0 85 printf d d n x y x printf d d n x i 本例中 x和 y分别为0 x y也为0 故其输出值为0 由于x为非0 故 x的逻辑值为0 对x i j 3式 先计算j 3的值为非0 再求i j 3的逻辑值为1 故x i j 3的逻辑值为1 对i j x y式 由于i j的值为1 而x y为0 故表达式的值为1 0相与 最后为0 对i 5 c j 8 式 由于i 5为假 即值为0 该表达式由两个与运算组成 所以整个表达式的值为0 对于式x y i j k由于x y的值为非0 故整个或表达式的值为1 4 2单分支和双分支选择结构程序设计4 2 1简单if语句 if 表达式 语句 条件语句用if语句可以构成分支结构 它根据给定的条件进行判断 以决定执行某个分支程序段 语言的if语句有三种基本形式 1 第一种形式为基本形式if 表达式 语句 其语义是 如果表达式的值为真 则执行其后的语句 否则不执行该语句 includemain inta b max printf ninputtwonumbers scanf d d 例 main inta b max printf ninputtwonumbers scanf d d 4 2 2if else语句 if 表达式 语句1 else 语句2 2 第二种形式为if else形式if 表达式 语句1 else语句2 其语义是 如果表达式的值为真 则执行语句1 否则执行语句2 3 第三种形式为if else if形式前二种形式的if语句一般都用于两个分支的情况 当有多个分支选择时 可采用if else if语句 其一般形式为 if 表达式1 语句1 elseif 表达式2 语句2 elseif 表达式3 语句3 elseif 表达式m 语句m else语句n 其语义是 依次判断表达式的值 当出现某个值为真时 则执行其对应的语句 然后跳到整个if语句之外继续执行程序 如果所有的表达式均为假 则执行语句n 然后继续执行后续程序 includemain charc printf inputacharacter c getchar if c 0 根据输入字符的ASCII码来判别键盘输入字符的类别 由ASCII码表可知ASCII值小于32的为控制字符 在 0 和 9 之间的为数字 在 A 和 Z 之间为大写字母 在 a 和 z 之间为小写字母 其余则为其它字符 4 在使用if语句中还应注意以下问题 1 在三种形式的if语句中 在if关键字之后均为表达式 该表达式通常是逻辑表达式或关系表达式 但也可以是其它表达式 如赋值表达式等 甚至也可以是一个变量 例如 if a 5 语句 if b 语句 都是允许的 只要表达式的值为非0 即为 真 如在if a 5 中表达式的值永远为非0 所以其后的语句总是要执行的 当然这种情况在程序中不一定会出现 但在语法上是合法的 又如 有程序段 if a b printf d a elseprintf a 0 本语句的语义是 把b值赋予a 如为非0则输出该值 否则输出 a 0 字符串 这种用法在程序中是经常出现的 2 在if语句中 条件判断表达式必须用括号括起来 在语句之后必须加分号 3 在if语句的三种形式中 所有的语句应为单个语句 如果要想在满足条件时执行一组 多个 语句 则必须把这一组语句用 括起来组成一个复合语句 但要注意的是在 之后不能再加分号 例如 if a b a b else a 0 b 10 5 语句的嵌套当if语句中的执行语句又是if语句时 则构成了if语句嵌套的情形 其一般形式可表示如下 if 表达式 if语句 或者为if 表达式 if语句 elseif语句 在嵌套内的if语句可能又是if else型的 这将会出现多个if和多个else重叠的情况 这时要特别注意if和else的配对问题 例如 if 表达式1 if 表达式2 语句1 else语句2 应该理解为 还是应理解为 if 表达式1 if 表达式1 if 表达式2 if 表达式2 语句1 语句1 else语句2 else语句2 为了避免这种二义性 语言规定 else总是与它前面最近的if配对 因此对上述例子应按前一种情况理解 includemain inta b printf pleaseinputA B scanf d d 本例中用了if语句的嵌套结构 采用嵌套结构实质上是为了进行多分支选择 实际上有三种选择即A B A B或A B 这种问题用if else if语句也可以完成 而且程序更加清晰 因此 在一般情况下较少使用if语句的嵌套结构 以使程序更便于阅读理解 小结if条件语句一 条件语句的一般形式为 真if 表达式 语句1 else语句2 语句 语句 表达式 假 例 求任一实数的绝对值 include stdio h main doublex xabs printf inputadata scanf lf 注意 1 if语句中 else语句2 部分可以缺省 此时 if语句变成 if 表达式 语句1 2 如果语句1或语句2有多于一条语句要执行时 必须使用 和 把这些语句括起来成为一个复合语句 所谓表达式一般是关系表达式和逻辑表达式的结合式 也可为任意类型表达式 if语句可以嵌套例如 if x 20 xx printf Good elseprintf Bad C规定 else语句与它最近的一个if配对 若为了使else与if x 20 x20 xx printf Good elseprintf Bad 可用阶梯式if else if结构来实现多种条件的选择阶梯式结构的一般形式为 if 表达式1 语句1 elseif 表达式2 语句2 elseif 表达式3 语句3 else语句n 这种结构是从上到下逐个对条件进行判断 一旦发现条件满足就执行与它有关的语句 并跳过其它剩余阶梯 若没有一个条件满足 则执行最后一个else语句n 最后这个else常起着 缺省条件 的作用 四 条件运算符和条件表达式1 条件运算符 是C语言唯一的一个三目运算符 其功能为 若在If语句中 无论条件表达式为真或为假 均是用赋值语句对同一个变量赋值时 可用条件运算符处理 即 if a b max a elsemax b 等价于max a b a b 2 条件表达式一般形式是 求值过程是 先求表达式1的值 若为真 则求表达式2的值并把它作为整个表达式的值 若表达式1的值为假 则求表达式3的值并把它作为整个表达式的值 3 说明 条件运算符的优先级 算术运算符关系运算符条件运算符赋值运算符 高 低 max a b a b 与max a b a b 等价 y a b a b 1 与y a b a b 1 等价 2 条件运算符的结合性 自右向左 例 a 1 b 2 c 3 d 4 则条件表达式a b a c d c d的值为4 3 条件表达式不能取代一般的if语句 只能取代if语句中特殊的一种 例 if a b printf d a elseprintf d b 可用printf d a b a b 取代 条件表达式中 表达式 的类型可与表达式 及 不同 表达式 和表达式 的类型也可不同 而条件表达式值的类型取表达式 和 中的较高者 例 intx y x a b 值为字符型x y 1 1 5值为实型 例 求a b c中的绝对值最大的数 include includemain floata b c max printf inputthreedata n scanf f f f 一般形式为 switch 表达式 case常量表达式1 语句1或空 case常量表达式2 语句2或空 case常量表达式n 语句n或空 default 语句n 1或空 说明 1 执行switch语句时 将表达式的值逐个与case后的常量进行比较 若与其中一个相等 则执行该常量下的语句 若不与任何一个常量相等 则执行default后面的语句 五 switch语句 2 switch中表达式与case后的常量可为任何类型 3 每一个case后常量表达式的值必须互不相同 否则出现矛盾 4 每个case或default后的语句可以是复合语句 但不需要使用 和 括起来 执行完一个case后面语句后 流程控制转移到下一个case继续执行 因此 若想在不同情况下执行不同的语句 必须使用break语句 break语句的功能 将程序流程控制跳出整个switch语句 执行switch语句的下一条语句 switch grade case A printf 85 100 n break case B printf 70 84 n break case C printf 60 69 n break case D printf 60 n break default printf Error n 6 多个case可共用一组执行语句 例 case A case B case C printf 60 n break 例 选择结构程序设计举例 例 将任意三个整数按从大到小的顺序输出 include stdio h voidmain intx y z t scanf d d d 例 给一个不多于4位的正整数 求出它是几位数 逆序打印出各位数字 include stdio h voidmain intx a b c d a b c d代表千位 百位 十位 个位 scanf d 例 任意输入三个数 判断能否构成三角形 若能构成三角形 是等边三角形 等腰三角形还是其它三角形 include stdio h void
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 教师招聘之《小学教师招聘》题库附参考答案详解【综合题】
- 2025年教师招聘之《幼儿教师招聘》试题附参考答案详解(夺分金卷)
- 2025年新版《医疗器械监督管理条例》考核试题题库(含答案解析)
- 教师招聘之《幼儿教师招聘》全真模拟模拟题附答案详解【模拟题】
- 教师招聘之《小学教师招聘》练习题(一)及答案详解(典优)
- 2025内蒙古呼伦贝尔职业技术学院招聘30人笔试备考及答案详解一套
- 2025年教师招聘之《小学教师招聘》考试题库(含答案详解)
- 教师招聘之《小学教师招聘》模拟题库带答案详解(a卷)
- 教师招聘之《小学教师招聘》考试黑钻押题含答案详解【达标题】
- 教师招聘之《小学教师招聘》考前冲刺练习【典型题】附答案详解
- 营造清朗空间+课件-2025-2026学年(统编版2024)道德与法治八年级上册
- saas货运管理办法
- excel操作考试题及答案
- 2025新疆生产建设兵团草湖项目区公安局面向社会招聘警务辅助人员考试参考试题及答案解析
- 2026届广东省广州市高三上学期8月调研考试语文试题(含答案)
- 江苏省南通市如皋市2025-2026学年高三上学期开学考试数学试卷
- 2025年高一语文开学第一课指导课件
- 2025年事业单位工勤技能-河北-河北计算机操作员二级(技师)历年参考题库含答案解析(5套)
- 社会资本测量方法-洞察及研究
- 无菌GMP基础知识培训课件
- 2025年江西省公安机关人民警察特殊职位招录考试(网络安全)历年参考题库含答案详解(5卷)
评论
0/150
提交评论