C语言第4章选择结构程序设计.ppt

上传人:max****ui 文档编号:6328791 上传时间:2020-02-22 格式:PPT 页数:37 大小:352.31KB
返回 下载 相关 举报
C语言第4章选择结构程序设计.ppt_第1页
第1页 / 共37页
C语言第4章选择结构程序设计.ppt_第2页
第2页 / 共37页
C语言第4章选择结构程序设计.ppt_第3页
第3页 / 共37页
点击查看更多>>
资源描述
第4章选择结构程序设计 4 1关系运算符与关系表达式4 2逻辑运算符和逻辑表达式4 3if语句4 4switch语句4 5选择程序设计实例 关系运算符 1 关系运算符的运算对象 规则与结果 结合性如下表所示 2 关系运算符的优先级 算术运算符优先于关系运算符 优先于 同级 结合性是自左向右 同级 结合性是自左向右 3 关系运算符的使用实例 设变量定义如下 charc1 a c2 A c1 c2可看成整型 其值为97 65 intn1 65 n2 97 floatf1 0 3E1 f2 3 0001 则 c1 c2 n1 n2 f1 f2的值依次是1 0 0 c1 n1 c2 n2 c1 n2的值依次是1 0 1 f1 c1 f2 c2 f1 n1 62的值依次是0 1 1 c1 c2 1c2 n1 n2 f1 f2的值是1 关系表达式 用关系运算符将两个表达式 可以是算术表达式或关系表达式 逻辑表达式 字符表达式 连接起来的式子 称关系表达式 例如 下面都是合法的关系表达式 a b a b b c a 3 b 5 a b a b b c 关系表达式的值是一个逻辑值 即 真 或 假 例如 关系表达式 5 3 的值为 假 5 0 的值为 真 C语言没有逻辑型数据 以1代表 真 以 0 代表 假 例如 a 3 b 2 c 1 则 关系表达式 a b 的值为 真 表达式的值为1 关系表达式 a b c 的值为 真 因为a b的值为1 等于c的值 表达式的值为1 关系表达式 b c a 的值为 假 表达式的值为0 如果有以下赋值表达式 d a bd的值为1 f a b cf的值为0 因为 运算符是自左至右的结合方向 先执行 a b 得值为1 再执行关系运算 1 c 得值0 赋给f 逻辑运算符 逻辑运算符是对两个关系式或逻辑值进行运算的 运算结果仍是逻辑值 在C语言中 逻辑值用数值非0和0来表示逻辑真和假的 所以逻辑运算符也可以对两个数值型数据进行运算 包括整型 实型 字符型等数据 1 逻辑运算符 2 运算规则 3 逻辑运算符的优先级 优先于双目算术运算符优先于关系运算符优先于 优先于 和单目算术运算符式同级别的 结合性是自右向左 双目逻辑运算符的结合性是自左向右 逻辑表达式 逻辑表达式的值应该是一个逻辑量 真 或 假 c语言编译系统在给出逻辑运算结果时 以数值1代表 真 以0代表 假 但在判断一个量是否为 真 时 以0代表 假 以非0代表 真 即将一个非零的数值认作为 真 例如 若a 4 则 a的值为0 2 若a 4 b 5 则a b的值为1 3 a b值同前 a b的值为1 4 4 0 2的值为1 特别注意 1 用 对两个表达式进行计算时 若第一个表达式的值为 假 则运算结果与第二个表达式的值无关 结果肯定为假 所以C语言规定此时第二个表达式将不再计算 用 对两个表达式进行计算时 若第一个表达式的值为 真 则运算结果与第二个表达式的值无关 结果肯定为 真 所以C语言规定此时第二个表达式也不再计算 4 逻辑运算符的使用例子 设变量定义如下 charc1 a c2 A intn1 65 n2 97 floatf1 3 0 f2 3 0001 则 c1的值时0 n1 n2的值是1 f1 f2的值是1 c2 c1 的值是1 c2 c1的值是0 f1 f2 c1的值是0 n1 32 n2 n1 c2的值是1 if语句 1 if语句的三种形式 1 if 表达式 语句例如 if x y printf d x 这种if语句的执行过程如图 2 if 表达式 语句1else语句2 例如 if x y printf d x elseprintf d y 3 if 表达式 语句1elseif 表达式2 语句2elseif 表达式3 语句3 elseif 表达式m 语句melse语句n 4 说明 三种形式的if语句中在if后面都有 表达式 一般为逻辑表达式或关系表式 例如 if a b x y printf a b x y 在执行if语句时先对表达式求解 若表达式的值为0 按 假 处理 若表达式的值为非0 按 真 处理 执行指定的语句 假如有以下if语句 if 3 printf O K 是合法的 执行结果输出 O K 因为表达式的值为3 按 真 处理 由此可见 表达式的类型不限于逻辑表达式 可以是任意的数值类型 包括整型 实型 字符型 指针型数据 第二 第三种形式的if语句中 在每个else前面有一分号 整个语句结束处有一分号 例如 if x 0 print f x elseprintf f x 各有一个分号 这是由于分号是C语言中不可缺少的部分 这个分号是if语句中的内嵌语所要求的 如果无此分号 则出现语法错误 else子句不能作为语句单独使用它必须是if语句的一部分与if配对使用 在if和else后面可以只含一个内嵌的操作语句 如上例 也可以有多个操作语句 此时用花括号 将几个语句括起来成为一个复合语句 5 例 输入两个实数 按其由小到大的次序输出这两个数 程序如下 main floata b t scanf f f 运行情况如下 3 6 3 2 3 20 3 60 例4 1设计程序 划分学生的成绩优 良 及格 不及格 输入成绩 输出等级 include stdio h main intscore chargrade scanf d 例4 2输入三个整数 按从小到大的顺序输出 include stdio h main inta b c t scanf d d d 2 嵌套的if语句 在if 语句1else语句2中 其中语句1 语句2本身又可以是if语句 从而构成了嵌套的if语句 C规定 else也必须与最近的if相匹配 例1 if if 语句1 else语句2 elseif 语句3 有以下几个程序 请判断哪个是正确的 程序1 main intx y scanf d 程序2 将上面程序的if语句 第4 6行 改为 if x 0 if x 0 y 1 elsey 0 elsey 1 程序3 将上述if语句改为 y 1 if x 0 if x 0 y 1 elsey 0 程序4 y 0 if x 0 if x 0 y 1 elsey 1 只有程序1和程序2是正确的 switch语句 1 switch的一般形式 switch 表达式 case常量表达式1 语句1case常量表达式2 语句2 case常量表达式n 语句ndefault 语句n 1 例4 4根据输入的百分制成绩 转换成相应的等级 include stdio h main intscore mark printf 请输入成绩 n scanf d case5 case4 case3 case2 case1 case0 printf d E n score break 2 关于switch的说明 1 switch后面括弧内的 表达式 ANSI标准允许它为任何类型 2 当表达式的值与某一个case后面的常量表达式的值相等时 就执行此case后面的语句 若所有的case中的常量表达式的值都没有与表达式的值匹配的 就执行default后面的语句 3 每一个case的常量表达式的值必须互不相同 否则就会出现互相矛盾的现象 4 各个case和default的出现次序不影响执行结果 5 执行完一个case后面的语句后 流程控制转移到下一个case继续执行 case常量表达式 只是起语句标号作用 并不是在该处进行条件判断 在执行switch语句时 根据switch后面表达式的值找到匹配的入口标号 就从此标号开始执行下去 不再进行判断 因此 应该在执行一个case分支后 使流程跳出switch结构 即终止switch语句的执行 可以用一个break语句来达到此目的 选择结构是结构化程序设计中的三种基本结构之一 在大多数程序中都会包含选择结构 它的作用是 根据所指定的条件是否满足 决定从给定的两组或多组操作选择其一 选择程序设计举例 写程序 判断某一年是否是闰年 以变量leap代表是否闰年的信息 若闰年 令leap 1 非闰年 leap 0 最后判断leap是否为1 真 若是 则输出 闰年 信息 编写程序如下 main intyear leap scanf d elseprintf disnot year printf aleapyear n 运行情况如下 1989 1989isnotaleapyear 2000 2000isaleapyear 可以将程序中第5 13行改写成以下的if语句 if year 4 0 leap 0 elseif year 100 0 leap 1 elseif year 400 0 leap 0 elseleap 1 也可以用一个逻辑表达式包含所有的闰年条件 将上述if语句用下面的if语句代替 if year 4 0 写程序 运输公司对用户计算运费 路程 s 越远 每公里运费越低 标准如下 S 250km没有折扣250 S 5002 折扣500 S 10005 折扣1000 S 20008 折扣2000 S 300010 折扣3000 S15 折扣 0 2 4 6 8 10 12 250 500 750 1000 1250 2000 3000 14 16 设每公里每吨货物的基本运费为p 货物重为w 距离为s 折扣为d 则总运费f的计算公式为f p w s 1 d main intc s floatp w d f scanf f f d elsec s 250switch c case0 d 0 break case1 d 2 break case2 case3 d 5 break case4 case5 case6 case7 d 8 break case8 case9 case10 case11 d 10 break case12 d 15 break f p w s 1 d 100 0 printf freight 15 4f f
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


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