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

下载本文档

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

文档简介

会计学1C语言循环结构二2循环语句while语句do-while语句for语句第1页/共46页3while语句表达式语句真(非0)假(0)while(表达式)循环体语句第2页/共46页4do-while语句表达式语句真(1)假(非零)do

循环体语句while(表达式);分号不要少!!第3页/共46页5for语句表达式1表达式2语句表达式3真(非零)假(0)for(表达式1;表达式2;表达式3)语句第4页/共46页6break语句:break语句用于循环语句和switch语句,作用是退出结束循环语句和switch语句,如:while(){...if()break;...}break语句第5页/共46页7continue语句:跳过循环体下面未执行的语句,接着执行循环下一次迭代。如:

while(){…if()

continue;

…}continue语句第6页/共46页8练习1:写结果#include<stdio.h>voidmain(){intx=23;do{printf("%d",x--);}while(!x);}23第7页/共46页9练习2:写出结果#include<stdio.h>voidmain(){intx=0,y=5,z=3;while(z-->0&&++x<5)y=y-1;printf("%d,%d,%d\n",x,y,z);}3,2,-1第8页/共46页10练习3:写结果#include<stdio.h>voidmain(){inta,y;a=10,y=0;do{a+=2;y+=a;printf("a=%dy=%d\n",a,y);if(y>20)break;}while(a=14);}a=12y=12a=16y=28第9页/共46页11练习4:写结果#include<stdio.h>voidmain(){inti;for(i=1;i<=5;i++){if(i%2)printf("*");elsecontinue;printf("#");}printf("$\n");}*#*#*#$第10页/共46页12练习5:写结果#include<stdio.h>voidmain(){intx=15;while(x>10&&x<50){x++;if(x/3){x++;break;}elsecontinue;}printf("%d\n",x);}17第11页/共46页13练习6:写结果#include<stdio.h>voidmain(){inta,b;for(a=1,b=1;a<100;a++){if(b>=20)break;if(b%3==1){b+=3;continue; }b-=5;}printf("a=%d,b=%d\n",a,b);}a=8,b=22第12页/共46页14

鸡兔同笼,头共有30只,脚共有90只,计算鸡兔各有多少只?设:鸡为x只,兔为y只

x+y=302x+4y=90

编程:第13页/共46页15#include<stdio.h>voidmain(){intx,y;

for(x=1;x<=29;x++)

{y=30-x;if(2*x+4*y==90) printf("鸡是%d只,兔子是%d只\n",x,y);

}}程序:第14页/共46页16编程:打印100以内个位数为6且能被3整除的所有数#include<stdio.h>voidmain(){inti,j;

for(i=0;i<=9;i++)

{

j=i*10+6; if(j%3==0) printf("%d",j);

}}第15页/共46页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<stdio.h>voidmain(){doubles,t,pi=0;intn=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=%lf\n",pi);}第16页/共46页18编程:分别统计下列数0,1,2的个数,并求各位上的最大数#include<stdio.h>voidmain(){longn=120122058L,c0=0,c1=0,c2=0,max=0;

while(n>0)

{

switch(n%10)

{case0:c0++;break; case1:c1++;break; case2:c2++;} if(n%10>max)max=n%10; n/=10;} printf(“0的个数为:%ld,1的个数为:%ld,2的个数为:%ld,各位最大数:%ld",c0,c1,c2,max);}第17页/共46页19编程:求S=3/22-5/42+7/62-…+(-1)n-1(2n+1)/(2*n)2的和直到∣2n+1/(2*n)2|<=10-3为止第18页/共46页20#include<stdio.h>main(){inti,k;doubles,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("\nTheresultis:%lf\n",s);}程序:第19页/共46页21编程:求1+1/(1+2)+1/(1+2+3)+…+1/(1+2+3+…+50)#include<stdio.h>voidmain(){doublesum=1.0;inti,t=1;

for(i=2;i<=50;i++)

{t+=i;sum+=1.0/t;

}printf("sum=%lf\n",sum);}第20页/共46页22

求:Fibonacci数列30个数。该数列有如下特点:第1,2两个数为1,1。从第三个数开始,该数是其前面两个数之和。即:

F1=1(n=1)F2=1(n=2)Fn=Fn-1+Fn-2(n>=3)编程:第21页/共46页23分析:设当前项为f,第一项为f1,第二项为f2。首先根据f1和f2推出f,再将f2作为f1,f作为f2,再推出f,如此一直递推下去:11235第一次

f1+f2

f

↓第二次

f1+f2

f

↓第三次

f1+

f2

f第22页/共46页24#include<stdio.h>voidmain(){intf1=1,f2=1;inti;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页25求:y=m值由键盘输入。编程第24页/共46页26编程求:s=1+(1+20.5)+(1+20.5+30.5)+…+(1+20.5+30.5+…+n0.5)当n=20时的和。第25页/共46页27循环嵌套的引进打印:1*1=11*2=21*3=3……1*9=9#include<stdio.h>voidmain(){inti=1,j;for(j=1;j<=9;j++){printf("%d*%d=%d",i,j,i*j);}printf("\n");}第26页/共46页28循环嵌套的引进打印:1*1=11*2=21*3=3……1*9=92*1=22*2=42*3=6……2*9=183*1=33*2=63*3=9……3*9=27…………9*1=99*2=189*3=29……9*9=81第27页/共46页29#include<stdio.h>voidmain(){inti,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页30循环的嵌套一个循环体内又包含另一个完整的循环结构,称为循环的嵌套。内嵌的循环中还可以嵌套循环,这就是多重循环。第29页/共46页31for(){…

while()

{…}

}Do{

for()

{…}

}while();while(){

for()

{…}

}for(){

for(){…}

}

三种循环可以互相嵌套,例如以下四种均为合法的嵌套循环结构第30页/共46页32执行规律:一般外循环变量每改变一个值,内循环要完整的循环一遍。第31页/共46页33练习:写结果#include<stdio.h>main(){inti,j,m=1;for(i=1;i<3;i++){for(j=3;j>0;j--){if(i*j>3)break;m*=i*j;}}printf("m=%d\n",m);}m=6第32页/共46页34练习:写结果#include<stdio.h>main(){intm,n;scanf("%d%d",&m,&n);while(m!=n){while(m>n)m=m-n;while(m<n)n=n-m;}printf("%d\n",m);}程序运行后,当输入1463<回车>时,输出结果是_______.7第33页/共46页35练习:写结果#include<stdio.h>voidmain(){inti,j,a=0;for(i=0;i<2;i++)

{ for(j=0;j<4;j++)

{if(j%2)break; a++;

} a++;

}printf("%d\n",a);}4第34页/共46页36练习:写结果#include<stdio.h>voidmain(){inti,j,x=0;for(i=0;i<2;i++)

{x++; for(j=0;j<=3;j++)

{if(j%2)continue; x++;

} x++;

}printf("x=%d\n",x);}x=8第35页/共46页37例:打印如图所示的乘法表。

12436948121651015202561218243036714212835424981624324048566491827364554637281第36页/共46页38算法思路:

可以用外循环变量i控制行,内循环变量j控制列,i的变化范围为1到9,而j的变化范围由i决定,即第i行时j的变化为从1到i,i每取一个值,j都会从1变到i。行列确定后每个数即为i*j。

第37页/共46页39#include<stdio.h>voidmain(){inti,j;

for(i=1;i<=9;i++)

{

for(j=1;j<=i;j++)

{printf("%3d",i*j);}printf("\n");

}}程序:第38页/共46页40算法和程序参考书算法思路:判断m是否为素数,让m被2到(k)除,如果m能被2~k之间任何一个整数整除,则提前结束循环,此时i必然小于或等于k;如果m不能被2~k之间的任一整数整除,则在完成最后一次循环后i还要加1,因此i=k+1,然后才终止循环.在循环之后判别i的值是否大于或等于k+1,若是,则表明未曾被2~k之间任一整数整除过,输出“是素数”

打印:100~200间的全部素数第39页/共46页41#include<stdio.h>#include<math.h>voidmain(){intm,k,i,n=0;printf("100~200之间的全部素数是:\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);}}}程序:第40页/共46页42例:百鸡问题:“鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一。百钱买百鸡,问鸡翁、母、雏各几何?设:公鸡x只,母鸡y只、小鸡z只x+y+z=1005x+3y+z/3=100第41页/共46页43#include<st

温馨提示

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

评论

0/150

提交评论