版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第5章循环结构,一个电话本程序的主菜单 问题:在完成一次操作后,如何重新出现菜单? 教材114页,处理成批数据问题。,引例:,循环结构流程,循环结构的构成,循环体重复执行的操作 循环控制条件重复执行操作的条件或结束重复执行操作的条件 需要注意:初始状态,循环条件,每次循环后的变化,例1:求,while语句,while (表达式) 语句,流程图,while语句,例1:求,int i=1, sum=0; while (i=100) sum=sum+i; /*也可写为sum+=i*/ i+; printf(1+2+.+100=%dn,sum);,do-while语句,do 语句 while (表达式
2、),N-S图,流程图,do-while语句,例1:求,int i=1,sum=0; do sum=sum+i; i+; while(i=100); printf(1+2+.+100=%dn,sum);,例1:求,练习1:输入10个数求和 练习2:求 n! = 1 * 2 * * n,计算机最擅长的工作之一:累加求和,for语句的基本格式,for (表达式1;表达式2;表达式3) 语句,for语句的常用形式,for (循环变量赋初值;循环条件;循环变量增值) 语句,for语句,例1:求,int i,sum=0; for (i=1;i=100;i+) sum=sum+i; printf(1+2+.
3、+100=%dn,sum);,for语句,例1:求,问题的扩展: (1) 求 1 100 间奇数的和 (2) 任意输入一组10个数,求它们的和 (3) 任意输入一个正整数n,求1+2+n (4) 任意输入一个正整数n,求n!,for语句,例1:求,问题的扩展: (1) 求 1 100 间奇数的和,int i,sum=0; for (i=1;i=100;i=i+2) sum=sum+i; printf(1+3+.+99=%dn,sum);,int i,sum=0; for (i=1;i=100;i+) if(i%2=1)sum=sum+i; printf(1+3+.+99=%dn,sum);,f
4、or语句,例1:求,问题的扩展: (2) 任意输入一组10个数,求它们的和,int i; float x,sum=0; for (i=1;i=5;i+) scanf(%f,for语句,例1:求,问题的扩展: (3) 任意输入一个正整数n,求1+2+n,int i,n,sum=0; printf(n=); scanf(%d,for语句,例1:求,问题的扩展: (4) 任意输入一个正整数n,求n!,int i,n; double fac=1; printf(n=); scanf(%d,考虑到阶乘值的范围,需要双精度才能够保存。但同时应注意,双精度类型的有效位数是15位,当n值较大时,其计算结果还是
5、有误差的。,for语句,例2:输入10个成绩,求最大值。,int i,x,max; max=0; for (i=1;imax) max=x; printf(max=%dn,max);,考虑: 求最小值,for语句,例2:输入10个成绩,求最大值。,#include #include #include int main() int i,x,max; srand(unsigned) time(NULL); max=0; for (i=1;imax) max=x; printf(max=%dn,max); return 0; ,为方便调试程序,引入随机函数,减少输入数据的繁琐。 参见补充阅读材料。,
6、循环嵌套,例3:显示1!,2!,.,10!,int i, n, fac; for (n=1;n=10;n+) fac=1; for(i=1;i=n;i+) fac=fac*i; printf(%d!=%ldn,n,fac); ,循环嵌套,例4:求,int i,n, fac,sum=0; for (n=1;n=10;n+) fac=1; for (i=1;i=n;i+) fac=fac*i; sum=sum+fac; printf (1!+2!+.+10!=%ldn,sum);,循环嵌套,例4:求,int n,fac,sum=0; for (fac=1,n=1;n=10;n+) fac=fac*
7、n; sum=sum+fac; printf (1!+2!+.+10!=%ldn,sum);,又一种方法,利用阶乘的递推关系:n!=n*(n-1)! (n1),只需要一层循环。,例5:显示九九乘法表,int i, j; for (i=1; i=9; i+) for (j=1; j=i; j+) printf(%d*%d=%2d , i, j, i*j); printf(n); ,改变循环状态,break语句退出循环 通常与选择结构配合,改变循环状态,continue语句 结束本次循环 通常与选择结构配合,概念:素数(质数)是只能被1和本身整除的正整数 算法:对于正整数m(m2),用2m-1中的
8、每一个正整数i去除m,只要有一个能够整除,就不是素数,例2.5是算法分析;例2.10是不好的流程图;例2.15是其改进,以及N-S图。 例5.9的流程图与例2.15有一点儿不同。,教材例5.9 输入正整数,判断是否素数,算法改进:用2m去除m,提高效率,例5.9 输入一个正整数,判断是否素数 扩展:,例5.10 显示区间 100,200 内的所有素数,人的解决方法列方程求解 设有鸡C只,兔R只,例6:鸡兔问题笼中有鸡、兔,头共H个,脚共F只。问有鸡、兔各几只?,例6:鸡兔问题,计算机的解决方法将各种可能情况逐个试算,找到符合要求的结果,设鸡C只(0CH) 若兔0只,则脚有.只 若兔1只,则脚有
9、.只 若兔2只,则脚有.只 . 若兔H只,则脚有.只,例6:鸡兔问题,计算机的解决方法将各种可能情况逐个试算,找到符合要求的结果,鸡0只,兔H只,则脚有.只F 鸡1只,兔H-1只,则脚有.只F 鸡2只,兔H-2只,则脚有.只 F . 鸡C只,兔H-C只,则脚有.只=F,显示结果 . 鸡H只,兔0只,则脚有.只 F,例6:鸡兔问题,计算机的解决方法将各种可能情况逐个试算,找到符合要求的结果,鸡0只,兔H只,则脚有.只F 鸡1只,兔H-1只,则脚有.只F 鸡2只,兔H-2只,则脚有.只 F . 鸡C只,兔H-C只,则脚有.只=F,显示,结束 . 鸡H只,兔0只,则脚有.只 F,例6:鸡兔问题,int heads,feet,chicken,rabbit; printf(heads=); scanf(%d, ,阅读程序练习for语句的灵活运用,int value; for(value=36;value0;value/=2) printf(%3d,value);,int value; value=36; for( ;value0;value/=2) printf(%3
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 应届生实习报告总结
- 月转正工作总结
- 2026年全国乙卷高考英语易错知识点强化卷含解析
- 免疫学课件 免疫耐受14
- 2026年新高考全国卷语文古诗文专题测试卷(含解析)
- 电解熔铸工安全风险竞赛考核试卷含答案
- 砖瓦生产中控员安全强化评优考核试卷含答案
- 炭素配料工岗前核心能力考核试卷含答案
- 金属打火机制作工安全知识能力考核试卷含答案
- 低压成套设备装配配线工岗前趋势考核试卷含答案
- 2026年交管12123驾照学法减分完整版练习题库及1套完整答案详解
- 江苏交通控股有限公司笔试内容
- 国家义务教育质量监测八年级劳动素养综合测试题
- (二模)温州市2026届高三第二次适应性考试地理试卷(含答案)
- 《公路水运工程施工安全标准化指南》
- 2026年中考《语文》作文10大主题抢分万能模板
- 社区信息化网络建设推广与应用项目可行性研究报告
- 阿里员工绩效考核制度
- 厨房设备施工安全措施
- 《建设强大国内市场 加快构建新发展格局》课件
- 12N6热力工程(可编辑)
评论
0/150
提交评论