C语言第5章 循环结构程序设计_第1页
C语言第5章 循环结构程序设计_第2页
C语言第5章 循环结构程序设计_第3页
C语言第5章 循环结构程序设计_第4页
C语言第5章 循环结构程序设计_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

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

文档简介

1 第5章 循环结构程序设计 2 一 实现循环结构的控制语句二 循环嵌套三 循环结构程序举例 主要内容 3 一 实现循环结构的控制语句 while语句do while语句for语句break continue语句几种循环的比较 4 格式 while 表达式 语句 5 1while语句 举例 P79 求1 10的累加和 include stdio h intmain inti sum i 1 sum 0 while i 10 sum sum i i printf sum 5d n sum return0 说明 1 循环体如果包含一个以上的语句 必须使用复合语句形式 2 在循环体中 必须有使循环条件趋向于不满足 假 的语句 3 先判断后执行 1求1 100的累加和 2求1 10的奇数和 3求N 5 求1到10的奇数和 举例 include stdio h intmain inti sum i 1 sum 0 while i 10 sum sum i i 2 printf sum 5d n sum return0 运行结果 6 includevoidmain inti sum 0 i 1 while i 10 if i 2 0 sum sum i i printf d n sum 运行结果 求1到10之间的偶数和 举例 7 举例 求N includevoidmain inti 1 n floatfac 1 printf 请输入n scanf d 运行结果 8 利用公式 sum 1 3 5 7 9 11 求前10项的和 includevoidmain ints i sum t n i 0 n 1 sum 0 t 1 s 1 while i 10 sum sum t n n 2 s s t s n i printf sum d n sum s 变化的符号i 第i项n 第i项的绝对值t 第i项的值sum 和 举例 运行结果 9 举例 例5 2设s 1 2 3 n 求s不大于400000时最大的n includeintmain intn 1 longints 1 while s 400000 n n 1 s s n printf 不大于400000时的最大n为 d ns值为 ld n n 1 s n return0 运行结果 前n项的乘积 81 10 举例 例5 3现有某班20名学生的C语言成绩 求该班学生的C语言的平均成绩 运行结果 请输入学生成绩 23凵89凵67凵78凵94凵56凵34凵83凵90凵67凵48凵72凵81凵65凵74凵87凵73凵67凵90凵98 20名学生的C语言平均成绩为 71 8 includeintmain floattotal 0 score average inti 1 printf 请输入学生成绩 while i 20 scanf f total 前i名学生的成绩的和score 每一名学生的成绩average 平均成绩 81 11 格式 do循环体语句while 表达式 5 2do while语句 举例 P85 求1 10的累加和 include stdio h intmain inti sum i 1 sum 0 do sum sum i i while i 10 printf sum 5d n sum return0 说明 1 循环体如果包含一个以上的语句 必须使用复合语句形式 2 在循环体中 必须有使循环条件趋向于不满足 假 的语句 3 先执行 后判断 至少执行一次 12 举例 while和do while循环的比较 includevoidmain inti sum 0 scanf d includevoidmain inti sum 0 scanf d 输入 1 输入 11 sum 55 sum 11 此程序的功能 什么情况下两者结果相同 13 格式 for 表达式1 表达式2 表达式3 语句 P87 for 循环变量赋初值 循环条件 循环变量增值 语句 执行过程 1 先求解表达式1 2 求解表达式2 若其值为真 则执行循环体语句 然后执行第 3 步 若为假 则结束循环 转到第 5 步 3 求解表达式3 4 转向步骤 2 5 循环结束 执行for语句下面的一个语句 5 3for语句 14 举例 求1 100的累加和 includevoidmain inti sum sum 0 for i 1 i 100 i sum sum i printf sum 5d n sum 1求1 50的累加和 2求1 100的奇数和 3求N i 1 while i 100 sum sum i i 15 for 表达式1 表达式2 表达式3 语句 说明 三个表达式都可以省略 结果 16 说明 1 i 1 for i 10 i sum sum i 2 for i 1 i sum sum i 3 for i 1 i 10 sum sum i i for i 1 i 10 i sum sum i 表达式1可以省略 但其后的分号不可以省略 没有循环结束条件 构成了死循环 for i 1 i 10 i sum sum i i 1while 1 sum sum i i 17 说明 4 5 for sum sum i 6 表达式1和表达式3可以是与循环变量无关的表达式 for i 10 sum sum i i 7 表达式2一般是关系表达式 也可以是数值或字符表达式 while i 10 sum sum i i while 1 sum sum i 表达式1和表达式3可以同时省略 此时等同于while语句 for sum 0 i 1 i 100 i sum sum i 建议 for语句中只放与循环控制有关的语句 18 说明 1 三种循环语句在处理循环问题时 一般可以相互替代 2 对于循环次数固定的问题 用for语句实现比较简单 3 对于循环次数不确定的问题 可用while语句或do while语句实现 4 while语句 先判断 后执行 do while语句 先执行 后判断 几种循环语句的比较 19 格式 while 表达式1 if 表达式2 break 5 4break continue语句 举例 sum 0 for i 1 i5 break sum sum i printf sum 5d n sum while 表达式1 if 表达式2 conitue 结束整个循环 结束本次循环 sum 0 for i 1 i 10 i if i 5 continue sum sum i printf sum 5d n sum 1到5的累加和 6到10的累加和 20 举例 例5 11分析下面程序的运行结果 P90 结束整个循环 includeintmain inti 0 a 0 while i 20 if i 10 0 break elsei i 11 a i printf d n a return0 ii 10第1次执行循环00条件表达式i 10 0成立 执行break语句 跳出循环 运行结果 11 21 举例 例5 12输出100以内能被7整除的最大数 P91 nn 7第1次执行循环1002第2次执行循环991第3次执行循环980第4次执行循环时条件表达式n 7 0成立 执行break语句 跳出循环 运行结果 100以内能被7整除的最大数为 98 22 举例 例5 13分析下面程序的运行结果 P92 结束本次循环 include stdio h intmain inti 0 s 0 do if i 2 i continue i s i while i 7 printf d n s return0 ii 2i scontinue是否执行第1次执行循环0011否第2次执行循环1121是第3次执行循环2034否第4次执行循环3144是第5次执行循环4059否第6次执行循环5169是第7次执行循环60716否此时条件表达式1 7不成立 结束循环 运行结果 16 S 1 3 5 7 23 includevoidmain inti for i 1 i3 break if i 2 printf elsecontinue printf printf n 分析如下程序的输出结果 举例 24 举例 例5 14把100 200之间的能被13整除的数输出 P92 include stdio h intmain intn for n 100 n 200 n if n 13 0 continue elseprintf d n printf n return0 运行结果 104117130143156169182195 include stdio h intmain intn for n 100 n 200 n if n 13 0 printf d n printf n return0 25 概念 一个循环体内又包含另一个完整的循环结构 称为循环嵌套 举例 例5 15马克思曾经做过这样一道趣味数学题 有30个人在一家小饭馆里用餐 其中有男人 女人和小孩 每个男人花3先令 每个女人花2先令 每个小孩花1先令 共花去50先令 问男人 女人和小孩各几人 男人 女人和小孩均存在 P83 include stdio h intmain intman women child for man 1 man 16 man for women 1 women 23 women child 30 man women if man 3 women 2 child 1 50 printf man 6dwowen 6dchild 6d n man women child return0 5 5循环嵌套 男人人数 最多15人 16 3 48 女人人数 最多23人 24 2 48 小孩人数 30 man women 26 运行结果 man 1women 18chile 11man 2women 16chile 12man 3women 14chile 13man 4women 12chile 14man 5women 10chile 15man 6women 8chile 16man 7women 6chile 17man 8women 4chile 18man 9women 2chile 19 27 28 概念 一个循环体内又包含另一个完整的循环结构 称为循环嵌套 1234246836912481216 举例 打印乘法口诀表 includevoidmain inti j for i 1 i 4 i for j 1 j 4 j printf 4d i j printf n i 1 j 11 1j 21 2j 31 3j 41 4i 2 j 12 1j 2 i 3i 4 5 5循环嵌套 第六章循环结构程序设计 29 124369481216 includevoidmain inti j for i 1 i 4 i for j 1 j i j printf 4d i j printf n 5 5循环嵌套 思考1 第六章循环结构程序设计 30 includevoidmain inti j for i 1 i 4 i for j 1 j 5 i j printf 4d i j printf n 5 5循环嵌套 思考2 1234246364 第六章循环结构程序设计 31 includevoidmain inti j for i 1 i 4 i for j 1 j 4 i j printf 4d for j 5 i j 4 j printf 4d i j printf n 5 5循环嵌套 思考3 4686912481216 第六章循环结构程序设计 32 includevoidmain inti j for i 1 i 4 i for j 1 j i 1 j printf 4d for j i j 4 j printf 4d i j printf n 5 5循环嵌套 思考4 123446891216 第六章循环结构程序设计 33 举例 例5 16打印乘法口诀表 P95 include stdio h intmain inti j result for i 1 i 9 i for j 1 j 9 j result i j 计算i行j列上的元素值printf d d 3d t i j result printf n return0 resulti 1 j 11 1j 21 2j 31 3 j 91 9i 2 j 12 1j 22 2 j 92 9 i 9 j 19 1j 29 2 j 99 9 1 1 11 2 2 1 9 92 1 22 2 4 2 9 18 9 1 99 2 18 9 9 81 34 include stdio h intmain inti j result for i 1 i 9 i for j 1 j 9 j result i j 计算i行j列上的元素值printf d d 3d t i j result printf n return0 resulti 1 j 11 1j 21 2j 31 3 j 91 9i 2 j 12 1j 22 2 j 92 9 i 9 j 19 1j 29 2 j 99 9 35 举例 例5 17求Fibonacci数列的前40个数 按每行4个进行输出 include stdio h intmain intn longf1 f2 f1 1 f2 1 printf 10d 10d f1 f2 for n 1 n 19 n if n 2 0 printf n 每行输出4个f1 f1 f2 f2 f2 f1 printf 10d 10d f1 f2 printf n return0 特点 第1 2个数为1 1 从第三个数开始 该数是其前面两个数之和 F1 1 n 1 F2 1 n 2 Fn Fn 1 Fn 2 n 3 P96 1123581321345589144 5 6程序举例 36 输出下列图形 112123123412345123456123456712345678123456789 include stdio h intmain inti j for i 1 i 9 i for j 1 j i j printf 3d j printf n return0 37 举例 例5 4从键盘输入一个非负整数 判断m是否是素数 P82 素数 质数 只能被1和它本身整除的数 判别方法 57 若2 56之间的每一个数都不能整除57 则57为素数 否则57不是素数 m k m 1 i 2 k 若每一个i的值都不能整除m 则m为素数 否则m不是素数 k m 1 k m 2 m 1 2 k sqrt m sqrt m 1 flag 1 k m 1 for i 2 i k i if m i 0 flag 0 break if flag 1 printf yes elseprintf no k m 1 for i 2 i k 1 printf yes elseprintf no include includeintmain intm k i n 0 scanf d 38 39 include math h include stdio h intmain intm flag 0 i 2 printf 请输入一个非负整数 n scanf d P82 40 第六章顺序结构程序设计 举例 求100 200之间的全部素数 include includeintmain intm k i n 0 for m 101 m k 1 printf 4d m n n 1 if n 10 0 printf n return0 if i k 1 printf 4d m n n 1 if n 10 0 printf n include 输出100到200之间的素数 includevoidmain inti k m flag 1 for m 100 m 200 m k sqrt m for i 2 i k i if m i 0 flag 0 break if flag 1 printf d t m printf n 41 flag 1 42 例1 利用公式 4 1 1 3 1 5 1 7 求 的近似值 直到某一项的绝对值小于10 6为止 pi 1 1 3 输出4 pis 1 1 n 1 3 5 7 t s n include includevoidmain ints floatn t pi t 1 pi 0 n 1 s 1 while fabs t 1e 6 pi pi t n n 2

温馨提示

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

评论

0/150

提交评论