




已阅读5页,还剩70页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1 计算机程序设计基础 2 第5章程序控制结构 学习目标了解结构化程序设计的一般概念熟悉顺序结构 分支结构与循环结构等三种程序流程控制结构掌握C语言实现分支结构的if语句与switch语句 能熟练应用if语句与switch语句编写程序掌握C语言实现循环结构的while语句 for语句与do while语句 能熟练应用这三种循环控制结构编写程序了解三种循环结构的关系 掌握在循环结构中控制程序流程转移的方法 3 关系运算符和表达式关系运算符种类 结合方向 自左向右优先级别 例c a b c a b a b c a b ca bc a b c 关系表达式的值 是逻辑值 真 或 假 用1和0表示 例inta 3 b 2 c 1 d f a b a b cb cbf a b c 表达式值1 表达式值1 表达式值0 d 1 f 0 4 关系运算注意 例若a 0 b 0 5 x 0 3 则a x b的值为 0 例5 2 7 8在C中是允许的 值为 0 例inti 1 j 7 a a i j 4 0 则a 2 例 a 0结果为 A 100结果为 1 0 5 关系运算注意 例注意区分 与 inta 0 b 1 if a b printf aequaltob elseprintf anotequaltob 例应避免对实数作相等或不等的判断如1 0 3 0 3 0 1 0结果为可改写为 fabs 1 0 3 0 3 0 1 0 1e 6 0 6 逻辑运算符和表达式逻辑运算符种类 逻辑运算真值表 C语言中 运算量 0表示 假 非0表示 真 运算结果 0表示 假 1表示 真 7 例ab x ya b x y a a b 优先级 结合方向 a x x b a b x y a b x y a a b 8 优先级 结合方向 例a 4 b 5 aa ba b a b4 0 25 3 2 8 4 0 c d 值为1 值为0 值为1 值为1 值为1 值为1 5 3 2 8 4 0 值为1 9 逻辑运算符的运算优先级 1 逻辑非的优先级最高 逻辑与次之 逻辑或最低 即 非 与 或 2 与其它种类运算符的优先关系 算术运算 关系运算 位运算 赋值运算练习 6 0 10 优先级 结合方向 短路特性 逻辑表达式求解时 并非所有的逻辑运算符都被执行 只是在必须执行下一个逻辑运算符才能求出表达式的解时 才执行该运算符 例a m a b n c d 结果m 0 n 1 11 逻辑表达式1 逻辑表达式的概念逻辑表达式是指 用逻辑运算符将1个或多个表达式连接起来 进行逻辑运算的式子 在C语言中 用逻辑表达式表示多个条件的组合 12 逻辑表达式的值也是一个逻辑值 非 真 即 假 2 逻辑量的真假判定 和非 语言用整数 表示 逻辑真 用 表示 逻辑假 但在判断一个数据的 真 或 假 时 却以 和非 为根据 如果为 则判定为 逻辑假 如果为非 包括负数 则判定为 逻辑真 如0 00000为假 0 0000001 0 0001 2为真例如 假设num 12 则 num的值 num 1 num31的值 1 3 说明 1 逻辑运算符两侧的操作数 除可以是 和非 的整数外 也可以是其它任何类型的数据 如实型 字符型等 13 2 在计算逻辑表达式时 只有在必须执行下一个表达式才能求解时 才求解该表达式 即并不是所有的表达式都被求解 即 1 对于逻辑与运算 如果第一个操作数被判定为 假 系统不再判定或求解第二操作数 2 对于逻辑或运算 如果第一个操作数被判定为 真 系统不再判定或求解第二操作数 例1假设n1 n2 n3 n4 x y的值分别为1 2 3 4 1 1 则求解表达式 x n1 n2 y n3 n4 后 x的值变为 而y的值不变 仍等于1 例2 X等价于 X 0 思考 判断x是否等价于判断x 0 14 关于优先级 举例 x y z等价 x y zx yy z等价 x y zz x y等价 z x y x y z等价 x y z a 1 b不等价于a 1 bc1 c2 c3 不等价于c1 c2 c3 15 Exercise 若变量c为char类型 能正确判断出c为小写字母的表达式是A a a c c D c a c z d 16 练习 设有如下定义 intx l y 1 则语句 printf d n x y 的输出结果是 A 1B 0C 1D 2当c的值不为0时 在下列选项中能正确将c的值赋给变量a b的是 A c b a B a c b c C a c b c D a c b 在后 取1 在前 取0 结果为B 变量c不为0 B只执行a c 结果为C 17 练习 有以下程序 include stdio h main inta b c 246 a c 100 9 b 1 输出结果是A 2 1B 3 2C 4 3D 2 1 246 100 2 2 9 2b 1 结果为A 18 条件运算符1 一般格式 表达式1 表达式2 表达式3条件表达式中的 表达式1 表达式2 表达式3 的类型 可以各不相同 2 运算规则如果 表达式1 的值为非0 即逻辑真 则运算结果等于 表达式2 的值 否则 运算结果等于 表达式3 的值 如图所示 19 3 运算符的优先级与结合性条件运算符的优先级 高于赋值运算符 但低于关系运算符和算术运算符 其结合性为 从右到左 例如 若a 5 b 6 c 7 d 8 求表达式a b a c d c d的值求解过程 该表达式可改写为a b a c d c d 值为8eg intp 30 printf d n p 3 0 P 10 p 3 P 3 10非0 取P 10 结果为3 0 取d 8 20 练习 设a 1 b 2 c 3 d 4 则表达式 a b a c d a d的结果为 A 4B 3C 2D 1 右结合 c d成立 取a的值 1 a b成立 取a的值 1 结果为D 21 以下程序的输出结果是main inta 5 b 4 c 6 d printf d n d a b a c a c b a 5b 4c 6d 不确定 条件运算高于赋值 a大于c为0 取c的值为6 a大于b为1 取 a c a c 的值即6 答案 C 22 练习 若已定义inta 25 b 14 c 19 以下三目运算符 所构成的语句的执行结果是 a 25 a 25成立 a为26 b小于2不成立 b为13c 不执行 结果为 a 26 b 13 c 19 23 例 从键盘上输入一个字符 如果它是大写字母 则把它转换成小写字母输出 否则 直接输出 include stdio h main charch printf Inputacharacter scanf c 24 对几种运算符优先级别的归纳 初等运算符 包括 等 单目运算符 右 类型 算术运算符 先 后 关系运算符 级别较低 位运算逻辑运算符 不包括 高于 条件运算符 右 赋值运算符 右 等等 逗号运算符 25 例1 在下列各组运算符中 优先级别最高的是 A B C D A B C 类型 d A B C D A B C D B C C D 26 以下程序的输出结果为 main inti j k a 3 b 2 i a b a b j a k b printf i d j d k d n i j k a 前置 a的值为2 b 后置 取b的值2 所以 a b 为 真 取表达式 a 因此i的值为1 a的值为1 b的值为3 后置 j的值为1 k的值为3 27 能满足x在 10 10 100 110 时为 真 否则为 假 的表达式是 a 10 x 10 100 x 110 b x 10 x 110 c x 10 x 100 x 10 x100 x 110 正确答案为 B D Why test当x大于10 28 以下程序的输出结果是main inta 4 b 5 c 0 d d a A 1B 0C 非0的数D 1 A 29 C语言结构化程序设计基础 程序的控制结构 黑箱 单入口单出口的控制结构易于理解三种基本控制结构 顺序 分支 循环控制结构可以嵌套 以构成更复杂的控制结构程序的结构化三种基本控制结构可以构造任何复杂的结构化算法结构化程序设计原则 自顶向下 逐步求精结构化程序设计过程 首先对任务进行功能分解 然后使用结构化程序设计思想逐一解决各个子问题 最后构造原始问题的解好处 逻辑性强 可读性好 维护方便 30 顺序结构 顺序结构的含义由一组顺序执行的处理块组成 每个处理块可能包含一条或一组语句 完成一项任务顺序结构是最基本的算法结构 语句与复合语句 语句块 三种语句结构 单语句 表达式 空语句 复合语句 语句序列 31 顺序结构程序示例 分别输入两个复数的实部与虚部 计算两个复数的和 差 积 商并输出结果 includeintmain floata b c d real imaginary printf Inputrealsandimaginariesoftwocomplexes n scanf f f f f 实际需要输入4个实数 32 分支结构 分支结构 选择结构 的含义根据某一条件的判断结果 确定程序的流程 即选择哪一个程序分支中的处理块去执行最基本的分支结构是二路分支结构 以条件判断为起点 如果判断结果为真 则执行A处理块的操作 否则执行B处理块的操作 33 if语句两种形式 形式一 if 表达式 语句 形式二 if 表达式 语句1 else语句2 表达式后没有分号 否则语句部分是一条空语句 34 使用时注意 1 if后面的表达式不限于是关系表达式或逻辑表达式 可以是任意表达式 如整型 实型 字符型等 只要能做出 真 假 判断即可 2 if语句中的 表达式 必须用 和 括起来 3 else子句 可选 是if语句的一部分 必须与if配对使用 不能单独使用 35 5 当if和else下面的语句组 仅由一条语句构成时 也可不使用复合语句形式 即去掉花括号 6 if语句中可以嵌套使用if语句 但嵌套的层数不宜太多 在实际编程时 应适当控制嵌套层数 2 3层 在嵌套的if语句中else子句与最近的 不带else的if相结合 最近配对原则 if if if 语句1 if 语句1 else语句2 else语句2 为明确匹配关系 避免匹配错误 强烈建议 将内嵌的if语句 一律用花括号括起来 36 格式一 if if 语句1else语句2elseif 语句3else语句4 格式二 if if 语句1 elseif 语句2else语句3 注意if与else的配对关系 37 if else语句示例一 输入一个字符 判断它是否为0 9之间的数字 includeintmain charc printf Inputacharacter c getchar if c 48 因 字符以ASCII码值存储且数字的ASCII码值48 57故 比较ASCII码值 38 if else语句示例二 输入一个整数 输出其绝对值 includeintmain intn abs printf Enterinteger scanf d 39 条件分支嵌套示例 求方程ax2 bx c 0的根 include include 由于用到平方根函数 要用此头文件intmain floata b c x1 x2 p q m 定义实型变量printf Enter3coefficients scanf f f f 40 条件分支嵌套示例 if m 0 解实根x1 b sqrt m 2 0 a x2 b sqrt m 2 0 a printf x1 f n x1 输出两个实根printf x2 f n x2 else 解虚根p b 2 0 a q sqrt m 2 0 a printf x1 f fi n p q printf x2 f fi n p q return0 41 练习 练习200304 12 有以下程序main inti 1 j 1 k 2 if j k 执行后输出结果是a 1 1 2b 2 2 1c 2 2 2d 2 2 3 C k 未执行 42 练习 若执行以下程序时从键盘上输入9 则输出结果是a 11b 10c 9d 8main0 intn scanf d B 执行IF条件 43 练习 有如下程序main0 inta 2 b 1 c 2 if a b if b 0 c 0 elsec printf d n c 该程序的输出结果是a 0b 1c 2d 3 C分析 不执行C 0和C 注意else和最近的if配对 44 练习 以下程序的输出结果是 A 11B 01C 10D 00main inta 1 b 1 k if a 0 b 0 printf d d n a b elseprintf d d n b a C分析 前置 a为0 a 0不成立 b 不执行 直接执行else 运行后a 0 b 1 45 练习 有如下程序段inta 14 b 15 x charc A x a执行该程序段后 x的值为A tureB falseC 0D 1 D 46 练习 以下程序运行后的输出结果是 main inta 1 b 3 c 5 if c a b printf yes n elseprintf no n 答案为 yes注意c a b c值为4非0不是c a b 47 练习 若有以下程序main intp a 5 if p a 0 printf d n p elseprintf d n p 2 执行后输出结果是 结果是1分析 首先判断a 0是否成立a 0值为1 p 1 再判断p为真 执行if语句 48 Exercise 假定所有变量均已正确说明 下列程序段运行后x的值是 a b c 0 x 35 if a x elseif b if c x 3 elsex 4 a 34b 4c 35d 3 a 1 执行x x 34 c 0 执行elsex 4 答案为B 49 Exercise 以下两条if语句可合并成一条if语句为 if ab printf y d n y elseprintf x n x if a b x 1 printf x d n x else y 2 printf y d n y 50 Exercise 有如下程序main0 floatx 2 0 y if x 0 0 y 0 0 elseif x 10 0 y 1 0 x elsey 1 0 printf f n y 该程序的输出结果是A 0 000000B 0 250000C 0 500000D 1 000000 C 执行if x 10 0 思考 若Y 1 X 51 课后练习 1 若有定义 inta 10 b 9 c 8 接着顺序执行下列语句后 变量b中的值是 c a b 5 c a 11 b 3 2 有如下程序main0 inty 3 x 3 z 1 printf d d n x y z 2 该程序的输出结果 52 switch语句形式 switch 表达式 case常量表达式1 语句1 case常量表达式2 语句2 case常量表达式n 语句n default 语句n 1 表达式后没有 否则会出现错误 53 switch分支语法 计算过程先计算表达式的值依次与一组常量比较若相同则执行该分支否则转向default分支退出switch语句说明switch后面的表达式必须为整型 字符型或枚举型case后面必须为常量表达式 则各个case值必须不同case分支中的语句可以有多条 不需要花括号 switch 表达式 case常量表达式1 语句组1case常量表达式2 语句组2 case常量表达式n 语句组ndefault 语句组 54 使用注意 switch语句中可以不含default分支 default分支并不限定在最后 几个case分支没有顺序区别 但必须做适当处理 否则会影响执行结果 如果没有default子句 且没有case子句匹配 则不执行为了执行某个case分支后跳出switch结构 应在每个case分支后加上break语句 流程图如图所示 55 有break的情况 56 无break的情况 57 多个case可共用一组语句如 case a case b 语句 若没有default 当表达式的值与case一个都不合时 switch相当于一条空语句switch语句可以嵌套使用 58 程序举例根据考试成绩的等级打印出百分制分数段 A 等 85 100分 B 等 70 84分 C 等 60 69分 D 等 小于60分 其余分数均视为错误成绩 分析 成绩分为四等 用if语句实现程序较复杂 字符 a b c d 恰好是顺序型的数据 考虑用switch语句实现 59 两个程序两种结果程序1 main chargrade scanf c 运行结果 若输入 A输出为 85 10070 8460 69 60error 60 程序2 main chargrade scanf c 运行结果 若输入 A输出为 85 100 61 设计练习将下面的程序段用switch语句改写if s 60 m 1 elseif s 70 m 2 elseif s 80 m 3 elseif s 90 m 4 elseif s 100 m 5 分析 小于60 m 1 60 69 m 2 70 79 m 3 80 89 m 4 90 100 m 5 共同特点分析 60 69 十位数字为6 70 79 十位数字为7 80 89 十位数字为8 90 99 十位数字为9 62 程序段改写为 switch s 10 case6 m 2 break case7 m 3 break case8 m 4 break case9 case10 m 5 break default m 1 表达式s 10 恰好可以取出变量s的十位数字 分情况讨论后得到该程序段 63 switch分支示例 根据输入的成绩等级 打印是否通过信息 includeintmain chargrade printf Inputthegrade A B C D E scanf c 如果逻辑上确实如此 则不同的case分支可以使用同一个语句组 这也许是特意不在某些case分支中使用break的唯一正当理由 64 练习 若有以下定义和语句 intu 010 v 0 x10 w 10 printf d d d n u v w 则输出结果是 A 8 16 10B 10 10 10C 8 8 10D 8 10 10 A 65 练习 在以下一组运算符中 优先级最高的运算符是 A B C D C 66 练习 能正确表示a和b同时为正或同时为负的逻辑表达式是 A a 0 b 0 a 0 b 0 a0 a b0 D 67 参p57 43 若a b c1 c2 x y 均是整型变量 正确的switch语句是a switch a b b switch a a b b case1 y a b break case3 case0 y a b break case1 y a b break case3 y b a break c switchad switch a b casec1 y a b break default y a b break casec2 x a d break case3 case4 x a b break default x a b case10 case11 y a b break D CORRECT error c1 c2是变量 a没有括号 相同的LABEL3 68 有如下程序main0 intx 1 a 0 b 0 switch x case0 b case1 a case2 a b printf a d b d n a b 该程序的输出结果是A a 2 b 1B a 1 b 1C a 1 b 0D a 2 b 2 A 从case1开始执行2次a 一次b 69 练习 intn c switch n default printf error break cas
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 供应链管理风险评估与应对工具
- 服装技工考试题及答案
- 物流规划与成本优化工具介绍
- 春雨中的故事写景作文11篇
- 发酵工程考试题及答案
- 我的好友小李写人作文(12篇)
- 项目资金落实承诺书8篇
- (正式版)DB15∕T 3377-2024 《油莎豆脱脂粉生产加工技术规程》
- 农村生态旅游资源开发合作合同
- (正式版)DB15∕T 3260-2023 《河流湖泊代码》
- 第9课《天上有颗“南仁东星”》课件 2025-2026学年统编版八年级语文上册
- 早读的好处教学课件
- 人教版高一上学期数学(必修一)《1.3集合的基本运算》同步练习题及答案
- 大店童装开业活动方案
- 储冷培训课程
- 神经外科护理质量改善十佳案例
- 体育培训行业合伙协议书
- 农发行退休中人待遇新政
- 食品异物赔偿协议书
- 老年社会支持网络的构建与效果评估-全面剖析
- 学生午托安全管理制度
评论
0/150
提交评论