




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第六章,循环结构程序设计,概述,循环:规律性的重复,即依据特定条件重复执行 基本操作,表现在程序设计中:算法中含有循环结构,例:在屏幕上输出10个*号,printf(“*n”);,又例:在屏幕上输出100,1000,10000个*号,分析,输出一个*号 putchar(*),输出1000个*号 putchar(*)执行1000次即可,分析,基本操作,为什么使用循环算法呢?,降低解题难度,减少程序代码,提高执行效率。,循环型程序设计解题关键,1、确定循环体,确定哪些操作需反复执行,2、确定循环执行条件,确定什么条件循环执行,例:在屏幕上输出1000个*号,1、确定循环体 putchar(*),2
2、、确定循环条件 i=1000( i初值为1),计数器,i=i+1 (使循环趋向于结束的操作),又如:求1+2+3+4+.100的和,分析如下: 1 + 2 + 3 + 4+. +99+100,部分和,部分和,部分和,和,sum=sum+i,1、确定循环体 sum=sum+i; 2、确定循环执行条件 i=100 初值:sum=0;i=1;,i+;,sum=0+1 sum=1+2=3 sum=3+3=6 sum=6+4 sum=4950+100=5050,if 和 goto语句,for语句,do while语句,循环语句与洗衣机,循环控制语句的作用: 控制核心语句(循环体)的执行次数,循环控制语句
3、,(用来编制循环结构程序),while语句,if 和 goto语句,无条件转向语句,形式:goto 语句标号; (标识符:) 功能:从goto语句所在处,转向本函数内标号所在处,可用if和goto 语句构成循环,可执行语句,loop: if(p) s; goto loop;,例:编程输出1000个*号(用if和goto),分析问题,描述算法,#include main() int i=1; loop:if(i=1000) putchar(*); i+; goto loop;,main() int sum=0,i=1; loop:if(i=100) sum=sum+i; i+; goto loo
4、p; printf(“sum is %dn”,sum);,sum=0+1 sum=1+2=3 sum=3+3=6 sum=6+4 sum=4950+100=5050,while语句 一般形式:,while(表达式) 循环体语句;,执行流程:,简单语句 复合语句 空语句,特点:先判断表达式,后执行循环体 说明: 循环体有可能一次也不执行 循环体可为任意类型语句 下列情况,退出while循环 条件表达式不成立(为零) 循环体内遇break,return,goto 无限循环: while(1) 循环体;,举例,例:编程输出1000个*号(用while),while(P) s,#include mai
5、n() int i=1; while(i=100) putchar(*); i+; ,又如:求1+2+3+4+.100的和,/#include void main() int i,sum=0; i=1; while(i=100) sum=sum+i; i+; printf(%d,sum); ,dowhile语句 一般形式:,do 循环体语句; while(表达式);,执行流程:,特点: 先执行循环体,后判断表达式 说明: 至少执行一次循环体 dowhile可转化成while 结构,While循环,举例,例:编程输出1000个*号(用dowhile),do s while(p);,#includ
6、e main() int i=1; do putchar(*); i+; while(i=1000); ,#include main() int i,sum=0; i=1; do sum+=i; i+; while(i=100); printf(%d,sum); ,又如:求1+2+3+4+.100的和,while和dowhile比较,main() int i,sum=0; scanf(%d, ,main() int i,sum=0; scanf(%d, ,for语句 一般形式:,for(expr1 ; expr2 ; expr3) 循环体语句;,执行流程:,说明: for语句中expr1, e
7、xpr2 ,expr3 类型任意,都可省略,但分号;不可省 无限循环: for(;) ; for语句可以转换成while结构,expr1; while(expr2) 循环体语句; expr3; ,例:编程输出1000个*号(用for),for(i=1 ; i=1000;) putchar(*); i+;,i=1; for( ; i=1000;) putchar(*); i+;,#include main() int i; for(i=1;i=1000;i+) putchar(*); ,for(i=1; i=1000;putchar(*),i+) ;,for(循环变量赋初值;循环条件;循环变量增
8、值) 循环体语句; ,break语句与continue语句(1),break语句 形式: break; 功能: 跳出循环结构,break;,break;,break;,break只能终止并跳出最近一层的结构 break不能用于循环语句和switch语句之外的任何其它语句之中,举例,例 break举例:输出半径为110的圆面积, 面积大于100时停止,#define PI 3.14159 main() int r; float area; for(r=1;r100) break; printf(r=%d,area=%.2fn,r,area); ,小写字母转换成大写字母,直至输入非小写字母,#in
9、clude main() int i,j; char c; while(1) c=getchar(); if(c=a ,continue语句 形式: continue; 功能:结束本次循环,break语句与continue语句(2),continue;,break;,区别,例1:,break语句与continue语句(3),求1+2+3+4+5+6+7+8+9+10+的和,直至S1200。,例2:,求键盘输入若干个整数的和,直至输入-1,main() int i,j,k; for(i=0,j=100;i=j;i+,j-) k=i+j; printf(%d+%d=%dn,i,j,k); ,#in
10、clude main() char c; for(;(c=getchar()!=n;) printf(%c ,c); ,练习 程序分析,循环语句的使用规则,循环结构问题分析,本讲总结,重点掌握:,打印26个英文字母(三种语句编程),打印26个英文字母,例4:,三种语句编程,作业: 6.2、6.3、6.6,注意点: 1、各种控制结构的形式及功能 2、如何避免死循环 3、break语句和continue语句的功能,循环结构程序设计,程 序 举 例,循环型程序设计的两种典型算法(穷举法,迭代法),穷举法(枚举法),基本思想 对问题的所有可能状态一一测试,直到找到问题的答案或将全部可能状态都测试完为止
11、,例:录取新生,循环体 if(p ) s1,循环结束条件 i10000,计数器,i=i+1,计数法 循环次数已知,设置变量用来描述循环执行的次数,次数达到循环停止,例:打印出100700之间能被2整除不能被6整除的数字,穷举法举例,循环体 1、 if(p ) s1111111111111,循环结束条件 n700,p: n%2=0,2、n+,标志法,达到某一目标后循环结束(设置标志变量),循环结构的两种典型算法(穷举法,迭代法),循环结构的两种典型算法(穷举法,迭代法),穷举法举例,例:对于任意一整数,判断其是否为素数。,分析:m%n=rm:任意整数 n:2m-12 若r均不为0,则m为素数,循
12、环体 1、r=m%n;,3、n+;,2、if(r= =0) break;,循环结束条件 n,或r=0,循环结构的两种典型算法(穷举法,迭代法),迭代法,基本思想 不断用新值取代变量的旧值,或由旧值递归出新值,例:人口增长问题,例:求1*2*3*4*5,例:求1-1/2+1/3-1/4+1/5,例:求1+2+3+4.+100,sum=sum+n,例:人口增长问题,迭代法举例,分析,现有人口: 12亿 1年以后: 12*(1+2%) 2年以后: (12*(1+2%))*(1+2%) n年以后: (12*(1+2%)*.).*(1+2%),现有人口12亿,每年按2%递增, 问十年后将有多少人?,设人
13、口数为m(初值为12亿),则其后每一年的人口数m为m*(1+2%)(注:m为上一年的人口数),m的值不断变化由旧值推出新值,反复执行m=m*(1+2%),循环体 1、 m=m*(1+2%),循环结束条件 i10,计数法,2、i+,迭代问题分析关键要素,1、迭代初值 2、迭代公式3、迭代次数,又例:人口增长问题,现有人口12亿,每年按2%递增, 问多少年后人口数超过23亿?,1、迭代初值 m=12 2、迭代公式 m=m*(1+2%) 3、迭代次数 ?,循环体 1、 m=m*(1+2%) 2、 year+;(year 初值为0),循环结束条件 m23,标志法,循环型程序设计举例,例1:,/4 求的
14、近似值,直到最后一项的绝对值小于10-6为止,1+2+3+4+5+6+7+8+9+10+.,类似问题,解题关键: 1、迭代公式 sum=sum+t; t=. 2、迭代初值 sum= t= 3、迭代次数 循环退出的条件,关键是找每一项的变化规律,迭代公式推导: pi=pi+t;,迭代初值:pi=0;n=1;s=1;t=1,t=s/n;,迭代次数:由t决定,当fabs(t) 10-6 迭代结束,s=-s; n=n+2;,迭代公式: sum=sum+t; n=n+2; s=-s; t=s/n;,具体分析,相一致,分子:1,-1,1,-1 分母:1,3,5,7,.,例2:打印Fibonacci数列前4
15、0个数, 数列具有如下特点:第1,2两个数为1,1从第三个数开始,该数是其前面两个数之和,F1=1 F2=1 Fn=F n-1+F n-2 (n=3),迭代公式推导 F=F1+F2,F代表数列 从第三项起的某一项,F1代表该项的前两项,F2代表该项的前一项,迭代初值:F1=1,F2=1,迭代次数:由题目要求决定(可用标志法或计数法),1,1,2,3,5,8,F1=F2 F2=F,求:打印Fibonacci数列前40个数(方法二),迭代公式推导1 F=F1+F2 F1=F2 F2=F,迭代公式推导2 F1=F1+F2 F2=F1+F2,一次得到两个数,分析F1,F2的含义,思考,例3:判断m是否
16、是素数,算法:m%n=r n: 2sqrt(m) 若r均不为0,则表明m是素数,循环:穷举法,例4:打印100200之间的全部素数,循环的嵌套(自己分析),例5:译密码(输入一行字符,输出其相应密码),算法分析: 1、输入字符为c:(AV或av) 转变为c+4; 2、输入字符为c:(V或v之后) 转变为c-22;,分析程序,例:输入China!转换为Glmre!,void main() char c; while(c=getchar()!=n) if(c=a ,编程练习,1、爱因斯坦的阶梯问题,设有一阶梯,每步跨2级,最后余 1级;每步跨3级,最后余2级;每步跨5级,最后余4级;每步跨6级,最后余5级;每步跨7级,正好到阶梯顶。问 至少有多少阶梯?,穷举法,设m为阶梯数 m%2=1 for(i=1;i10;i+) printf(%4d,i); printf(n-n); for(i=1;i10;i+) for(j=1;j10;j+) printf(j=9)?%4dn:%4d,i*j); ,例 求输入的十个整数中正数的个数及其平均值,/
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 企业购物合同范本
- 2025年新余货运资格证模拟考试新题库
- 上海卖房定金合同范本
- 仪器采购合同范本模板
- 农业打药合同范本
- 第五章 第二节 一 气温 世界气温的分布教学设计-2024-2025学年湘教版初中地理七年级上册
- 业主安装电梯合同范本
- 全国物业服务合同范本
- 代理经销产品合同范本
- 借款合同范本担保人范本
- 变电站电网侧储能项目可行性研究报告
- 新版统编版一年级道德与法治下册全册教案(完整版)教学设计含教学反思
- 4.2 同学相伴 第二课时 课件 2024-2025学年三年级下册道德与法治 统编版
- 城市开放空间-课件
- 2025年春季学期学校德育工作计划安排表(完整版)
- 湖南2024年湖南省水利厅所属事业单位招聘57人笔试历年参考题库附带答案详解
- 2025年全球及中国调频储能行业头部企业市场占有率及排名调研报告
- 2024年加氢站技术规范
- 《幼儿教育政策与法规》教案-单元4 幼儿园的保育和教育
- 小学思政培训
- 《森林火灾预防与扑救技术课件教程》
评论
0/150
提交评论