




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第7章循环结构程序设计.7.1循环的概念7.2实现循环的语句
7.3break和continue语句7.4循环的嵌套7.5循环结构程序设计举例.7.1循环的概念当所要解决的问题存在重复执行内容时,应该使用循环结构来实现,具体的设计步骤可归纳如下。(1)构造循环体。将问题中需要重复执行的部分,利用C语言规则归纳出一组程序段。在归纳的过程中应充分利用变量是一个变化的量的概念。如本列中变量score在不同的时刻代表的是不同学生的成绩。.(2)寻找控制循环的变量。有的题目循环的次数是确定的,可以使用计数器来控制循环;有的题目循环的次数不是确定的,那么使用计数器就不合适了,设计者应从题目中去寻找规则变化的量来控制循环体完成规定的次数。(3)找出控制变量的3个要素。
循环控制变量的初值。
循环的条件。
使循环趋于结束的部分。.7.2实现循环的语句7.2.1while语句while语句是实现当型结构循环的语句,其一般形式为
while(逻辑量)循环体语句其中,while是C语言的关键字,语句中的逻辑量为循环条件。while语句的流程图如图7.2所示。
.使用while语句实现循环时,语句中的逻辑量对应于循环条件P,循环体语句对应于循环体A。while语句执行时,首先判断逻辑量的值,如果逻辑量为1,则首先执行循环体语句,然后继续判断逻辑量;如果逻辑量为0,则结束循环,执行循环的后续语句。
.例7.3求1到100的和。根据流程图写出程序:
main(){inti,sum;sum=0;i=1;while(i<=100){sum=sum+i;i++;printf("%d\n",sum);}}图7.3例7.3的N-S流程图
.例7.4求n!。main(){floatfac;inti,n;fac=1;i=2;scanf("%d",&n);while(i<=n){fac=fac*i;
i++;}printf("n!=%.0f\n",fac);}图7.4例7.4的N-S流程图
.7.2.2do-while语句do-while语句是实现直到型循环结构的语句,其一般形式为:do循环体语句while(逻辑量);do-while语句的流程图如图7.6所示。
.使用do-while语句实现循环时,语句中的逻辑量对应于循环条件P,循环体语句对应于循环体A。do-while语句执行时,首先执行循环体语句,然后判断逻辑量,如果逻辑量为1,则继续执行循环体语句;如果逻辑量为0,则结束循环,执行循环的后续语句。.例7.9求两个数的最大公约数。
(a)当型结构(b)直到型结构图7.8例子的两种结构的N-S图.
根据流程图可得到程序:
main()main(){{intm,n,r;intm,n,r;scanf("%d,%d",&m,&n);scanf("%d,%d",&m,&n);if(m<n)if(m<n)r=m,m=n,n=r;r=m,m=n,n=r;r=m%n;dowhile(r!=0){{m=n;r=m%n;n=r;m=n;r=m%n;n=r;}}while(r!=0);printf("%d\n",n);printf("%d\n",m);}}.7.2.3for语句for语句是实现当型循环结构的语句,for语句是C语言所提供的功能更强、使用更广泛的一种循环语句。其一般形式为:for(表达式1;逻辑量;表达式2)循环体语句;表达式1通常用来给循环变量赋初值,一般是赋值表达式。也允许在for语句外给循环变量赋初值,此时可以省略该表达式。逻辑量通常是循环条件,一般为关系表达式或逻辑表达式,也可以是任意“确定的值”。表达式2通常是使循环趋于结束的部分,一般是赋值表达式。.for语句对应的传统流程如图7.9所示。for语句的执行过程如下:(1)求解表达式1。(2)判断逻辑量,如果为1,则执行循环体语句,然后执行第3步;如果为0,则结束循环,执行循环的后续语句。(3)求解表达式2。转向第2步执行。从for语句的形式可以看出for后的括号内三项内容分别对应于循环的三要素,能清晰地描述循环。我们可以采取图7.10所示的方式来描述for语句对应的N-S流程图。.图7.9for语句的传统流程图
图7.10for语句的N-S流程图
.例7.11求。main(){floatsum=0,s=0;floatx,h;scanf("%f",&h);for(x=0;x<5;x=x+h){s=(x*x+x+(x+h)*(x+h)+x+h)*h/2sum=sum+s;}printf("jifen=%.2f\n",sum);}图7.11例7.11的N-S流程图
.使用for语句应注意以下几点。(1)for语句中的各表达式都可省略,但间隔符分号不能省略。例如:for(;逻辑量;表达式2)省去了表达式1。for(表达式1;;表达式2)省去了逻辑量。for(表达式1;逻辑量;)省去了表达式2。for(;;)省去了全部表达式。(2)在循环变量已赋初值时,可省去表达式1。.例7.12
main(){inta,n;a=0;scanf("%d",&n);for(;n>0;n--){a++;printf("%8d",a*2);}printf("\n");}
(3)可省去表达式2,应该在循环体部分增加使循环趋于结束部分。.例7.13main(){inta,n;a=0;for(n=9;n>0;){printf("%8d",a*a);n--;}printf("\n");}.(4)省略逻辑量,则循环条件为真,那么在循环体中应有循环结束语句,否则是死循环。(5)省略表达式1和表达式2,for语句相当于while语句。.例7.14main()/*计算xn*/{floatx,xexpn;intn,i;scanf("%f,%d",&x,&n);xexpn=1;i=1;for(;i<=n;)/*等同于while(i<n)*/{xexpn*=x;i++;}printf("%f\n",xexpn);}.(6)循环体可以是空语句。例7.15#include"stdio.h"main(){intcount;count=0;printf("inputastring:\n");for(;getchar()!='\n';count++);printf("%d\n",count);}无论for语句如何省略括号内的内容,循环的三个要素是必须要体现的,所以在使用for语句时,要充分理解for语句的执行过程。.7.3break和continue语句7.3.1break语句break语句也可以在循环体中使用,作用是结束循环,继续执行循环的后续语句。break语句的一般形式为:break;使用break语句可以使循环语句有多个出口,在一些场合下使编程更加灵活、方便。.例7.17判断某个一位数是否在一个不高于四位的整数中出现。图7.12例7.17的N-S流程图
.main(){intm,n;intflag;flag=1;scanf("%d,%d",&m,&n);while(m!=0){if(n==m%10){flag=0;break;}m=m/10;}if(flag==0)printf("yes\n");elseprintf("no\n");}.7.3.2continue语句continue语句只能用在循环体中。其一般格式是:continue;continue语句的功能是结束本次循环,即不再执行循环体中continue语句之后的语句,转入下一次循环执行。应注意的是,该语句只结束本层本次的循环,并不跳出循环。使用continue语句时,应该清楚在不同的循环语句中下次循环的起点是什么。在while和do-while语句中,下次循环的起点是判断逻辑量;在for语句中,下次循环的起点是计算表达式2的值。.例7.18输出1~1000之间能被3、5、7同时整除的数。
main(){intn;for(n=1;n<=1000;n++){if(n%3!=0)continue;if(n%5!=0)continue;if(n%7!=0)cntinue;printf("%8d",n);}printf("\n");}.7.4循环的嵌套当一个循环体内又包含另一个循环结构时,称为循环的嵌套。被嵌入的循环又可以嵌套其他的循环,这就是多重循环。
.例7.19分析以下循环内外层循环控制变量的变化。
main(){inti,j;intmul;for(i=1;i<10;i++){for(j=1;j<10;j++){mul=i*j;printf("%d*%d=%-4d",i,j,mul);}printf("\n");}}
.程序运行的结果为:
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=183*1=33*2=63*3=93*4=123*5=153*6=183*7=213*8=243*9=274*1=44*2=84*3=124*4=164*5=204*6=244*7=284*8=324*9=365*1=55*2=105*3=155*4=205*5=255*6=305*7=355*8=405*9=456*1=66*2=126*3=186*4=246*5=306*6=266*7=426*8=486*9=547*1=77*2=147*3=217*4=287*5=357*6=427*7=497*8=567*9=638*1=88*2=168*3=248*4=328*5=408*6=488*7=568*8=648*9=729*1=99*2=189*3=279*4=369*5=459*6=549*7=639*8=729*9=81
.程序输出的是一个完整的九九乘法表。控制外层循环的循环控制变量是i,控制内层循环的循环控制变量是j。每当i变化一次,j就要从1变化到9,可见内层循环的变化频率是高于外层循环的。在内层循环的循环体内使用的i,j的值正好是i(1~9),j(1~9)的各种组合,那么就可以
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 山东二月联考试卷及答案
- 2025年居间合同的样本
- 空调器故障案例分析与解决方案考核试卷
- 胶合板行业发展趋势与市场规模预测考核试卷
- 组织管理服务拓展课程列表考核试卷
- 煤炭制品在生产生活中的应用拓展考核试卷
- 硅冶炼过程中的生产安全应急预案演练考核试卷
- 二厂员工考试试题及答案
- 职业中介服务的行业品牌推广与宣传考核试卷
- 残疾人生活品质提升服务创新考核试卷
- 高考标准化考场建设的方案
- 乳腺癌NCCN指南中文版2022.v2
- GB/T 38942-2020压力管道规范公用管道
- 家居建材全屋定制店面运营管理细则规定
- GB/T 27924-2011工业货架规格尺寸与额定荷载
- 大班语言《他们看见了一只猫》课件
- 毕业论文-电力变压器设计
- 消毒产品进货检查验收制度
- 单叉固定式液压升降台设计
- 《美国消费品安全改进法》的普通合格证书、纺织品服装类产
- GB∕T 40740-2021 堆焊工艺评定试验
评论
0/150
提交评论