C语言循环结构(二).ppt_第1页
C语言循环结构(二).ppt_第2页
C语言循环结构(二).ppt_第3页
C语言循环结构(二).ppt_第4页
C语言循环结构(二).ppt_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

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

文档简介

循环控制,2,循环语句,while语句 dowhile语句 for语句,3,while语句,表达式,语句,真(非0),假(0),while (表达式)循环体语句,4,do-while语句,表达式,语句,真(1),假(非零),do 循环体语句 while (表达式);,分号不要少!,5,for语句,表达式1,表达式2,语句,表达式3,真(非零),假(0),for (表达式1;表达式2;表达式3) 语句,6,break语句:break语句用于循环语句和switch语句,作用是退出结束循环语句和switch 语句,如:while() . if() break; . ,break语句,7,continue语句:跳过循环体下面未执行的语句,接着执行循环下一次迭代。如: while( ) if ( ) continue; ,continue语句,8,练习1:写结果,#include void main() int x=23; do printf(“%d“,x-); while (!x); ,23,9,练习2:写出结果,#include void main() int x=0,y=5,z=3; while (z- 0 ,3,2,-1,10,练习3:写结果,#include void main() int a,y; a=10,y=0; do a+=2;y+=a; printf(“a=%d y=%dn“,a,y); if(y20) break; while(a=14); ,a=12 y=12 a=16 y=28,11,练习4:写结果,#include void main() int i; for(i=1;i=5;i+) if(i%2) printf(“*“); else continue; printf(“#“); printf(“$n“); ,*#*#*#$,12,练习5:写结果,#include void main() int x=15; while (x10 ,17,13,练习6:写结果,#include void main() int a,b; for(a=1,b=1;a=20) break; if(b%3=1) b+=3; continue; b-=5; printf(“a=%d,b=%dn“,a,b); ,a=8,b=22,14,鸡兔同笼,头共有30只,脚共有90只, 计算鸡 兔各有多少只? 设:鸡为x只, 兔为y只 x+y=30 2x+4y=90,编程:,15,#include void main() int x,y; for(x=1;x=29;x+) y=30-x; if(2*x+4*y=90) printf(“鸡是%d只,兔子是%d只n“,x,y); ,程序:,16,编程:打印100 以内个位数为6且能被3 整除的所有数,#include void main() int i,j; for( i = 0;i = 9;i+ ) j=i*10+6; if(j%3=0) printf(“%d “,j); ,17,编程:求,/2=1+(1/3)+(1/3*2/5)+(1/3*2/5*3/7)+(1/3*2/5*3/7*4/9)+直到某项小于0.0005时。,#include void main() double s,t,pi=0; int n=1; s=0.0; t=1.0; while(t=0.0005) s+=t; t=t*n/(2*n+1); n+; pi=2*s; printf(“pi=%lfn“,pi); ,18,编程:分别统计下列数0,1,2的个数,并求各位上的最大数,#include void main() long n=120122058L, c0=0,c1=0,c2=0,max=0; while(n0) switch(n%10) case 0:c0+;break; case 1:c1+;break; case 2:c2+; if(n%10max) max=n%10; n/=10; printf(“0的个数为:%ld, 1的个数为:%ld, 2的个数为:%ld,各位最大数:%ld“,c0,c1,c2,max); ,19,编程: 求S=3/22-5/42+7/62-+(-1)n-1(2n+1)/(2*n)2的和直到2n+1/(2*n)2|=10-3为止,20,#include main() int i, k; double s, t, x; s=0; k=1; i=2; x=3.0/4; while(x 1e-3) s=s+k*x; k=k* (-1); t=2*i; x=(t+1)/(t*t); i+; printf(“nThe result is: %lfn“,s); ,程序:,21,编程:求1+1/(1+2)+1/(1+2+3)+1/(1+2+3+50),#include void main() double sum=1.0; int i,t=1; for(i=2;i=50;i+) t+=i; sum+=1.0/t; printf(“sum=%lfn“,sum); ,22,求:Fibonacci数列30个数。该数列有如下特点:第1,2两个数为1, 1。从第三个数开始,该数是其前面两个数之和。即: F1=1 (n=1) F2=1 (n=2) Fn=Fn-1+Fn-2 (n=3),编程:,23,分析:设当前项为f,第一项为f1,第二项为f2。首先根据f1和f2推出f,再将f2作为f1,f作为f2,再推出f,如此一直递推下去:,1 1 2 3 5 第一次 f1 + f2 f 第二次 f1 + f2 f 第三次 f1 + f2 f,24,#include void main() int f1=1,f2=1; int i; for(i=1;i=15;i+) printf(“%12d %12d“,f1,f2); if(i%2=0) printf(“n“); f1=f1+f2; f2=f2+f1; ,程序:,25,求:y=,m值由键盘输入。,编程,26,编程,求:s=1+(1+20.5)+(1+20.5+30.5)+(1+20.5+30.5+n0.5) 当n=20时的和。,27,循环嵌套的引进,打印:1*1=1 1*2=2 1*3=31*9=9,#include void main() int i=1,j; for( j = 1;j= 9;j+) printf(“%d*%d=%d “ , i , j,i*j); printf(“n“); ,28,循环嵌套的引进,打印:1*1=1 1*2=2 1*3=3 1*9=9 2*1=2 2*2=4 2*3=6 2*9=18 3*1=3 3*2=6 3*3=9 3*9=27 9*1=9 9*2=18 9*3=299*9=81,29,#include void main() int i,j; for(i=1;i=9;i+) for( j= 1;j = 9;j+ ) printf(“%d*%d=%3d “ , i , j,i*j); printf(“n“); ,程序:,30,循环的嵌套,一个循环体内又包含另一个完 整的循环结构,称为循环的嵌套。,内嵌的循环中还可以嵌套循环, 这就是多重循环。,31,for() while() ,Do for() while();,while() for() ,for() for() ,三种循环可以互相嵌套,例如以下四种均为合法的嵌套循环结构,32,执行规律:一般外循环变量每改变一 个值,内循环要完整的循环 一遍。,33,练习:写结果,#include main() int i,j,m=1; for(i=1;i0;j-) if(i*j3) break; m*=i*j; printf(“m=%dn“,m); ,m=6,34,练习:写结果,#include main() int m,n; scanf(“%d%d“, 程序运行后,当输入 14 63时,输出结果是_.,7,35,练习:写结果,#include void main() int i,j,a=0; for(i=0;i2;i+) for(j=0;j4;j+) if(j%2) break; a+; a+; printf(“%dn“,a); ,4,36,练习:写结果,#include void main() int i,j,x=0; for(i=0;i2;i+) x+; for(j=0;j=3;j+) if(j%2) continue; x+; x+; printf(“x=%dn“,x); ,x=8,37,例: 打印如图所示的乘法表。 1 2 4 3 6 9 4 8 12 16 5 10 15 20 25 6 12 18 24 30 36 7 14 21 28 35 42 49 8 16 24 32 40 48 56 64 9 18 27 36 45 54 63 72 81,38,算法思路: 可以用外循环变量i控制行,内循环变量j控制列,i的变化范围为1到9,而j的变化范围由i决定,即第i行时j的变化为从1到i, i每取一个值,j都会从1变到i。行列确定后每个数即为i*j。,39,#include void main() int i,j; for( i = 1;i = 9;i+ ) for( j = 1;j = i;j+) printf(“%3d“ , i * j); printf(“n“); ,程序:,40,算法和程序参考书,算法思路:判断m是否为素数,让m被2到 (k)除,如果m能被2k之间任何一个整数整除,则提前结束循环,此时i必然小于或等于k;如果m不能被2k之间的任一整数整除,则在完成最后一次循环后i还要加1,因此i=k+1,然后才终止循环.在循环之后判别i的值是否大于或等于k+1,若是,则表明未曾被2k之间任一整数整除过,输出“是素数”,打印:100200间的全部素数,41,#include #include void main() int m,k,i,n=0; printf(“100200之间的全部素数是:n“); for(m=101;m=199;m=m+2) k=(int)sqrt(m); for(i=2;i=k;i+) if (m%i=0) break; if(i=k+1)printf(“%d “,m); ,程序:,42,例:百鸡问题:“鸡翁一,值钱五;鸡母 一,值钱三;鸡雏三,值钱一。百钱买 百鸡,问鸡翁、母、雏各几何? 设: 公鸡x只,母鸡y只、小鸡z只,x+y+z=100,5x+3y+z/3=100,43,#include void main() int x,y,z; for(x=0;x=19;x+) for(y=0;y=33;y+) z=100-x-y; if (5*x+3*y+z/3=100 ,程序:,44,编程:求1000以内的所有完全数(说明:一个数如果恰好等于它的因子之和(除自身外),则称该数为完全数 例:6123, 6为完全数 ),#include void main() int a,

温馨提示

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

评论

0/150

提交评论