第3章 三种基本程序结构.ppt_第1页
第3章 三种基本程序结构.ppt_第2页
第3章 三种基本程序结构.ppt_第3页
第3章 三种基本程序结构.ppt_第4页
第3章 三种基本程序结构.ppt_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

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

文档简介

C语言程序设计 主讲 桂绍勇 第三章三种基本程序结构 C语言属于典型的结构化程序设计语言 结构化程序设计是一种进行程序设计的原则和方法 按照这种原则和方法可设计出结构清晰 容易理解和修改的程序 结构化程序的局部上仍然由3种基本结构组成 那就是 顺序结构 选择结构和循环结构 3 1算法 广义的讲 算法就是解决问题的一般方法 在计算机程序设计领域 算法是合理组织语句顺序 将数据对象进行有序的加工处理的一般方法 结构化程序设计的一般步骤 程序 程序 算法 数据算法 解决问题的方法 数据 加工的对象 算法是程序的灵魂 一 算法设计程序实际上是用计算机语言所描述的算法 也就是说 依据算法所给定的步骤 用计算机语言所规定的表达形式去实现这些步骤 即形成源程序 在算法设计中应遵循的准则 1 可行性2 确定性 稳定 3 有穷性 可以结束 4 输入5 输出 二 算法的描述对算法的描述 一般采用自然语言 一般流程图或N S结构流程图 伪代码等几种方法 一般流程图的基本图元 所谓 图元 是构成流程图的基本符号 第一章中的例1 1对应的一般流程图 思考题 画出求 5的流程图 3 2顺序结构 顺序结构是最简单的一种程序结构 程序中的语句按先后顺序逐条依次执行 语句 是用来向计算机发出的操作指令 一个实际的C语言程序应包含若干条语句 一 C语句概述C程序中的语句分为5大类别 1 控制语句2 表达式语句3 函数调用语句4 空语句5 复合语句 1 表达式语句由一个表达式后跟一分号 构成的语句 如 a 10 3 4 5 6 2 控制语句教材P35页 起到控制语句执行顺序的作用 通常在流程图中反映为流程线的跳动 3 函数调用语句如 printf min d m c max a b 注意末尾的分号 4 空语句 注意这也是一条语句 5 复合语句复合语句就是用一对大括号 将若干语句括起来形成的语句 例如 t a a b b t 用 将若干语句括起来的 语句群 注意 1 这是一条语句2 末尾 也就是 后 可以没有分号 二 格式输入与输出C程序中没有专门的输入与输出语句 相关功能用函数的手段实现 1 格式输出函数printfprintf函数的作用是按照指定格式在终端 显示器 上输出信息 一般形式 printf 格式控制 输出列表 如 printf x d y f a b 1 输出列表 部分输出列表由逗号 连接若干待输出量 如上例中的a b 表示将要输出变量a和b的值 待输出量 可以是变量 常量 表达式甚至是函数调用 例如 printf zhuidazhishi d max a b 其中max a b 函数调用部分即是待输出量部分 又如 printf d n 5 6 7 2 格式控制 部分格式控制部分起到规定输出信息的内容及格式的作用 其是由一对双引号括起来的字符串 其中包含2种字符 普通字符 格式控制符 普通字符printf函数在输出时将普通字符不做任何更改的照原样输出 普通字符起到描述输出信息含义的作用 格式控制符格式控制符起到规定输出表列中待输出量按照什么格式输出的作用 教材P36页 注意 1 待输出量的数据类型必须与格式控制符限定的数据类型对应 2 格式控制符区分大小写 3 可以没有输出表列部分 但必须要有格式控制部分 4 输出列表中待输出量的个数不应少于格式控制部分中格式控制符的个数 5 待输出量的个数可以大于格式控制符个数 多出的待输出量将在输出时被忽略掉 如实数型量不能按 d形式输出 字符串量不能按 f形式输出等等 下面语句写法是错误的 printf d t f n 3 14 howareyou 下面语句呢 printf c C printf d C 这和变量名是不一样的 例如 d 和 D 被认为是不一样的 下面语句和合法的 printf F S 12 345 WuHan 即上述printf函数的一般形式严格意义上应改为 printf 格式控制 输出列表 即输出表列部分是可选的 如 printf Howareyou n printf函数按格式控制符指定的形式在输出列表中寻找待输出量与之对应输出 当找不到对应待输出量时则会出错 如 printf first d second d third d a b 假设变量a的值为3 b的值为4 则输出为 first 3 second 4 third 2268 如 printf first d second d a b c 则输出为 first 3 second 4变量c的值将不被输出 2 格式输入函数scanf一般形式 scanf 格式控制 输入列表 如 scanf d f scanf函数是从标准输入设备 通常是键盘 读取输入值并赋给输入列表中对应位置的变量 如上例运行时从键盘输入 34 5 6 则之后变量m的值为34 变量n的值为5 6 scanf函数与printf的对比 1 scanf函数中的输入表列部分中的待输入量必须取变量的地址 而不是变量名 如下面的写法是错误的 scanf d d a b 2 格式控制部分中最好不要出现普通字符 否则应按原样输入 如 scanf one f two d 输入时应 one 9 8 two 100 3 scanf函数是以 空格 回车 以及 可取有效输入 等3种方式作为一笔有效输入数据的 如 scanf d d 两个 d之间没有空格 在输入时 可以 34 将3赋给a 4赋给b 也可以 3 4 下面是体现 可取有效输入 含义的一个例子 scanf d c d 如果想输入123给m 字符 w 给ch 456给n 则以下3种输入方式应采用哪一种呢 123 123w456 123w456 w 456 4 从键盘输入数据的类型及个数应与格式控符相匹配 例如 scanf d d 输入数据时的形式 123 3 14 123 456 789 123 456 中只有第 方式是正确的 三 顺序结构程序举例例3 1 习题三 1 做书上课后习题一 1 6 二 1 2 作业本课后习题三 1 3 3 3选择结构 选择结构程序 顾名思义就是根据某些条件选择执行这些或者那些程序的结构形式 生活中的例子 C语言中 选择结构语句有if语句 switch语句以及条件运算符语句 一 if语句if语句的一般形式为 if 表达式 语句1 else语句2 说明 1 表达式 是广义上的表达式 可以是表达式 常量 变量 或函数调用等 如 if x y z x elsez y if 5 printf OK if a 3 printf Good 2 语句1 和 语句2 只可能一个被执行 if语句首先对表达式求解 若表达式的值为非0 真 按则执行 语句1 若表达式的值为0 假 则执行else子句部分的 语句2 3 当要执行的语句是两条或两条以上语句时 一定要用一对大括号将这些语句组合成复合语句 4 if子句是必须的 而else子句是可选的 但反过来不成立 即else子句不能脱离if子句单独存在 流程图可以变化如下 if x y z x elsez y 再看例1 3 二 条件运算符条件运算符用以实现选择结构的非常简洁 如下例 if a b max a elsemax b 也可以写成 max a b a b 其中的 a b a b是一个条件表达式 由运算符 构成 此运算符称为 条件运算符 或 问号运算符 它是一个3目运算符 运算过程P39页 说明 1 条件表达式可以嵌套 即可以为 max a b a b c b c 其中表达式3部分又是一个条件表达式 2 条件表达式的结合方向 计算方向 为 从右向左 即上述表达式求解时 先计算并得到 b c b c 的值 然后再将此值作为外层表达式的表达式3部分 3 条件表达式一般使用在赋值语句中 虽然它快捷方便 但功能上相比if语句还嫌不够 所以在实际应用中 应视具体情况合理使用 三 switch语句switch语句的一般形式为 switch 表达式 case常量表达式1 语句1 break case常量表达式2 语句2 break case常量表达式n 语句n break default 语句n 1 说明 1 其中的表达式可以为任何类型 2 注意switch语句的执行顺序 3 常量表达式 只能是常量或常量表达式 结果必须是整型或字符型量 4 常量表达式 两两不能相同 5 各case分子和default分支出现的次序无关紧要 6 语句 部分当是多条语句时 可以不必组合成复合语句 7 表达式只求解一次 执行完对应的 语句 部分后继续执行 直到break或 为止 分析下面的例子 switch grade case A printf 90 100 n case B printf 80 89 n case C printf 70 79 n case D printf 60 69 n case E printf 60 n default printf Cuowu n 当grade的值为 A 时 输出为什么 90 10080 8970 7960 69 60 为什么 case子句只是 入口点 可以合理加以利用 8 default出现在最后可以没有break配对 但出现在之前有讲究 四 选择结构程序举例例3 2 3 3 习题四 1 做书上课后习题一 7 12 二 2 5 10 11 12 2 作业本课后习题三 4 6 7 3 4循环结构 考虑下面的问题 1 请计算1 100累加和 并输出结果 请画出流程图 请编写实现的C程序 2 请计算1 1000累加和 并输出结果 3 请计算1 10000累加和 并输出结果 4 请计算1 1000 此时 就要用到循环结构实现了 C语言中 循环结构语句有while语句 do while语句以及for语句 一 while语句while语句的一般形式 while 表达式 语句 例如 while i 100 sum i 说明 1 表达式 可以是任何类型 while首先对于表达式进行求解 若值为假 0 则while语句到此结束 程序将执行后续语句 如果为真 非0 则执行 语句 部分 之后再对表达式进行判断 如果 构成循环 表达式 假 真 语句 2 语句 部分可以是任何类型 3 while中的表达式应有使循环趋于结束的措施 下面的语句是有问题的 while 6 sum sum i while循环程序举例例3 4 二 do while语句do while语句的一般形式 do语句 while 表达式 例如 do sum sum i i while i 100 说明 1 表达式 可以是任何类型 2 语句 是广义上的 3 while行末一定要有分号 4 while语句是 先谈条件 后做事情 而do while语句是 先做事情 后谈条件 inta 5 while a 5 a a 1 printf d a inta 5 doa a 1 while a 5 printf d a 分析下面的例子 do while循环程序举例例3 5 三 for语句for语句的一般形式 for 表达式1 表达式2 表达式3 语句 例如 for i 1 i 100 i sum sum i 表达式2 假 真 表达式1 语句 表达式3 for语句的执行步骤 1 求解 表达式1 2 求解 表达式2 若其值为假 0 则for循环就此结束 程序继续向后执行for语句的下一条语句 若为真 非0 则执行循环体语句 3 循环体内语句全部执行完后 求解 表达式3 4 返回到第 2 步骤 如此往复构成循环 表达式2 假 真 表达式1 语句 表达式3 用do while语句怎么改写呢 说明 1 3个 表达式 都可以是任何类型 2 语句 是广义上的 3 表达式1可以被省略 但之后的分号 不能省 4 表达式2可以被省略 但之后的分号 不能省 并且要注意循环条件的控制 i 1 for i 100 i sum sum i for循环程序举例例3 6 5 表达式3可以被省略 但前后的分号 不能省 for i 1 i 100 sum sum i i 6 表达式1和3可以同时被省略 对应位置的分号 不能省 7 3个表达式可以同时被省略 对应位置的分号 不能省 画出例3 6程序的流程图 四 break语句和continue语句1 break语句break语句的一般形式 break 适用场合 1 switch语句中 与case分支配对 2 循环语句中 在循环语句中的作用 结束 整个 循环 应用举例 例3 6 2 continue语句continue语句的一般形式 continue 适用场合 仅适用于循环语句中 作用 结束本次循环 应用举例 例3 7 五 循环结构程序举例例3 8 3 9 3 5程序结构的嵌套 嵌套是指某程序结构中又包含另一程序结构的现象 一 if语句的嵌套例3 10 main inta b c t scanf d d d 注意 嵌套时 else子句if子句的配对问题 if x 0 if x 0 y 1 elsey 1 它们是一对吗 else配对原则 else总是和它之前最近的还没有匹配的if配成一对 二 程序结构嵌套举例例3 11 编写程序 输出九九乘法表 main inti j printf n for i 1 i 10 i for j 1 j 10 j printf d d d i j i j printf n 条件成立 进入循环 条件成立 进入循环 执行9次 外层循环进

温馨提示

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

评论

0/150

提交评论