版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1,第六讲 控制流-循环结构程序设计,教材:C程序设计导论,2,本讲重点,1熟练掌握三种循环语句的基本结构以及循环语句的嵌套。 2掌握goto语句的一般形式。 3. 熟练掌握break、continue语句使用 4. 使用三种基本结构编写简单的程序,3,循环结构,功能:重复执行某一种动作(代码)若干次。 goto语句构成的循环 while循环 dowhile循环 for循环 while、dowhile、for三种循环的比较 break、continue语句的作用及在循环中的应用 循环的嵌套使用:一个循环中又包含另一个循环成为循环的嵌套.上面讲到的三种循环可以互相嵌套.,4,6.1 while语
2、句,1、功能:while语句一般完成当型循环,2、语句格式为:while (表达式p) 语句3、执行过程:当表达式P为非零时,反复执行A操作,直到P为假时才停止。,5,Sum=sum+i i+ +,当i=100,6.1 while语句,100 例3.9:求 n n=1 #include void main(void) int i,sum=0; i=1; 要点: 语句一面要么是单条语句,要么是复合语句 while (i=100) 循环体若不止一条语句时, sum=sum+i; 应用括起来。 i+; 在循环体中应有使循环趋于结束 的语句,以避免“死循环”。 printf(“%d”,sum); ,i
3、=1,6,6.1 while语句,例:个位数是6,且能被3整除的5位数共有多少个?. #include void main(void ) long int n=10006; int count=0; while(n=99999) if(n%3=0) count+; n+=10; printf(“count=%dn”,count); ,7,6.2 do-while语句,1、功能:dowhile语句一般完成直到型循环, 2、格式为: do 语句块; while (表达式p); 3、执行过程:先执行循环体,后判定表达式,当表达式的值为“假”时,循环结束。,8,6.2 do-while语句,100 例
4、如:求 n n=1 #include void main(void) int i,sum=0; i=1; do sum=sum+i; i+; while(i=100); printf(“%d”,sum); 从上面对一个问题的两种解决方法可以看出:while循环与do_while循环在绝大多数情况下是可以相互转化的.,9,6.3 for语句,1、功能:用于循环次数已确定或给定循环条件的情况,适合于描述一个事物从初始态到终止态的变化过程。最为灵活。 2、语句格式为:for(表达式1;表达式2;表达式3) 语句 3、执行过程为:(1)先求解表达式1(初值);(2)求解表达式2,并判定其值是否为真(非
5、0),若为真,则执行其所包含的语句,然后执行下面的步骤3;若为假,则直接执行步骤5;(3)执行循环体语句后,求解表达式3;(4) 转回执行步骤2;(5)执行for下面的语句.,10,T,F,11,6.3 for语句,100 例:求 n n=1 #include void main(void) int i,sum=0; for(i=1;i=100;i+) sum=sum+i; printf(“%d”,sum); ,12,6.3 for语句-使用要点,1、for语句中的表达式1可以省略,但在for循环之前应给循环变量赋值. 例如:i=1;for(;i=100;i+) sum=sum+i; 2、表达
6、式2也可以省略,但循环将陷入死循环. 例如:for(i=1;i+) sum=sum+i; 3、表达式3也可以省略,但应在循环体中增加使循环变量值改变的语句. 例如:for(sum=0,i=0;i=100;) sum=sum+i; i+; 4、表达式1和表达式3同时省略也允许, 例如:i=1;sum=0; for(;i=100;) sum=sum+i; i+; 这是完全与while循环等同. 5、三个表达式都可以省略,但“;”不能省略。 for(;) sum=sum+i; 循环将无休止的执行下去,13,6.3 for语句-使用要点,6、表达式1中的表达式可以是循环变量的赋初值的表达式,也可是与赋
7、初值根本无关的其他表达式,或者两者兼而有之.例如:for(sum=0,i=1;i=100;i+) sum=sum+i; 表达式3也可以出现同样的情况,例如: for(sum=0,i=1;i=100;sum=sum+i,i+); 7、表达式2一般清况下是关系表达式或逻辑表达式,也可以是其他表达式, 例如: for(;(c=getchar()!=n;printf(“%c”,c); 若输入:cauc 输出为cauc, 不是输出ccaauucc.,14,6.3 for语句-范例,例3.11:求n! #include void main(void) int i,n; long fact=1; print
8、f(“please input n”); scanf(“%d”, ,15,例4-10 求一个等差数列前n项的和: ai+1-ai=d (i=1,2,3) 分析:1 输入n、d和等差数列的第一个数a的取值。 2 sum 、i的初值置0 3 a+sumsum 4 计算数列中下一个数的取值 a+da 5 i+1i 6 重复3、4、5步直到i大于n 7 输出结果n #include void main(void) int a,d,n,i; int ai,sum=0; printf(“input a=?td=?tn=?n”); scanf(“%d%d%d”, ,16,6.4 循环语句嵌套,while(表
9、达式1) while(表达式2) ,while(表达式1) do while(表达式2) ,while(表达式1) for( ; ; ) ,17,6.4 循环语句嵌套,例3.12 输出图形 * * * #include void main(void) int i,j; for(i=1;i=3;i+) for(j=1;j=8;j+) putchar(*); printf(“n”); ,18,6.4 循环语句嵌套,例3.13 编写一个九九乘法表的程序 分析:九九乘法表分9行, 第i行共i个小项。 i*j i=1,2,9 j=1,2,i,#include void main(void) int i,
10、j; for(i=1;i=9;i+) for(j=1;j=i;j+) printf(“%1d*%1d=%4d”,i,j,i*j); printf(“n”); ,19,6.5 break语句,1. break语句的功能:用于从循环体内跳出循环体,即提前结束循环。 例:计算r=1到r=10的圆面积,当面积大于100时结束循环, for(r=1;r100) break; printf(“%f”,area); 2、使用要点:break只能用在循环语句和switch语句中.,20,6.5 break语句,例3.14 某银行利息2.8%(以复利计)。假设某储户存入本金8000元,当满足以下条件之一,储户从
11、银行将钱取出。 (1)储蓄满10年 (2)连本带金超过10000元 1年个 编程求储户会在第几年将钱取出,取出时连本带息是多少? #include void main(void) int year; float money=8000; for(year=1;year10000) break; printf(“%d year %fn”,year,money); ,21,例: 百鸡问题:一只公鸡值5个钱,一只母鸡值3个钱,三只小鸡值1个钱,现有100个钱,要买100个鸡,是否可以?要求三种鸡都有。 分析:设公鸡、母鸡、小鸡各x、y、z只,则可知z=100-x-y,且 5x+3y+z/3=100 采
12、用试探法; #include void main(void) int x,y,z; for(x=0;x=20;+x) for(y=0;y34;y+) z=100-x-y; if(z%3=0) ,22,6.6 continue语句,1、功能:结束本次循环,接着判定下一次是否执行循环。 2、continue与break的区别: continue只结束本此循环,而break终止本层循环. 例3.15:把100200之间的不能被3整除的数输出. #include void main(void) int n; for(n=100;n=200;n+) if (n%3= =0) continue; prin
13、tf(“%d”,n); ,23,6.7 goto语句,1、一般形势为: goto 语句标号; 2、例: 100 #include 求 n void main( ) n=1 int i,sum=0; i=1; 运行结果为:5050 loop :if (i=100) sum=sum+i; i+; goto loop; printf(“%d”,sum); 3、说明:目前goto语句很少使用,过多的使用goto语句会降低程序的可读性。,24,6.8 应用举例,例3.17:输入一行字符,分别统计其中字母、空格、数字及其他字符的个数。 分析: 1 读入一个字符到变量c 2 判断c是哪一类,再给相应计数的变
14、量加1 3 重复1、2直到c等于n #include void main(void) int letter=0,space=0,digit=0,other=0; char c; while(c=getchar()!=n) if(c=a ,25,6.8 应用举例,例3.18:打印出21000之间的所有完数。完数指这样的数,该数的各个因子之和等于该数本身。 分析:例如:6=1+2+3 28=1+2+4+7+14 所以6和28都是完数。 典型枚举问题,即取21000之 间的每个数m,计算m的因子 和,即可判别m是否是完数,#include void main(void) int m,i,s; for
15、(m=2;m=1000;m+) s=0; for(i=1;i=m/2;i+) if(m%i=0) s+=i; if(m=s) printf(“%6d”,m); printf(“n”); ,26,6.8 应用举例,例3.19:编程求,27,6.8 应用举例,#include void main(void) double x,x0=0,x1=2,y,step,result=0; int n=2000; step=(x1-x0)/n; for(x=x0;xx1;x+=step) y=1+x*x; result+=y*step; printf(“result=%.2fn”,result); ,28,6
16、.8 应用举例,例3.20:求Fibonacci数列的前20项。 Fibonacci数列满足以下递推关系: f(0)=1 f(1)=1 f(n)=f(n-1)+f(n-2) #include void main(void) long f0=1,f1=1,f2; int i; printf(“%8ld%8ld”,f0,f1); for(i=3;i=20;i+) f2=f0+f1; printf(“%8ld”,f2); if(i%6=0) printf(“n”); f0=f1; f1=f2; ,29,6.8 应用举例,例3.21:除法测试,随机产生10道题,被除数20200,除数29,用户键入答案,每题10分,计算机判卷。 分析:1 产生随机数a、b,直到a能被b整除 2 显示除法式a/
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026电商店铺增长规划:从定位到复购的全链路实操指南
- 2026年校园咖啡店未来发展趋势
- 2026年企业背景调查实施方法与技巧
- 2026年危险化学品泄漏事故应急救援预案
- 2026年溶出度方法验证方案与报告
- 2025湖南省长沙市中考英语真题(解析版)
- 2026年新成立广告公司客户开发与创意提案流程
- 2026年企业思想政治工作实务指南
- 2026年退役军人医疗优抚数字化服务平台建设
- 2026年养老院老人定位与轨迹追踪系统应用
- 2026年心理咨询师通关测试卷含完整答案详解(夺冠)
- 2025年凉山新华书店考试真题及答案
- YC/T 88.1-2006烟草机械喂料机第1部分:型式与基本参数
- LY/T 2422-2015薇甘菊防治技术规程
- 真空预压传统式与直排式介绍ghg课件
- GB/T 5169.5-2020电工电子产品着火危险试验第5部分:试验火焰针焰试验方法装置、确认试验方法和导则
- 大功率商用电磁灶使用说明书
- 工业机器人编程与实操期末试题
- 初中化学中考其他-学案离子(物质)的检验鉴别
- 五年级苏教版数学下册《质因数和分解质因数》公开课教案
- 喀斯特地区灌木护坡技术规范
评论
0/150
提交评论