第06章 循环结构程序设计.ppt_第1页
第06章 循环结构程序设计.ppt_第2页
第06章 循环结构程序设计.ppt_第3页
第06章 循环结构程序设计.ppt_第4页
第06章 循环结构程序设计.ppt_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

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

文档简介

第5章循环结构程序设计 5 1while循环5 2do while循环5 3for循环5 4循环结构的嵌套5 5转向语句5 6循环结构程序设计举例 5 1while循环 while语句用于构成 当型 循环结构 while语句的一般形式为 while 表达式 循环体语句while循环结构的执行过程是 首先计算表达式 循环条件 的值 若结果为 真 非零 则执行循环体语句 然后再次计算表达式的值 重复上述过程 直到表达式的值为 假 零 时结束循环 流程控制转到循环结构的下一语句 5 1while循环 例5 1 从键盘上输入一个整数n 求n 利用while语句编程实现 main intn i s printf nEntern scanf d 输出计算的结果 运行情况如下 Entern 5 n 120 5 1while循环 使用while循环结构应注意以下几点 while循环结构的特点是 先判断 后执行 如果表达式的值一开始就为 假 则循环体一次也不执行 循环体中 如果包含一个以上的语句 则应用花括号括起来 以复合语句的形式出现 循环体内一定要有改变循环继续条件的语句 使得循环趋向于结束 否则循环将无休止的进行下去 即形成 死循环 为使循环能够正确开始运行 还要做好循环前的准备工作 例5 2 从键盘上输入30个学生的成绩 对其进行处理 如果成绩及格 则输出 Passed 否则输出 Failed 求1 2 3 100的值 计算2 4 6 8 100的值 通过键盘输入若干个学生某门课程的成绩 计算其平均分 成绩输入以 1为结束标志找出三位数中所有的水仙花数 生成2个两位随机正整数 求其最大公约数和最小公倍数 生成一个100以内的自然数 然后猜测其值 猜错了再猜 直至正确为止 输出正确答案及猜测次数 例 根据求的迭代公式求 要求前后两次求出的x值的差的绝对值小于10 5 5 1while循环 main intn 1 循环控制变量赋初值 floatscore while n 60 0 printf Passed n elseprintf Failed n n 循环控制变量增值 5 2do while循环 do while语句构成的循环结构类似于 直到型 循环 do while语句的形式为 do循环体语句while 表达式 do while循环结构的执行过程 首先执行一次循环体语句 然后计算表达式 循环条件 的值 若结果为 真 非零 则再次执行循环体 再计算表达式的值 如此重复下去 直到表达式的值为 假 零 时 循环结束 流程控制转到循环结构的下一语句 5 2do while循环 例5 3 用do while循环结构实现例5 1 main intn i s printf nEntern scanf d 5 2do while循环 使用do while循环结构应注意以下几点 当do while循环体包含一个以上的语句时应该用花括号括起来 以复合语句形式出现 循环体内也一定要有改变循环条件的语句 使循环趋向于结束 下面的两个程序可以明显的看出while循环和do while循环的区别 5 2do while循环 当输入1时 两个程序的运行结果是一样的 Thesumis18 i 4当输入5时 第一个程序的运行结果是 Thesumis6 i 6第二个程序的运行结果是 Thesumis0 i 5for语句是功能强大的构成 当型 循环结构的循环语句 它不但可以用于循环次数已知的情况 而且还可以用于循环次数不定的情况 程序形式 for 表达式1 表达式2 表达式3 循环体语句 5 3for循环 for循环结构的执行过程 首先进行表达式1的运算 然后计算表达式2的值 若结果为真 非零 则执行循环体语句 最后进行表达式3的运算 再次计算表达式2的值 若结果为 真 非零 再执行循环体语句 最后再进行表达式3的运算 如此循环重复下去 直到计算表达式2的结果为 假 零 时 循环结束 流程控制转到循环结构的下一语句 例5 4 用for循环结构实现例5 1 main intn i s printf nEntern scanf d 5 3for循环 使用for循环结构应注意以下几点 用for循环结构也具有 先判断 后执行 的特点 for循环结构相当如下形式的while结构 表达式1 while 表达式2 循环体表达式3 从语法上看 for的三个成分都是表达式 它们之间都以分号 隔开 表达式1和表达式3常常是赋值表达式或函数调用 有时也可以是逗号表达式 一般用来实现对循环控制变量初始化和循环控制变量增 减 值 表达式2常常是关系表达式或逻辑表达式 但也可以是其它类型的表达式 它是用来表示循环继续的条件 只要其值为非零 就可执行循环体 否则推出循环 例如 for i 1 sum 0 i 100 i i sum i 5 3for循环 关键字for的三个表达式允许部分或全部省略 但其中的两个分号不能省略 否则 系统将报错 需要注意 当省略表达式1时 在进入for循环之前应该有给循环控制变量赋初始值的语句 当省略表达式3时 应该在循环体内有修改循环控制变量的值的语句 以保证循环能够正常结束 例如 for i 1 s 1 i n s s i i 当表达式2或三个表达式全部省略时 应该在循环体内设置相应的语句来结束循环 否则程序始终认为判断条件成立 循环将无终止地执行下去 即形成了所谓的死循环 如果循环体语句为一语句组 则必须用一对花括号 括起来 5 3for循环 由于for循环结构书写形式灵活多样 如果在三个表达式中过多的加入与循环控制无关的内容 容易降低可读性 因此 通常使用一种简单明了的for循环结构形式 for 循环控制变量赋初值 循环条件 循环控制变量增 减 值 循环体语句 5 3for循环 例5 5 输入一批非零整数 以 为结束符 输出其中的最大值 includemain intx max printf inputnumbers lastoneis0 n 输出提示信息 scanf d 输出最大值 5 3for循环 程序的运行情况如下 inputnumbers lastoneis0 3 6 5 2 9 7 0 max 9 循环语句编程实践 例1 求n 例2 编程输出100以内2和3的所有公倍数 例3 寻找两个正整数的最大公约数 例如8和12的最大公约数为4 例4 通过键盘输入一个正整数 判断它是否为质数 质数只能被1和自身整除 例5 通过定积分法求单位圆面积 以获得 值 矩形法 例6 生成20个两位正整数 找出其中的最大数和最小数 指出它们分别是第几个数 5 4循环结构的嵌套 下面是几种合法的循环嵌套形式 1 while 2 for while do while 3 while 4 do for for while 5 4循环结构的嵌套 例5 6 编程输出以下形式的乘法九九表 1 1 11 2 21 3 31 4 41 5 51 6 61 7 71 8 81 9 92 1 22 2 42 3 62 4 82 5 102 6 122 7 142 8 162 9 18 9 1 99 2 189 3 279 4 369 5 459 6 549 7 639 8 729 9 81main inti j for i 1 i 9 i i作为外循环控制变量控制被乘数变化 printf n for j 1 j 9 j j作为内循环控制变量控制乘数变化 printf 1d 1d 2d i j i j 5 4循环结构的嵌套 例5 7 全班有30个学生 每个学生考8门课 要求分别统计出每个学生各门课的平均成绩 例1 找出1000以内全部的质数 例2 用随机函数生成100个三位正整数 找出其中的全部质数并输出例3 不使用系统提供sin函数 计算sin 20 提示 使用泰勒级数 取前20项 注意角度要转换为弧度 5 4循环结构的嵌套 main inti j score sum floataver j 1 while j 30 sum 0 for i 1 i 8 i printf EnterNO dthescore d j i scanf d 5 4循环结构的嵌套 使用循环的嵌套结构要注意以几点 外层循环应 完全包含 内层循环 不能发生交叉 例如下面这种形式是不允许的 do for while 嵌套的循环控制变量一般不应同名 以免造成混乱 5 4循环结构的嵌套 嵌套的循环要注意正确使用缩进式书写格式来明确嵌套循环的层次关系 以增加程序的可读性 break语句break语句的功能是使执行从包含它的最内层循环或开关语句中跳出 转到switch结构或该循环结构外的下一语句执行 这将导致包含它的最内层循环 while for do while 或switch语句的终止 break语句的一般形式 break 5 5转向语句 例5 8 找出100 300之间第一个能17整除的数 main inti for i 100 i 300 i if i 17 0 判断是否能被17整除 printf d n i break 找到第一个能被17整除的数 结束整个循环 5 5转向语句 使用break语句应注意以下几点 break语句只能用于switch结构或循环结构中 在循环结构中应用时 通常与if语句配合使用 在嵌套的循环结构中使用时 break语句只能跳出 或终止 包含它的最内层循环 而不能同时跳出 或终止 多层循环 5 5转向语句 continue语句continue语句的作用是结束本次循环 使得包含它的循环 while do while for 开始下一次重复continue语句的一般形为 continue 例5 9 把100 200之间不能被7整除的数输出 main intn for n 100 n 200 n if n 7 0 continue printf d t n 5 5转向语句 使用continue语句时要注意以下几点 continue语句只能用于循环结构中 通常也要有if语句配合使用 continue语句和break语句虽然都实现了程序执行方向的无条件转移 但它们的区别是 continue语句只能结束本次循环 而不是终止整个循环的执行 break语句则是立即结束整个循环过程 5 5转向语句 goto语句goto语句为无条件转向语句 功能是 把程序控制转移到标号指定的语句处 使程序从指定的标号处的语句开始继续执行 goto语句的一般形式为 goto标号 标号 语句 标号是由用户命名的标识符 其后要跟一个冒号 标号的命名规则与变量名相同 其作用是用来表示goto的目标 标号可以用在任何语句前面 但必须与引用它的goto语句在同一个函数中 一般来讲 goto语句的用途有两种 与if语句一起构成循环结构 从循环体中跳到循环体外 5 5转向语句 例5 10 从键盘上输入10个整数 求其累加和 采用if语句和goto语句构成的循环编程实现 main inti sum x i 1 sum 0 loop if i 10 gotoend loop为标号 printf Enteradata scanf d end为标号 5 6循环结构程序设计举例 计数型循环 5 6循环结构程序设计举例 例5 11 输入10个整数 求出其中的最大值与最小值 main inti intx max min printf npleaseinputthefirstnumber scanf d 5 6循环结构程序设计举例 例5 12 输入10个整数 输出其中正数的个数及平均值 includemain intsum i k x printf ninput10numbers sum 0 k 0 for i 0 i 10 i scanf d 5 6循环结构程序设计举例 if k 正数的个数不为0 printf nnumbers d average 4f k 1 0 sum k elseprintf nnumbersis0 运行情况如下 input10numbers 1 8 3 5 9 3 77 2 9 6 numbers 7 average 5 4286 5 6循环结构程序设计举例 例5 13 计算s 1 2 3 n n由终端输入 includemain inti j n longsum term 定义变量sum term为长整型变量 printf ninputn scanf d 把i的结乘累加到sum单元中 5 6循环结构程序设计举例 printf nsum ld n sum 程序的运行情况如下 inputn 4 sum 33条件型循环 例5 14 利用格里高利公式求 1 直到最后一项的绝对值小于等于10 6为止 include math h main intsign 1 floatn pi t 5 6循环结构程序设计举例 t 1 0 n 1 0 pi 0 0 do pi pi t n n 2 sign sign 符号转换 t sign n while fabs t 1e 6 pi pi 4 printf npi 10 6f pi 运行情况 pi 3 141594 5 6循环结构程序设计举例 例5 15 输入一个整数n n 3 判断是否为素数 include math h main intn i flag printf nEnterainteger scanf d 5 6循环结构程序设计举例 运行情况 Enterainteger 78 78isnotprimenumber 再运行 Enterainteger 137 137isprimenumber 5

温馨提示

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

评论

0/150

提交评论