循环语句概述.pptx_第1页
循环语句概述.pptx_第2页
循环语句概述.pptx_第3页
循环语句概述.pptx_第4页
循环语句概述.pptx_第5页
已阅读5页,还剩48页未读 继续免费阅读

下载本文档

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

文档简介

22 46 第1页 循环语句概述 问题 求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的累计和 22 46 第2页 根据已有的知识 单独实现每一步都不难 但是 由于需要经常使用这种重复计算结构 称为循环结构 C语言提供了循环语句来实现 以简化 并规范循环结构程序设计 在 语言中 可用以下语句实现循环 1 用for语句 2 用do while语句 3 用while语句 22 46 第3页 5 1for语句 循环的意思就是让程序重复地执行某些语句 C语言提供的循环结构有三种 for语句 while语句和do while语句 for语句既可以用于循环次数已知的情况 也可用于循环次数预先不知道的情况 for语句的一般形式为 for 22 46 第4页 功能 先计算的值 然后判断的值 若该值为 假 则退出循环 执行循环体下面的语句 若该值为 真 则执行 然后计算的值 再判断的值 重复以上的操作 for语句的流程图如图 一般情况下 是由一对花括括起来的复合语句 22 46 第5页 for循环语句注意 可以省略 但须保留分号 同时在for之前必须给循环变量赋值 如 i 1 for i 100 i sum sum i 一般不可省略 否则为无限循环 如 for i 1 i sum sum i 相当于条件总为真 程序会一直不停的执行直到 数据溢出 22 46 第6页 亦可省略 但在循环语句体中必须有语句来修改循环变量 以使条件表达式的值在某一时刻为0 从而能正常结束循环 如 for sum 0 i 1 i 100 sum sum i i 三个表达式均省略 即for 为无限循环 程序中要避免这种情况的发生 条件表达式可以是关系表达式 数值表达式 只要表达式的值 0 就执行循环语句 如 for i 0 c getchar n i c 22 46 第7页 初始表达式 循环表达式可以是逗号表达式 如 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 求它们之间的几何级数的和 数学表达式为 22 46 第8页 这个问题与例5 1类似 只是所求级数和的初值和终值不一样 是由键盘任意输入的 为避免计算机错误 要求初值a要小于终值b 算法流程图如右图 22 46 第9页 exam5 2 c求几何级数的和 includemain inti j a b sum 0 printf Pleaseinputtwonumber n scanf a d b d 22 46 第10页 例5 3 编写一个程序 在屏幕上打印出具有8行7列的如下图案 这是一个很有规律的图案 可采用二重循环嵌套的方式 第1层控制行数 第2层控制列数 算法流程图如下图 22 46 第11页 exam5 3 c打印图案 includemain inti j for i 1 i 8 i for j 1 j 7 j printf printf n 22 46 第12页 5 2while语句 While语句也是一种用于产生循环动作的语句 一般形式为 while 功能 先计算的值 若该值为 假 则跳出循环 执行循环体后面的语句 若该值为 真 则执行 然后回过头来再检查的值 重复以上的操作 while语句的流程图 22 46 第13页 是用一对花括号括起来的复合语句 注意 在中要有使的值为假 或的值为零 的语句 否则会使程序出现无限循环而发生错误 注意 由于while循环是先判断的值 后决定是否执行 因此 有可能一次也不执行 22 46 第14页 例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 22 46 第15页 例5 5 输入一个正整数n 求n 计算表达式 n n n 1 n 2 2 1 用i代表循环变量 s代表n 的结果值 编程时既可以采用for循环 也可以采用while循环 求任意正整数n的阶乘的算法流程图如图 22 46 第16页 exam5 5 cwhile应用 求n includemain inti n longs printf pleaseenterainteger n scanf d 试改为for循环 22 46 第17页 while和for的比较 for i 1 i 10 i sum sum i i 1 循环变量赋初值while i 10 循环条件sum sum i i 循环变量的改变 循环体 22 46 第18页 例5 6从键盘输入一批学生的成绩 计算平均分 分析 求累加和确定循环条件不知道输入数据的个数 无法事先确定循环次数用一个特殊的数据作为正常输入数据的结束标志 比如选用一个负数作为结束标志 22 46 第19页 includeIntmain void intnum doublegrade total num 0 total 0 printf Entergrades n scanf lf Entergrades 6788735482 1Gradeaverageis72 80 Entergrades 16788735482Gradeaverageis0 22 46 第20页 5 3do while语句 do while语句是另一种用于产生循环动作的语句 一般形式为 do while 功能 先执行一次 然后计算的值 若该值为 真 则重复以上的操作 直到该值为 假 则退出循环语句 执行下一条语句 do while语句的流程图 22 46 第21页 应该是用一对花括号括起来的复合语句 注意 要有可以使的值为 假 即的值等于零 的语句 否则会使程序出现无限循环而发生错误 do while循环与while循环的区别 不论情况怎样 do while循环中的至少会执行一次 22 46 第22页 例5 7 将例5 6用do while语句重写 22 46 第23页 includeIntmain void intnum doublegrade total num 0 total 0 do printf Entergrades scanf lf Entergrades 6788735482 1Gradeaverageis72 80 Entergrades 16788735482Gradeaverageis0 22 46 第24页 例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 算法流程图如后图 22 46 第25页 22 46 第26页 exam5 8 c求sin x 的值 include includemain doubles t x intn 1 scanf lf 程序运行结果 1 57 sin 1 570000 1 000000 22 46 第27页 while是先判别条件 再决定是否循环 do while是先至少循环一次 然后再根据循环的结果决定是否继续循环 while和do while的比较 22 46 第28页 循环语句的选择 if 循环次数已知 使用for语句else 循环次数未知 if 循环条件在进入循环时明确 使用while语句else 循环条件需要在循环体中明确 使用do while语句 22 46 第29页 5 4用于循环中的break和continue语句 一 break语句 break语句的作用是从一种控制结构中跳出来 break语句可用于循环结构 其作用是从本层循环结构中跳出 可以提前结束执行 执行循环结构外的下一条语句 break语句的一般形式为 break break语句在循环语句体中的位置应根据程序的需要而定 一般是用在循环体内某一个if条件分支的语句中 用来表示在循环过程中当某一个条件成立时提前结束循环 22 46 第30页 程序解析 判断素数 算法 除了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 22 46 第31页 intmain void inti m printf Enteranumber scanf d 源程序 判断素数 Enteranumber 9No Enteranumber 1111isaprimenumber 循环条件 循环的结束条件 22 46 第32页 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 22 46 第33页 二 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 22 46 第34页 算法流程图如图 要准确地使用break语句和continue语句 除非有必要 否则若可以不用则尽量不采用break语句和continue语句 22 46 第35页 对于例5 10的问题 打印100 200中不能被3整除的数 不采用continue语句的算法流程图如图所示 22 46 第36页 exam5q10 c例5 10问题不用continue includemain intn for n 100 n 200 n if n 3 0 n不能被3整除 printf d n 22 46 第37页 例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 22 46 第38页 5 5循环结构的嵌套 循环结构的嵌套 指的是某一种循环结构的语句中 包含有另一个循环结构 使用嵌套的结构时 要注意嵌套的层次 不能交叉 例5 12求1 2 100 22 46 第39页 嵌套循环 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 22 46 第40页 例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 22 46 第41页 内层循环的初始化 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 22 46 第42页 分析嵌套循环的执行过程 for i 1 i 100 i item 1 for j 1 j i j item item j sum sum item 外层循环变量i的每个值内层循环变量j变化一个轮次 内外层循环变量不能相同分别用i和j 22 46 第43页 for i 1 i 100 i for j 1 j i j printf d d n i j 22 46 第44页 5 6goto语句 goto语句是一种无条件转向语句 它可以用在程序的任何地方 其一般形式为 goto语句标号 语句标号 为任何合法的标识符 放在某个语句前面并加上冒号 作为语句的标号 标号只对goto语句有意义 带有标号的语句被称作标号语句 如 error end exp 等均为合法的语句的标号 goto语句的作用 转到标号语句所在的地方继续执行 22 46 第45页 例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语句 22 46 第46页 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 22 46 第47页 例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 22 46 第48页 程序运行结果 Cock 0Hen 25Chicken 75Cock 4Hen 18Chicken 78Cock 8Hen 11Chicken 81Cock 12Hen 4Chicken 84 22 46 第49页 小结 三种循环结构 for while和do while循环 当循环次数是肯定的情况下 用for循环比较方便 while循环和for循环都要先判断

温馨提示

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

评论

0/150

提交评论