程序控制结构---选择结构.ppt_第1页
程序控制结构---选择结构.ppt_第2页
程序控制结构---选择结构.ppt_第3页
程序控制结构---选择结构.ppt_第4页
程序控制结构---选择结构.ppt_第5页
已阅读5页,还剩78页未读 继续免费阅读

下载本文档

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

文档简介

1 回顾 在计算机中对数据进行描述 数据的基本类型 整型 字符型 浮点类型 数据在在内存中的存储形式 取值范围和能够对它进行的操作 扩展基本类型 short long unsigned常量 各种整型常量的形式 字符常量 转义字符 符号常量 变量 定义格式 运算符 算术运算符 优先级 赋值运算符 与数学中的等号相区别 2 要求 深刻理解在计算机中各类型数据在内存中的存储形式 取值范围和能够对它进行的操作 深刻理解各基本类型作了short long unsigned扩展之后与原类型之间的区别 深刻理解各种整型常量的形式 字符常量 转义字符和符号常量的意义和作用 熟练掌握每一种变量的定义格式 深刻理解每一个算术运算符的功能 使用格式 计算结果 尤其是 深刻理解赋值运算符 的意义 注意与数学中的等号相区别 复合赋值运算符的执行过程和执行结果 练习 3 4 一 选择题 以下叙述中正确的是 a C程序由主函数组成 b C程序由函数组成 c C程序由函数和过程组成 d C程序由子函数组成 5 2 以下不能正确表示算式 的是 a a b c d b a b c d c a c b d d a b c d 解答 c语言中表达式的计算是按算符的优先级来进行的 6 3 以下的变量定义中合法的是 a float3 four 3 4 b int abc 22 c doublea 1 4e2 0 d shortdo 15 7 4 C语言中运算对象必须是整型的运算符是 a b c d 必须是整型 确切地说应该是不能是float型 8 5 若有intk 11 则表达式 k 1 3 的值是 a 0 b 3 c 11 d 12 执行过表达式后k的值是 12 二 填空 9 10 1 一个C程序必须有一个 函数一个C程序必定从 函数开始执行 主 主 11 2 C语言中的标识符可分为 和预定义标识符三类 关键字 用户标识符 预定义标识符 系统定义的 用于贬义预处理命令中的标识符 如 include define等 12 3 C语言程序中的数据 在计算机内存储器中最小的存储单位称为 其中只能存放 进制数 位 二 13 2 5数据的输出和输入 14 输出和输入 输出 计算机向外部输出设备 显示器 打印机等 输出数据输入 从输入设备 键盘 鼠标 扫描仪等 向计算机输入数据C语言本身不提供输入输出语句 输入和输出操作是由C函数库中的函数来实现的在使用系统库函数时 要用预编译命令 include 包含有关的头文件 include 标准输入输出库函数 15 格式输出函数printf printf函数一般格式 printf 格式控制 输出表列 格式控制是由双引号括起来的字符串 它包含三种信息 格式说明 由 和格式字符组成 如 d f等 它的作用是将输出的数据按照指定的格式输出 普通字符 需要原样输出的字符 转义字符 用于控制输出 输出表列是一些要输出的数据 printf d d n a b 16 格式说明项 由 与格式字符组成 其作用是将数据转换为指定的格式输出 按不同类型的数据有以下不同的格式字符 d ld 按整型数据的实际长度输出 md mld m为指定的输出字段的宽度 如数据的位数小于m 则左端补空 若数据位数大于m 则按实际长度输出 c 用于输出一个字符 f 用于以小数形式输出实数 包括单 双精度 m nf m nlf 指定输出的数据共占m位 其中包括n位小数 如数据的位数小于m 则左端补空 若数据位数大于m 按实际长度输出 小数位数被截断时按四舍五入输出 格式输出函数printf 17 inta 1 b 25 c 125 longx 356142 printf d 5d n a b printf 5d 2d n c c printf ld d n x x 输出结果为 例2 5 1 18 格式输入函数scanf scanf函数一般格式 scanf 格式控制 地址表列 scanf函数的功能是按照指定的格式输入数据 可以输入任意类型的多个数据 格式控制与printf函数含义相同 它由若干个格式说明构成 其作用是控制转换输入数据的类型 地址表列由若干个地址构成 它们可以是变量的地址 也可以是字符串的首地址 19 标准格式输入函数的功能 scanf函数可以从标准输入设备输入任意类型的多个数据 一般为键盘 存入指定的变量单元中 例 scanf d f a b 意味着从键盘读入两个数据 分别存入变量a和b中 d 按十进制整数格式读入 f 按十进制整数格式读入 20 格式输入函数 scanf中格式控制串的格式应与地址表列中变量的顺序相一致 scanf中格式控制串的格式应与输入数据的格式相一致 当语句格式如下时 scanf d f a b 输入数据的格式应为 12 3 14如果语句写成 scanf d f a b 输入数据的格式应为 123 14 思考 如何分隔数据 用隐含的分隔符 在输入数据中用空格或换行符分隔数据 scanf d d d 输入数据3 4 5则a 3 b 4 c 5 21 22 2 6数学函数 23 数学函数 使用数学库中的函数时 应该首先用预处理命令 include指明要用到的数学函数的描述所在的头文件 调用数学函数时 要给出函数名 后面是一对圆括号 括号内是使用函数所需的参数 参数可以是常量 变量或表达式 例2 6 1 计算并打印2的3次方的语句可以写成 printf 7 2f pow 2 0 3 0 调用的数学函数pow需要两个参数 这两个参数都是double型的 返回值也是double型的语句执行结果为 打印8 00 24 常用数学函数 25 第3章程序控制结构 26 教学目标 学习三种结构的程序设计方法顺序结构程序设计选择结构程序设计循环结构程序设计掌握每一种语句的格式 功能 执行过程和执行结果 并学习如何将这些语句组织成程序学习逻辑问题的解题思路 及递推 迭代的方法 27 三种控制结构 顺序结构 选择结构 循环结构 28 顺序结构程序设计 实现顺序结构的语句 顺序结构的程序中的语句是按照从上到下的顺序逐行排列的 程序的执行顺序是按语句的排列顺序进行的 完成顺序程序设计的语句包括 赋值语句复合语句函数调用语句 29 30 由一组语句组成 并放在一对花括号 中间 语句格式 第1条语句 第n条语句 复合语句 整个main程序就是一个大的复合语句 复合语句是一个整体 在语法结构上与一个单一语句相同 函数调用语句 C程序中 需要使用很多复杂的功能 例如 输入数据 输出数据 数学公式的使用 sin x cos x ex等 这些功能的使用是通过函数调用来实现的 系统把一些独立的功能编制成标准函数 提供给使用者调用的格式 两个最常用的标准函数 格式输出函数格式输入函数 31 32 例 设1990年我国工业产值是100 如果每年以7 4 的速度增长 求20年后我国的工业产值是多少 分析 计算产值的公式是 安排计算步骤写出完整的程序 p1 p0 1 r n其中 p1为n年后的产值 p0为初始值 r为增长率 n为年数 33 解决问题的步骤 定义变量 输入 p0 n r 计算p1 输出p1 float p1 p0 r p1 p0 1 r n其中 p1为n年后的产值 p0为初始值 r为增长率 n为年数 int n 34 写出完整程序 功能 计算工业产值 include includevoidmain intn floatp0 p1 r scanf d f f 35 选择结构程序设计 36 如果小明一分钟跳绳多于60 那么他的体育成绩为A 否则为B 引例 步骤图解 需要选择结构描述 37 选择结构需要解决的两个问题 2 控制结构的结构描述 条件表示描述方法 逻辑表达式 关系表达式 1 控制选择结构执行方向的条件表示 if语句 switch语句 实现选择结构的语句 38 关系表达式概念 用关系运算符将两个表达式 可以是算术表达式 关系表达式 赋值表达式或逻辑表达式 连接起来的式子 称为关系表达式 关系运算符 一 关系运算符和关系表达式 优先级 39 关系表达式的值为逻辑值 真 或 假 以1代表 真 以0代表 假 例 关系表达式 8 4 的值为 假 表达式的值为0 关系表达式 5 0 的值为 真 表达式的值为1 关系表达式 40 例3 1 a b c等价于 a b cc a b等价于c a b a b c等价于a b c 例3 2 inta 0 b 1 c 2 a c值为 a c b值为 结合性 从左向右 1 1 41 注意 1 编程过程中要区分单个等号 与双等号 进行比较时一定要用关系运算符 是赋值运算符2 避免将浮点变量用 或者 与任何数字比较 例3 3 floatx 3 26 If x 0 0 不要混淆 42 逻辑表达式概念 由逻辑运算符和运算量所构成的式子 其中运算量主要有关系表达式和逻辑量两种 也可以是C中任意合法表达式 逻辑运算符 二 逻辑运算符和逻辑表达式 逻辑或 逻辑与 逻辑非 优先级 结合性 从左向右 43 真真假假真真真假假真假真假真真假假真假假真真假假 ab a ba ba b 逻辑运算的真值表 44 注 1 C语言编译系统以数值1代表 真 以0代表 假 2 若逻辑运算符左右连接的不是逻辑量或关系表达式时 C语言编译系统以其值非0代表 真 以0代表 假 例3 4 若x 10 则 x的值为0 若a 3 b 2 则a b的值为1 5 0 8的值为1 45 逻辑运算符的特点 特点 在逻辑表达式的求解中并不是所有的运算符都被执行 只是在必须执行下一个逻辑运算符才能求出表达式的解时 才执行下一个运算符 例3 5 a b c只有a的值为逻辑真时 才计算b的值 也只有a与b的值都为逻辑真时 才计算c的值 例3 6 a b c只有a的值为逻辑假时 才计算b的值 也只有a与b的值都为逻辑假时 才计算c的值 46 例3 7 includevoidmain intx a 0 b 1 c 2 x a 二 逻辑运算符和逻辑表达式 x 0 a 0 b 1 c 2 等效于 a b c 思考 x a x 0 a 1 b 1 c 2 47 非 算术运算符关系运算符 赋值运算符 各种运算符优先级 例3 8 1 xc等效于 a b c 4 5 3 4 83 4 8 4 48 分析 a b的值为0 m a b 值为0 表达式 m a b n c d 的值为0运算就此结束 不再进行 n c d 的运算结果 m为0 n为1例3 10 假设a 5 b 10 c 15 d 20 求逻辑表达式的结果 a a b 1 cb 1 cb 1 c10 1 c d 0 0 1 c d 0 1 c d 0 1 15 20 0 1 1 0 1 1 例3 9 假设a 1 b 2 c 3 d 4 m 1 n 1 执行表达式 m a b n c d 后m和n的值各为多少 非 算术运算符关系运算符 赋值运算符 49 选择结构 if语句if语句 if else语句 else if语句switch语句 多分支语句 选择结构通过条件控制语句来实现 选择结构包括 if else结构和switch case结构 50 if else if 表达式1 语句1 elseif 表达式2 语句2 elseif 表达式m 语句m else语句n if 表达式 语句1 else语句2 else if if if 表达式 语句 if语句 51 if语句 if 表达式 语句 根据给定的条件进行判断 以决定执行某个分支程序段 表达式一般为逻辑表达式或关系表达式 也可以为其它表达式或变量 这时表达式值为非0值时表示 真 语句可以是单条语句 也可以是复合语句 语句块 组成 还可以是if语句 称if语句嵌套 复合语句 52 if形式 if 表达式 语句 计算表达式的值 如果表达式的值非零 则执行语句 如果表达式的值为零 则执行if语句后的一条语句 执行流程 53 例3 11 输出成绩高于90分的学生成绩和学号 格式 if score 90 printf s d n No score 执行过程 计算表达式score 90的值 如果表达式的值非零 即 score 90成立 则输出该学生的学号和成绩 如果表达式score 90的值为零 即 score 90不成立 则什么也不做 54 includevoidmain intn rem printf enteranumber scanf d 例3 12 判断一个数是偶数还是奇数 55 例3 13 输入两个数 按从大到小的顺序将它们输出 includevoidmain floata b t 定义三个变量a b tscanf f f a b 输入两个数到a b中if a b 如果a小于b 则将a的值与b的值交换 t a a b b t printf a 5 2f b 5 2 n a b 复合语句 56 if else形式 if 表达式 语句1 else语句2 执行流程 计算表达式的值 如果表达式的值非零 则执行语句1 如果表达式的值为零 则执行语句2 57 例3 14 如果成绩高于90分则输出 A 否则输出 B 格式 if score 90 printf A elseprintf B 执行过程 计算表达式score 90的值 如果表达式的值非零 即 score 90成立 则输出 A 如果表达式score 90的值为零 即 score 90不成立 则输出 B 58 includevoidmain intn rem printf enteranumber scanf d 例3 12可以改写成 else 59 例3 15 求两个数中较大的数 includevoidmain inta b max printf inputtwonumbers scanf d d a b if a b max a elsemax b printf max d n max 条件表达式可完成同样的功能 60 条件运算符和条件表达式 条件运算符 条件表达式的形式为 表达式1 表达式2 表达式3条件表达式的执行过程 先计算表达式1 若其值为非零 为真 则结果为表达式2的值 否则就是表达式3的值 条件表达式可以看作一个简写的if else语句 61 例3 15可以改写成 includevoidmain inta b max printf inputtwonumbers scanf d d a b if a b max a elsemax b printf max d n max 62 else if形式 格式 if 表达式1 语句1 elseif 表达式2 语句2 elseif 表达式m 语句m else语句n 63 else if执行流程 计算 表达式1 的值如果 表达式1 的值非零 则执行语句1 该if语句执行完毕 如果 表达式1 的值为零则计算 表达式2 的值 如果 表达式2 的值非零 则执行语句2 该if语句执行完毕 以此类推 直到最后一个else语句 64 例3 16 已知函数 程序段 if x 10 y 1 elseif x 10 y 0 elsey 1 编写程序 输入一个x值 输出对应的y值 1 x10 y 65 if语句的嵌套 if语句的嵌套 在一个if语句中又包含了另一个if语句一般形式 if 表达式1 if 表达式1 1 语句1 1 else语句1 2 elseif 表达式2 语句2 else语句3 C语言规定 else总是和它上面离它最近的未曾匹配的if匹配 66 例3 17 1 在if子句中嵌套 2 在else子句中嵌套 if x 0 if x 0 y 1 elsey 0 elsey 1 if x 0 y 1 elseif x 0 y 0 elsey 1 67 if语句只能处理从两者间选择之一 当要实现从多种可能中选择之一时 就要用到if elseif甚至多重嵌套的if语句 当分支较多时 程序变得复杂冗长 可读性降低 如 if x 90 printf 优秀 elseif x 80 printf 良好 elseif x 60 printf 通过 elseprintf 不及格 其它语句 如何解决这一问题 68 switch语句 switch语句是实现多分支选择结构的一个语句格式 switch 算术表达式 case常量表达式1 语句1 break case常量表达式2 语句2 break case常量表达式n 语句n break default 语句n 1 表达式值必须为整型 字符型或枚举类型 每个case表达式的值必须互不相同 69 例3 18将1至7中的任意一个数字转化成对应的英文星期几的前三个字母 如1转化为Mon 7转化为Sun等 includevoidmain inta printf inputintegernumber scanf d 输入的不是0至7的整数时执行 70 例5根据分数评定等级 includevoidmain intscore grade printf Inputascore 0 100 scanf d 成绩超出范围时 提示出错 注意 switch后面圆括号中的表达式的类型 ANSI标准允许为任何类型 但VisualC 6 0只允许为整型 字符型或枚举类型 case后面常量表达式的值必须互不相等 否则会出现互相矛盾的现象 其类型应该与switch后面表达式的类型相容 case和常量表达式之间要有空格例如 case10 case和default出现可以在任何位置 其先后次序不影响执行结果 但习惯上将default放在switch case结构的底部 case提供了执行某一语句序列的入口 起着标号的作用 多个case可以执行同一语句序列 每个case语句的结尾不要忘了加break 否则将导致多个分支重叠 default子句虽然可以省略不用 但最好保留 即使程序真的不需要default处理 也应该保留语句 default break 72 选择结构程序设计举例 73 写程序 判断某一年是否闰年 分析 做什么 判断某一年号是否为闰年 什么是闰年 年号能被4整除 但不能被100整除或年号能被400整除时 该年为闰年 设计解题步骤 定义相关变量 年号 year输入原始数据 输入年号 scanf 判断该年是否为闰年 if year 4 0写出完整程序 74 程序 includevoidmain intyear printf 请输入年号 n scanf d 75 求方程ax2 bx c 0的解 分析 方程ax2 bx c 0的解的情况 a 0 b 0 唯一根 c b b 0 c 0 无穷多个根 c 0 无解 a 0 b2 4ac 0 两个相同的实根 b 2 a b

温馨提示

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

评论

0/150

提交评论