程序设计基础.ppt_第1页
程序设计基础.ppt_第2页
程序设计基础.ppt_第3页
程序设计基础.ppt_第4页
程序设计基础.ppt_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

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

文档简介

第三章程序控制结构 学习目标了解结构化程序设计的一般概念熟悉顺序结构 分支结构与循环结构等三种程序流程控制结构掌握C语言实现分支结构的if语句与switch语句 能熟练应用if语句与switch语句编写程序掌握C语言实现循环结构的while语句 for语句与do while语句 能熟练应用这三种循环控制结构编写程序了解三种循环结构的关系 掌握在循环结构中控制程序流程转移的方法 3 1C语言结构化程序设计基础 程序的控制结构 黑箱 单入口单出口的控制结构易于理解三种基本控制结构 顺序 分支 循环控制结构可以嵌套 以构成更复杂的控制结构程序的结构化三种基本控制结构可以构造任何复杂的结构化算法结构化程序设计原则 自顶向下 逐步求精结构化程序设计过程 首先对任务进行功能分解 然后使用结构化程序设计思想逐一解决各个子问题 最后构造原始问题的解好处 逻辑性强 可读性好 维护方便 3 2顺序结构 顺序结构的含义由一组顺序执行的处理块组成 每个处理块可能包含一条或一组语句 完成一项任务顺序结构是最基本的算法结构 语句与复合语句 语句块 三种语句结构 单语句 表达式 空语句 复合语句 语句序列 顺序结构程序示例 分别输入两个复数的实部与虚部 计算两个复数的和 差 积 商并输出结果 includeintmain floata b c d real imaginary printf Inputrealsandimaginariesoftwocomplexes n scanf f f f f 实际需要输入4个实数 3 3分支结构 分支结构 选择结构 的含义根据某一条件的判断结果 确定程序的流程 即选择哪一个程序分支中的处理块去执行最基本的分支结构是二路分支结构 以条件判断为起点 如果判断结果为真 则执行A处理块的操作 否则执行B处理块的操作 if else语句 语句格式 if 表达式 语句1else语句2表达式必须位于括号内 一般为关系或逻辑表达式先计算表达式值 若为真则执行语句1 否则执行语句2语句1与语句2可以为复合语句语句1与语句2只能有一个被执行如果仅仅用于确定某条语句是否执行 else分支可以省略 if else语句示例一 输入一个字符 判断它是否为0 9之间的数字 includeintmain charc printf Inputacharacter c getchar if c 48 因 字符以ASCII码值存储且数字的ASCII码值48 57故 比较ASCII码值 if else语句示例二 输入一个整数 输出其绝对值 includeintmain intn abs printf Enterinteger scanf d if elseif else语句 语句格式if 表达式1 语句1elseif 表达式2 语句2 else语句n if elseif else示例 根据百分制成绩给出优秀 通过或不通过成绩 includeintmain floatscore printf Inputscore scanf f 条件分支的嵌套 条件语句的嵌套格式当年龄大于50岁时 若工资小于500 则长200 否则长300 if age 50 if sal 500 sal 200 elsesal 300 若年龄大于50岁且工资小于500 长200 若年龄不大于50岁 则长300 语法规定 else与离它最近的if配对嵌套的条件语句可以实现复杂的逻辑判断 if age 50 if sal 500 sal 200 elsesal 300 if age 50 if sal 500 sal 200 elsesal 300 条件分支嵌套示例 求方程ax2 bx c 0的根 include include 由于用到平方根函数 要用此头文件intmain floata b c x1 x2 p q m 定义实型变量printf Enter3coefficients scanf f f f 条件分支嵌套示例 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 switch分支语法 计算过程先计算表达式的值依次与一组常量比较若相同则执行该分支否则转向default分支退出switch语句说明switch后面的表达式必须为整型 字符型或枚举型case后面必须为常量表达式 则各个case值必须不同如果没有default子句 且没有case子句匹配 则不执行case分支中的语句可以有多条 不需要花括号 switch 表达式 case常量表达式1 语句组1case常量表达式2 语句组2 case常量表达式n 语句组ndefault 语句组 switch分支流程图 switch分支示例一 根据输入的成绩等级 打印相应分数段 includeintmain chargrade printf Inputthegrade A B C D E scanf c switch分支示例一 根据输入的成绩等级 打印相应分数段 includeintmain chargrade printf Inputthegrade A B C D E scanf c break的目的是终止switch语句的执行 如果没有break语句 则程序会从指定的case分支开始 并在该分支结束后继续执行下去 除非switch语句结束 否则后面的其他case分支或default分支中的语句都会得到执行 switch分支示例二 根据输入的成绩等级 打印是否通过信息 includeintmain chargrade printf Inputthegrade A B C D E scanf c 如果逻辑上确实如此 则不同的case分支可以使用同一个语句组 这也许是特意不在某些case分支中使用break的唯一正当理由 3 4循环结构 循环结构的含义根据某一条件的判断结果 反复执行某一处理块的过程最基本的循环结构是当循环 进入循环结构 判断循环条件 如果循环条件的结果为真 则执行A处理块的操作 即循环一次 然后再次判断循环条件 当循环条件为假时 循环结束 while循环 while循环格式 while 表达式 循环体while循环流程先判断后执行 表达式为真时 执行一遍循环体 一次迭代 返回重新计算表达式的值以确定是否重复执行循环体 若表达式为假 则终止循环为保证循环终止 循环体内应有能改变表达式值的语句 while循环示例 使用while循环求两个正整数的最小公倍数 includeintmain intm n result printf Inputtwopositiveintegersm n scanf d d do while循环 do while循环格式 do 循环体 while 表达式 do while循环流程先执行后判断 先执行一遍循环体 一次迭代 计算表达式的值 表达式为真时重复执行循环体 否则终止循环 循环体至少执行一次 这与while循环不同 为保证循环终止 循环体内应有能改变表达式值的语句 do while循环示例 反复求两个正整数的最小公倍数 直到输入的两个数均为1时结束 includeintmain intm n result do printf Inputtwopositiveintegersm n scanf d d for循环 for循环格式for 表达式1 表达式2 表达式3 循环体for循环流程先判断后执行 先执行表达式1 循环初始化 再计算表达式2以根据其结果决定是否执行一遍循环体 为真时执行 计算表达式3的值 循环再次 初始化 返回重新计算表达式2的值以确定循环是否终止 for循环示例一 计算 includeintmain intresult k result 0 累加器变量 设置初始值 本例设为0 for k 1 k 100 k 循环计算result k k 累加printf Theresult d n result return0 三种循环结构的比较 三种循环结构可以互换使用for循环与while循环常见 do while循环少见while循环常用于不需要或很少需要初始化的场合for循环常用于需要简单初始化和通过递增递减运算控制循环体执行的场合for循环将所有循环控制因素都放在循环头部 循环结构最清晰通过省略循环头部的一个或多个表达式 for循环也可能非常复杂 for循环示例二 程序读入一个字符串 然后反向打印输出 include includeintmain chars 50 c inti j printf Inputastring scanf s s for i 0 j strlen s 1 i j i j c s i s i s j s j c printf s n s return0 for循环示例三 打印九九乘法表 includeintmain inti j k for i 1 i 9 i for j i j 9 j k i j printf d d d t i j k printf n return0 如果一个循环体内包含另一个循环则称循环嵌套或多重循环 三种循环都可以嵌套 但嵌套时内外层循环不能发生交叉 发生嵌套时 内层循环经常需要使用外层循环的某些值作为控制条件 循环控制转移 break语句 输出5行 每行10个随机数 若随机数大于20 000 本行输出结束 include include includeintmain inti j r srand time NULL for i 1 i20000 break printf n return0 srand 设置随机数种子的函数time 获取时间的函数rand 产生随机数的函数 break终止当前循环的执行 在存在循环嵌套的场合 它并不能终止外层循环的执行 循环控制转移 continue语句 输入一串字符 以回车结束输入 程序统计并输出其中小写字母的个数 includeintmain charc intnum 0 printf Enterastring n while c getchar n if c122 continue 非小写字母 本次循环结束num printf d n num return0 continue终止的是当前循环的当前一次迭代 而不是整个循环 当前循环的下一次迭代仍会执行 结构化程序设计注意事项 要保证结构的完整性不允许结构层次间的交叉 要保证操作的完整性一个基本结构就是一个完整的操作单元 程序只能从入口进出口出程序最好不要有多入口多出口 尤其不能从外部进入循环或条件分支内部 3 5结构化程序设计应用示例一 打印小于n的所有个位不等于9的素数 n的具体值由用户输入 要求分行输出 每行输出10个数 includeintmain inti j n line 0 printf Pleaseinputn scanf d 使用for循环 3 5结构化程序设计应用示例一 includeintmain inti j n line 0 printf Pleaseinputn scanf d 使用while循环 3 5结构化程序设计应用示例二 百元买百鸡 穷举 已知公鸡每只5元 母鸡每只3元 小鸡1元3只 则100元可买公鸡 母鸡 小鸡各几只 includeintmain intx y z for x 0 x 100 x for y 0 y 100 y for z 0 z 100 z if x y z 100 设x y z分别表示可买的公鸡 母鸡 小鸡的个数 有不定方程组 3 5结构化程序设计应用示例二 百元买百鸡 穷举 已知公鸡每只5元 母鸡每只3元 小鸡1元3只 则100元可买公鸡 母鸡 小鸡各几只 includeintmain intx y z for x 0 x 20 x for y 0 y 33 y for z 0 z 100 z if x y z 100 设x y z分别表示可买的公鸡 母鸡 小鸡的个数 有不定方程组 includeintmain intx y z for x 0 x 100 x for y 0 y 100 y for z 0 z 100 z if x y z 100 3 5结构化程序设计应用示例三 输出裴波那契数列前30项值 递推 includeintmain intn1 n2 n count n1 0 n2 1 printf 10d 10d n1 n2 for count 3 count 30 count n n1 n2 printf 10d n if count 5 0 printf n 控制每行输出5个数n1 n2 n2 n printf n 3 5结构化程序设计应用示例四 设计一个简单的菜单程序运行时 首先显示一个菜单画面用以提示输入操作选择操作员从菜单上选择一个操作 即输入相应的代码 例如1 2等 程序接收选择后调用相应的函数完成操作假设系统提供select insert update 和del 函数 分别用以实现选择 插入 更新与删除等相应操作 3 5结构化程序设计应用示例四 includevoidinsert voidselect voiddel voidupdate intmai

温馨提示

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

评论

0/150

提交评论