第5章 循环结构_第1页
第5章 循环结构_第2页
第5章 循环结构_第3页
第5章 循环结构_第4页
第5章 循环结构_第5页
已阅读5页,还剩67页未读 继续免费阅读

下载本文档

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

文档简介

1,第5章循环结构,2,while语句for语句do-while语句,循环结构,在给定条件成立时,反复执行某程序段,直到条件不成立为止。反复执行的程序段,称为循环体。,3,while循环,4,while循环,while(表达式)语句1;语句2;,可以是任何合法的表达式,控制循环是否继续。,反复执行的部分(循环体),多条语句需表示为复合语句。,表达式,非0,语句1,语句2,5,while循环的一般构造,循环控制变量赋初值;while(表达式)处理语句;改变循环控制变量的语句;,i=1;while(i=4)printf(“*”);i+;,i,输出,6,编程实现:打印1100,每行输出5个。,12345,678910,1112131415,7,编程实现:1+2+3+100,设计思路:反复执行以下的赋值语句,s=s+i;,累加和变量,需累加的数,依次取序列中的值。,i,s,8,i=1;,s=0;,i5为止。输出s。,main()inti;floatx,s;s=0;i=1;while(i=5)scanf(“%f”,10,编程实现:5!=1*2*3*4*5,设计思路:反复执行以下的赋值语句,t=t*i;,累乘积变量,需乘的数,依次取序列中的值。,t=1;scanf(“%f”,t=1;i=1;While(i=10-4,反复做:将t加到累加和pi中改变s、n、t为下一项值直到|t|10-4为止。输出pi的值,14,intn=0;while(n+=2);printf(“%d”,n);,分析,n=2n+,结果3,intn=0;while(n+ch如果是小写字母,则转换成大写字母输出,其余字符原样输出。重复以上过程,直到读入的字符为回车符。,输入:,输出:,YOUARE12YEARSOLD.,18,#includemain()charch;printf(pleaseinputasting:n);while(ch=getchar()!=n)if(ch=a,19,编程实现:输入一行字符,统计其中字母、数字和其他符号的个数。,数据结构定义一个字符型变量c;定义三个计数器变量letters、digit和others,分别记录相应字符的个数。,输入:,20,算法计数器变量置初值;读入一个字符=c如果是字母字符,则letters增1;如果是数字字符,则digit增1;否则others增1。重复以上过程,直到读入的字符为回车符。输出计数器变量的值。,21,main()intletters,digits,others;charch;letters=0;digits=0;others=0;printf(pleaseinputasting:n);while(ch=getchar()!=n)if(ch=a,22,while(ch=getchar()=e)putchar(*);,若输入abcde,则循环执行几次。,结论:一次也不执行。,分析,23,do-while循环,24,do-while循环,do语句序列;while(表达式);语句2;,表达式,非0,语句序列,语句2,若为一条语句则可省略,25,i=1;sum=0;dosum=sum+i;i+;while(i0)printf(“i=%d”,i);i-;,区别,i=0;doprintf(“i=%d”,i);i-;while(i0);,一次循环未执行,至少执行一次循环,27,i=1;s=1;dos=s+i;i+;while(i5);,练习,若变量已正确定义,以下不能正确计算1+2+3+4+5的程序段是:,i=0;s=0;doi+;s=s+i;while(i5);,i=1;s=0;dos=s+i;i+;while(i6);,i=1;s=0;dos=s+i;i+;while(i=5);,28,编写程序计算Fibonaci数列,直到某项大于1000为止,并输出该项。Fibonaci数列:f0=0,f1=1,f2=1,f3=2,fn=fn-2+fn-1,数据结构定义三个变量f1,f2,f。算法(1)f1赋初值0,f2赋初值1;(2)f=f1+f2;f1=f2;f2=f。(3)判断f2是否大于1000,若不大于,重复步骤(2)继续循环,否则执行步骤(4)。(4)循环结束,输出f2的值。,29,for循环,30,for循环,for(表达式1;表达式2;表达式3)语句1;语句2;,表达式1,表达式2,非0,语句1,表达式3,语句2,说明,表达式1一般是对循环控制变量赋初值的表达式。表达式2控制循环是否结束的表达式。表达式3一般是改变循环控制变量的表达式。,31,for(k=0;k5;k+)printf(“*”);,求累加和的程序段:1+2+3+100,k=0;while(k5)printf(“*”);k+;,For循环的一般形式等价于如下程序段:表达式1;while(表达式2)循环体;表达式三;,32,编程实现求n!,scanf(“%d”,33,for循环的变体,s=0;for(i=1;i=100;i+)s+=i;,表达式1可省略,s=0;i=1;for(;i=100;i+)s+=i;,表达式3可省略,s=0;for(i=1;i=100;)s+=i;i+;,34,表达式2可省略,表示条件永远为真,s=0;for(i=1;i+)s+=i;,表达式13都省略,for(;),死循环,要避免,表达式1,表达式3省略,s=0;i=1;for(;i=100;)s+=i;i+;,35,表达式1可设置与循环控制变量无关的语句,i=1;for(s=0;i=100;i+)s+=i;,表达式1、表达式3可以是,表达式,for(s=0,i=1;i=100;s+=i,i+);,可无循环体,for(i=1;i=100;i+);,for(i=0,j=100;i=j;i+,j-)k=i+j;,36,编程实现编程计算正整数1n中奇数之和和偶数之和。,main()inti,n;intm=0,k=0;printf(npleaseenterthevalue:);scanf(%d,37,for语句的嵌套,for(i=0;i=2;i+)for(j=0;j=3;j+)printf(“*”);printf(“n”);,i,j,38,for(i=0;i=2;i+)for(k=1;k=i;k+)printf(“);for(j=0;j=3;j+)printf(“*”);printf(“n”);,i,j,39,编程实现打印九九表。,123456789468101214161836912151821242748121620242832365101520253035404561218243036424854714212835424956638162432404856647291827364554637281,23456789,123456789,打印下三角?,40,break和continue语句,41,break语句,switch语句中跳出switch语句,执行switch的下一条语句。循环体内无论循环条件是否成立,无条件跳出循环。一般放在循环内的条件语句中。,42,s=0;for(i=1;i5)break;printf(“s=%dn”,s);,s,s=1,s=3,输出结果,43,s=0;for(i=1;i=5;i+)scanf(“%d”,44,for(;)scanf(“%d”,45,在多重循环中,break语句仅跳出包围该语句的那层循环,for(t=0;tx,若maxx,则min=x,重复以上过程,直到读完所有数为止。,52,53,编程实现求Fibonacei数列的前40项,每行输出5个数。1,1,2,3,5,8,13,,设计思路采用递推算法不断由已知值推出新值,直到求得解为止。,规律,fib1=fib2=1fibn=fibn-1+fibn-2n=3,54,1,1,2,3,5,8,13,,f1,f2,+,f,f2,f1,+,f,f1,f2,+,f,55,数据结构定义三个变量f1、f2、f(注意数据类型)算法设置f1、f2初值为1求f,其值为f1+f2打印f判断是否输出回车换行改变f1、f2的值为下一项的前两项重复以上过程,直到输出38个为止,56,57,编程实现判断某一数是否为素数。,除1和它本身之外,不能被其他任何整数整除的正整数。,素数,172,3,4,5,16,2,3,4,,2,3,4,17/2,58,数据结构定义一个变量x,存放要验证的数算法读一个需验证的数xx分别去除2,3,x-1数列中的每一个数若不能除尽,重复以上步骤,继续取下一个数验证若能除尽,结束以上步骤根据以上情况,输出验证结果。,59,60,方法2设置一个标志变量,算法读一个需验证的数x设置标志变量flag初值为1。x分别去除2,3,x-1数列中的每一个数若能找到一个数能整除x,则设置flag=0,结束验证。否则,继续取下一个数。根据flag的值,输出验证结果。,61,#includemain()intx,i;intflag;printf(“pleaseenterthevalue:”);scanf(“%d”,62,#includemain()intx,i;intflag;printf(“pleas

温馨提示

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

评论

0/150

提交评论