《C语言循环结构二.pptx》由会员分享,可在线阅读,更多相关《C语言循环结构二.pptx(46页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、1循环语句while语句dowhile语句for语句第1页/共46页2while语句表达式语句真(非0)假(0)while(表达式)循环体语句第2页/共46页3do-while语句表达式语句真(1)假(非零)do 循环体语句while(表达式);分号不要少!第3页/共46页4for语句表达式1表达式2语句表达式3真(非零)假(0)for(表达式1;表达式2;表达式3)语句第4页/共46页5break语句:break语句用于循环语句和switch语句,作用是退出结束循环语句和switch 语句,如:while().if()break;.breakbreak语句语句第5页/共46页6 contin
2、ue语句:跳过循环体下面未执行的语句,接着执行循环下一次迭代。如:while()if()continue;continuecontinue语句语句第6页/共46页7练习1:写结果#include void main()int x=23;do printf(%d,x-);while(!x);23第7页/共46页8练习2:写出结果#include void main()int x=0,y=5,z=3;while(z-0&+x5)y=y-1;printf(%d,%d,%dn,x,y,z);3,2,-1第8页/共46页9练习3:写结果#include void main()int a,y;a=10,y
3、=0;do a+=2;y+=a;printf(a=%d y=%dn,a,y);if(y20)break;while(a=14);a=12 y=12a=16 y=28第9页/共46页10练习4:写结果#include void main()int i;for(i=1;i=5;i+)if(i%2)printf(*);else continue;printf(#);printf($n);*#*#*#$第10页/共46页11练习5:写结果#include void main()int x=15;while(x10&x50)x+;if(x/3)x+;break;else continue;printf(
4、%dn,x);17第11页/共46页12练习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第12页/共46页13 鸡兔同笼,头共有30只,脚共有90只,计算鸡 兔各有多少只?设:鸡为x只,兔为y只 x+y=30 2x+4y=90 编程:第13页/共46页14#include void main()int x,y;for(x=1;x=29;x+)y=30-x;if(2*x+4*y=90)printf(鸡是%d只,兔
5、子是%d只n,x,y);程序:第14页/共46页15编程:打印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);第15页/共46页16编程:求,/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)
6、;n+;pi=2*s;printf(pi=%lfn,pi);第16页/共46页17编程:分别统计下列数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);第17页/共46页18编程:求S=3
7、/22-5/42+7/62-+(-1)n-1(2n+1)/(2*n)2的和直到2n+1/(2*n)2n+1/(2*n)2 2|=10|=10-3-3为止第18页/共46页19#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);程序:第19页/共46页20编程:求1+1/(1+2)+1/(1+2+3)+1/(1+2+3+50)#include void main()doub
8、le sum=1.0;int i,t=1;for(i=2;i=3)编程:第21页/共46页22分析:设当前项为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第22页/共46页23#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;程序:第23页/共46页2
9、4求:y=m值由键盘输入。编程第24页/共46页25编程求:s=1+(1+20.5)+(1+20.5+30.5)+(1+20.5+30.5+n0.5)当n=20时的和。第25页/共46页26循环嵌套的引进循环嵌套的引进打印: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);第26页/共46页27循环嵌套的引进循环嵌套的引进打印: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*
10、2=6 3*3=9 3*9=27 9*1=9 9*2=18 9*3=299*9=81第27页/共46页28#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);程序:第28页/共46页29循环的嵌套循环的嵌套一个循环体内又包含另一个完整的循环结构,称为循环的嵌套。内嵌的循环中还可以嵌套循环,这就是多重循环。第29页/共46页30for()for()whilewhile()()DoDo for()for()while();while();while()while
11、()for()for()for()for()for()for()三种循环可以互相嵌套,例如以下四种均为合法的嵌套循环结构第30页/共46页31执行规律:一般外循环变量每改变一 个值,内循环要完整的循环 一遍。第31页/共46页32练习:写结果#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第32页/共46页33练习:写结果#include main()int m,n;scanf(%d%d,&m,&n);while(m!=n)while(mn)m=m-n;while(mn)n=n-m
12、;printf(%dn,m);程序运行后,当输入 14 63时,输出结果是_.7第33页/共46页34练习:写结果#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第34页/共46页35练习:写结果#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第35页/共46页36例:打印如图所示的乘法表。1 2
13、 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第36页/共46页37算法思路:可以用外循环变量i控制行,内循环变量j控制列,i的变化范围为1到9,而j的变化范围由i决定,即第i行时j的变化为从1到i,i每取一个值,j都会从1变到i。行列确定后每个数即为i*j。第37页/共46页38#include void main()int i,j;for(i=1;i=9;i+)for(j=1;j=i;j+)printf
14、(%3d,i*j);printf(n);程序:第38页/共46页39算法和程序参考书算法思路:判断m是否为素数,让m被2到(k)除,如果m能被2k之间任何一个整数整除,则提前结束循环,此时i必然小于或等于k;如果m不能被2k之间的任一整数整除,则在完成最后一次循环后i还要加1,因此i=k+1,然后才终止循环.在循环之后判别i的值是否大于或等于k+1,若是,则表明未曾被2k之间任一整数整除过,输出“是素数”打印:100200间的全部素数第39页/共46页40#include#include void main()int m,k,i,n=0;printf(100200之间的全部素数是:n);for
15、(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);程序:第40页/共46页41例:百鸡问题:“鸡翁一,值钱五;鸡母 一,值钱三;鸡雏三,值钱一。百钱买 百鸡,问鸡翁、母、雏各几何?设:公鸡x只,母鸡y只、小鸡z只x+y+z=1005x+3y+z/3=100第41页/共46页42#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&z%3=0)pr
16、intf(公鸡是%d只,母鸡是%d只,雏鸡是%dn,x,y,z);程序:第42页/共46页43编程:求1000以内的所有完全数(说明:一个数如果恰好等于它的因子之和(除自身外),则称该数为完全数 例:6123,6为完全数)#include void main()int a,i,m;for(a=1;a=1000;a+)for(m=0,i=1;i=a/2;i+)if(a%i=0)m+=i;if(m=a)printf(%4d,a);第43页/共46页44 *编程:打印下列图形:第44页/共46页45#include void main()int i,j;for(i=1;i=4;i+)for(j=1;j=4-i;j+)printf();for(j=1;j=2*i-1;j+)printf(*);printf(n);程序:第45页/共46页46感谢您的欣赏!第46页/共46页