C语言循环结构ppt课件

上传人:钟*** 文档编号:5839754 上传时间:2020-02-09 格式:PPT 页数:53 大小:1.05MB
返回 下载 相关 举报
C语言循环结构ppt课件_第1页
第1页 / 共53页
C语言循环结构ppt课件_第2页
第2页 / 共53页
C语言循环结构ppt课件_第3页
第3页 / 共53页
点击查看更多>>
资源描述
循环语句概述 问题 求1 100的累计和 根据已有的知识 可以用 1 2 100 来求解 但显然很繁琐 现在换个思路来考虑 首先设置一个累计器sum 其初值为0 利用sum sum i来计算 i依次取1 2 100 只要解决以下3个问题即可 1 将i的初值置为1 2 每执行1次 sum sum i 后 i增1 3 当n增到101时 停止计算 此时 sum的值就是1 100的累计和 第1页 根据已有的知识 单独实现每一步都不难 但是 由于需要经常使用这种重复计算结构 称为循环结构 C语言提供了循环语句来实现 以简化 并规范循环结构程序设计 在 语言中 可用以下语句实现循环 1 用for语句 2 用do while语句 3 用while语句 第2页 5 1for语句 循环的意思就是让程序重复地执行某些语句 C语言提供的循环结构有三种 for语句 while语句和do while语句 for语句既可以用于循环次数已知的情况 也可用于循环次数预先不知道的情况 for语句的一般形式为 for 第3页 功能 先计算的值 然后判断的值 若该值为 假 则退出循环 执行循环体下面的语句 若该值为 真 则执行 然后计算的值 再判断的值 重复以上的操作 for语句的流程图如图 一般情况下 是由一对花括括起来的复合语句 第4页 for循环语句注意 可以省略 但须保留分号 同时在for之前必须给循环变量赋值 如 i 1 for i 100 i sum sum i 一般不可省略 否则为无限循环 如 for i 1 i sum sum i 相当于条件总为真 程序会一直不停的执行直到 数据溢出 第5页 亦可省略 但在循环语句体中必须有语句来修改循环变量 以使条件表达式的值在某一时刻为0 从而能正常结束循环 如 for sum 0 i 1 i 100 sum sum i i 三个表达式均省略 即for 为无限循环 程序中要避免这种情况的发生 条件表达式可以是关系表达式 数值表达式 只要表达式的值 0 就执行循环语句 如 for i 0 c getchar n i c 第6页 初始表达式 循环表达式可以是逗号表达式 如 for sum 0 i 1 i 100 i i 相当于 sum 0 for i 1 i 100 i i 2 for循环也可以嵌套 执行时是由外向里 逐层进行 先执行外层循环 再进入内层循环 退出时相反 由里向外逐层退出 先退出内层循环 然后退到上一层循环 例5 2 任意从键盘输入两个整数a b a b 求它们之间的几何级数的和 数学表达式为 第7页 这个问题与例5 1类似 只是所求级数和的初值和终值不一样 是由键盘任意输入的 为避免计算机错误 要求初值a要小于终值b 算法流程图如右图 第8页 exam5 2 c求几何级数的和 includemain inti j a b sum 0 printf Pleaseinputtwonumber n scanf a d b d 第9页 例5 3 编写一个程序 在屏幕上打印出具有8行7列的如下图案 这是一个很有规律的图案 可采用二重循环嵌套的方式 第1层控制行数 第2层控制列数 算法流程图如下图 第10页 exam5 3 c打印图案 includemain inti j for i 1 i 8 i for j 1 j 7 j printf printf n 第11页 5 2while语句 While语句也是一种用于产生循环动作的语句 一般形式为 while 功能 先计算的值 若该值为 假 则跳出循环 执行循环体后面的语句 若该值为 真 则执行 然后回过头来再检查的值 重复以上的操作 while语句的流程图 第12页 是用一对花括号括起来的复合语句 注意 在中要有使的值为假 或的值为零 的语句 否则会使程序出现无限循环而发生错误 注意 由于while循环是先判断的值 后决定是否执行 因此 有可能一次也不执行 第13页 例5 4 将例5 1用while语句重写 求简单几何级数的和 exam5 4 c用while求简单几何级数的和 includemain inti 1 sum 0 while i 100 sum sum i i printf sum d n sum 程序运行结果 sum 5050 第14页 例5 5 输入一个正整数n 求n 计算表达式 n n n 1 n 2 2 1 用i代表循环变量 s代表n 的结果值 编程时既可以采用for循环 也可以采用while循环 求任意正整数n的阶乘的算法流程图如图 第15页 exam5 5 cwhile应用 求n includemain inti n longs printf pleaseenterainteger n scanf d 试改为for循环 第16页 while和for的比较 for i 1 i 10 i sum sum i i 1 循环变量赋初值while i 10 循环条件sum sum i i 循环变量的改变 循环体 第17页 例5 6从键盘输入一批学生的成绩 计算平均分 分析 求累加和确定循环条件不知道输入数据的个数 无法事先确定循环次数用一个特殊的数据作为正常输入数据的结束标志 比如选用一个负数作为结束标志 第18页 includeIntmain void intnum doublegrade total num 0 total 0 printf Entergrades n scanf lf Entergrades 6788735482 1Gradeaverageis72 80 Entergrades 16788735482Gradeaverageis0 第19页 5 3do while语句 do while语句是另一种用于产生循环动作的语句 一般形式为 do while 功能 先执行一次 然后计算的值 若该值为 真 则重复以上的操作 直到该值为 假 则退出循环语句 执行下一条语句 do while语句的流程图 第20页 应该是用一对花括号括起来的复合语句 注意 要有可以使的值为 假 即的值等于零 的语句 否则会使程序出现无限循环而发生错误 do while循环与while循环的区别 不论情况怎样 do while循环中的至少会执行一次 第21页 例5 7 将例5 6用do while语句重写 第22页 includeIntmain void intnum doublegrade total num 0 total 0 do printf Entergrades scanf lf Entergrades 6788735482 1Gradeaverageis72 80 Entergrades 16788735482Gradeaverageis0 第23页 例5 8 求sin x x x3 3 x5 5 x7 7 直到最后一项绝对值小于le 7 即10 7 为止 分析 多项式从第二项起 每一项都是前一项乘以一个因子 x2 n n 1 n 3 5 7 9 用s代表sin x 的值 t代表每一项的值 则 t t x2 n n 1 s s t x的值是用弧度值表示的 10 180弧度 如 300 0 523598775 算法流程图如后图 第24页 第25页 exam5 8 c求sin x 的值 include includemain doubles t x intn 1 scanf lf 程序运行结果 1 57 sin 1 570000 1 000000 第26页 while是先判别条件 再决定是否循环 do while是先至少循环一次 然后再根据循环的结果决定是否继续循环 while和do while的比较 第27页 循环语句的选择 if 循环次数已知 使用for语句else 循环次数未知 if 循环条件在进入循环时明确 使用while语句else 循环条件需要在循环体中明确 使用do while语句 第28页 5 4用于循环中的break和continue语句 一 break语句 break语句的作用是从一种控制结构中跳出来 break语句可用于循环结构 其作用是从本层循环结构中跳出 可以提前结束执行 执行循环结构外的下一条语句 break语句的一般形式为 break break语句在循环语句体中的位置应根据程序的需要而定 一般是用在循环体内某一个if条件分支的语句中 用来表示在循环过程中当某一个条件成立时提前结束循环 第29页 程序解析 判断素数 算法 除了1和m 不能被其它数整除 设i取值 2 m 1 如果m不能被该区间上的任何一个数整除 即对每个i m i都不为0 则m是素数只要找到一个i 使m i为0 则m肯定不是素数m 2 3 4 5 m 1 不是素数 0 0是素数 0 0m不可能被大于m 2的数整除i取值 2 m 1 2 m 2 2 for i 2 im 2 printf yes n elseprintf no n 第30页 intmain void inti m printf Enteranumber scanf d 源程序 判断素数 Enteranumber 9No Enteranumber 1111isaprimenumber 循环条件 循环的结束条件 第31页 break语句 while exp 语句1if expb break 语句2 for i 2 im 2 printf Yes elseprintf No n 当循环有多个出口时 表示循环条件区分结束条件 for i 2 i m 2 i if m i 0 printf No n break printf Yes 第32页 二 Continue语句 Continue语句只适用于循环结构 其一般形式为 作用 提前结束本次循环 提前进行下一次循环 例5 10 编写程序 打印100 200中不能被3整除的数 exam5 10 c求不能被3整除的数 includemain intn for n 100 n 200 n if n 3 0 continue printf d t n 第33页 算法流程图如图 要准确地使用break语句和continue语句 除非有必要 否则若可以不用则尽量不采用break语句和continue语句 第34页 对于例5 10的问题 打印100 200中不能被3整除的数 不采用continue语句的算法流程图如图所示 第35页 exam5q10 c例5 10问题不用continue includemain intn for n 100 n 200 n if n 3 0 n不能被3整除 printf d n 第36页 例5 11 break语句和continue语句在程序中的区别 exam5 11 cbreak的作用 includemain intx for x 1 x 10 x if x 5 break printf d x 运行结果 1 2 3 4 exam5q11 ccontinue的作用 includemain intx for x 1 x 10 x if x 5 continue printf d x 运行结果 1 2 3 4 6 7 8 9 10 第37页 5 5循环结构的嵌套 循环结构的嵌套 指的是某一种循环结构的语句中 包含有另一个循环结构 使用嵌套的结构时 要注意嵌套的层次 不能交叉 例5 12求1 2 100 第38页 嵌套循环 for i 1 i 100 i item i sum sum item for i 1 i 100 i item 1 for j 1 j i j item item j sum sum item 第39页 例4 6源程序 includeintmain void inti j doubleitem sum item存放阶乘 sum 0 for i 1 i 100 i item 1 每次求阶乘都从1开始 for j 1 j i j 内层循环算出item i item item j sum sum item printf 1 2 3 100 e n sum 第40页 内层循环的初始化 for i 1 i 100 i item 1 for j 1 j i j item item j sum sum item 求1 2 100 item 1 for i 1 i 100 i for j 1 j i j item item j sum sum item 求1 1 2 1 2 100 第41页 分析嵌套循环的执行过程 for i 1 i 100 i item 1 for j 1 j i j item item j sum sum item 外层循环变量i的每个值内层循环变量j变化一个轮次 内外层循环变量不能相同分别用i和j 第42页 for i 1 i 100 i for j 1 j i j printf d d n i j 第43页 5 6goto语句 goto语句是一种无条件转向语句 它可以用在程序的任何地方 其一般形式为 goto语句标号 语句标号 为任何合法的标识符 放在某个语句前面并加上冒号 作为语句的标号 标号只对goto语句有意义 带有标号的语句被称作标号语句 如 error end exp 等均为合法的语句的标号 goto语句的作用 转到标号语句所在的地方继续执行 第44页 例5 13 用if语句和goto语句组合构成的循环重写计算器的程序 exam5 13 cif goto构成循环 includemain inti sum 0 i 1 loop if i 100 sum sum i i gotoloop printf sum d sum 程序运行结果 sum 5050 goto语句是一种非结构化的语句 在程序设计中应尽量少用或不用goto语句 第45页 5 7程序范例 例5 16 打印出ASC 码序列中从33 127 十进制 的字符对照表 exam5 16 c打印部分ASCII码字符 includemain inti for i 33 i 128 i printf d c t i i 第46页 例5 17 设公鸡每只5元 母鸡每只3元 小鸡每元3只 现用100元钱买100只鸡 编写一个程序 算出可以各买多少只鸡 includemain inti j k for i 0 i 5 100 i for j 0 j 3 100 j for k 0 k 3 100 k 3 if i 5 j 3 k 3 100 第47页 程序运行结果 Cock 0Hen 25Chicken 75Cock 4Hen 18Chicken 78Cock 8Hen 11Chicken 81Cock 12Hen 4Chicken 84 第48页 小结 三种循环结构 for while和do while循环 当循环次数是肯定的情况下 用for循环比较方便 while循环和for循环都要先判断条件再执行循环语句体 因此 有可能一次也不执行循环语句体 do while循环不论怎样都会先执行一次循环语句体 注意避免以下几个方面的问题 1 循环语句体为复合语句 但没有使用花括号 2 使程序发生无限循环 3 混淆break语句与continue语句的功能 第49页 循环程序设计 循环程序的实现要点 归纳出哪些操作需要反复执行 循环体这些操作在什么情况下重复执行 循环条件选用合适的循环语句forwhiledo while循环具体实现时考虑 循环条件 事先给定循环次数 首选for通过其他条件控制循环 考虑while或do while 第50页 includeintmain void inti mark max n printf Entern scanf d 例5 18输入一批学生的成绩 求最高分 for max mark Entern 5Enter5maks 6788735482Max 88 Entern 0 第51页 includeintmain void intmark max printf Entermarks scanf d 例5 19输入一批学生的成绩 求最高分 while Entermarks 6788735482 1Max 88 Entermarks 1 第52页 includeintmain void intmark max max 1 给max赋一个小初值 printf Entermarks do scanf d 例5 20输入一批学生的成绩 求最高分 do while Entermarks 6788735482 1Max 88 Entermarks 1 第53页
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 大学资料


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

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


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