ETempC程序设计1第六讲-循环结构课件_第1页
ETempC程序设计1第六讲-循环结构课件_第2页
ETempC程序设计1第六讲-循环结构课件_第3页
ETempC程序设计1第六讲-循环结构课件_第4页
ETempC程序设计1第六讲-循环结构课件_第5页
已阅读5页,还剩59页未读 继续免费阅读

下载本文档

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

文档简介

1、ETempC程序设计1第六讲-循环结构1ETempC程序设计1第六讲-循环结构2ABYNABP成立成立?NYP成立成立?AYNAP成立成立?ETempC程序设计1第六讲-循环结构3int a,b,sum;scanf(“%d%d”,&a,&b);sum=a+b;printf(“sum=%dn”,sum);顺序顺序结构结构int a,b,max;scanf(“%d%d”,&a,&b);if(ab) max=a;else max=b;printf(“max=%dn”,max);选择选择结构结构如何连续求和或求最大值?如何连续求和或求最大值?ETempC程序设计1第六讲

2、-循环结构4int i,a,b,sum;for(i=1;i=10;i+) scanf(“%d%d”,&a,&b); sum=a+b; printf(“sum=%dn”,sum);int i,a,b,sum;i=1;while(i=10) scanf(“%d%d”,&a,&b); sum=a+b; printf(“sum=%dn”,sum); i+;for循环循环while循循环环ETempC程序设计1第六讲-循环结构5int a,b,sum;while(a!=0|b!=0) scanf(%d%d,&a,&b); sum=a+b; printf(s

3、um=%dn,sum);getch();错错误!误!int a,b,sum;scanf(%d%d,&a,&b); while(a!=0|b!=0) sum=a+b; printf(sum=%dn,sum);getch();错错误!误!ETempC程序设计1第六讲-循环结构6int a,b,sum;scanf(%d%d,&a,&b); while(a!=0|b!=0) sum=a+b; printf(sum=%dn,sum); scanf(%d%d,&a,&b);getch();循环初始条件循环初始条件循环控制条件循环控制条件循环体(红色大括号循环

4、体(红色大括号内的部分)内的部分)循环因子循环因子(a,b)只要能够找到循环的四个要素,即可写出循环。当循环次数不确定时,用while循环更直观,当然也可可用for循环ETempC程序设计1第六讲-循环结构7int a,b,sum;loop:scanf(%d%d,&a,&b);sum=a+b;printf(sum=%dn,sum);if(a!=0|b!=0) goto loop;getch();ETempC程序设计1第六讲-循环结构8ETempC程序设计1第六讲-循环结构9ETempC程序设计1第六讲-循环结构10当表达式为真当表达式为真 语句语句表 达 式 非表 达 式 非0

5、?语句语句ETempC程序设计1第六讲-循环结构11思路:寻找思路:寻找加数加数与与求和求和的规律的规律 1+2+3+99+100isumi=sumi-1+iETempC程序设计1第六讲-循环结构12int i,sum;i=1;while(i=100) sum=sum+i; i+; printf(sum=%dn,sum);getch();正确正确吗?吗?循环初始条件循环初始条件循环控制条件循环控制条件循环体(红色大括号循环体(红色大括号内的部分)内的部分)循环因子循环因子(i)ETempC程序设计1第六讲-循环结构13int i,sum=0;i=1;while(i=100) sum=sum+i

6、; i+; printf(sum=%dn,sum);getch();别忘了别忘了sum的初值!的初值!转换转换为为for循环循环int i,sum=0;for( i=1; i=100;i+) sum=sum+i;printf(sum=%dn,sum);getch();for循循环更环更简洁!简洁!ETempC程序设计1第六讲-循环结构14ETempC程序设计1第六讲-循环结构15例如:求例如:求15的累加和的累加和.main( )int i,s=0;for(i=1;i=5;i+ +)s+=i;printf(“%d,%dn”,i,s)i=5?s=s+ii=i+1是否结束s=0i=1表达式表达式1

7、表达式表达式2循环体循环体表达式表达式3s=0i=1s=1i=2s=3 i=3s=6 i=4s=10 i=5s=15 i=6for (循环变量赋初值循环变量赋初值;循环条件循环条件;循环变量增值循环变量增值) 语句(语句(即循环体)即循环体)更为通俗的表示:更为通俗的表示:ETempC程序设计1第六讲-循环结构16ETempC程序设计1第六讲-循环结构17注意:在省略某个表达式时,应在适当位置进行循注意:在省略某个表达式时,应在适当位置进行循环控制的必要操作,以保证循环的正确执行环控制的必要操作,以保证循环的正确执行ETempC程序设计1第六讲-循环结构18ETempC程序设计1第六讲-循环结

8、构19main(void) int i,sum=0; for(i=1;i=5;i+); sum=sum+i; printf(sum=%dn,sum);main(void) int i,sum=0; i=1; while(i=5); sum=sum+i; i+; printf(sum=%dn,sum);分号的问题!分号的问题!ETempC程序设计1第六讲-循环结构20Si=Si-1*i;main() int i; long s=1; for(i=1;i=5;i+) s=s*i; printf(“%ldn”,s);若计算若计算1*3*5*7*.前前10项的积,怎么修项的积,怎么修改程序?改程序?E

9、TempC程序设计1第六讲-循环结构21ETempC程序设计1第六讲-循环结构22int i,sum=0;i=1;while(i=100) sum=sum+i; i+; printf(sum=%dn,sum);getch();int i,sum=0;i=1;do sum=sum+i; i+; while(i=100);printf(sum=%dn,sum);getch();此时,两种循环实现的功能完全相同,如果将i的初值设为101,将出现什么情况?ETempC程序设计1第六讲-循环结构23ETempC程序设计1第六讲-循环结构24ETempC程序设计1第六讲-循环结构25 if(number/

10、10000!=0) count=5; else if(number/1000!=0) count=4; else if(number/100!=0) count=3; else if(number/10) count=2; else count=1; tenthousand=number/10000 thousand=number%10000/1000 hundred=number%1000/100 ten=number%100/10 individual=number%10 individual=number%10 ten=number/10%10 hundred=number/100%10

11、 thousand=number/1000%10 tenthousand=number/10000若要判断若要判断任意一个任意一个任意位数任意位数的整数怎的整数怎么办么办?ETempC程序设计1第六讲-循环结构26 number%10 (5) number=number/10 (1234) number%10 (4) number=number/10 (123) number%10 (3)number=number/10 (12)number%10 (2)number=number/10 (1)number%10 (1)number=number/10 (0)退出条件退出条件循环体: numb

12、er%10 number=number/10 循环条件: number!=0 while(number!=0) printf(“%d”,number%10); number=number/10;do printf(“%d”,number%10); number=number/10; while(number!=0);问题在哪?为什么问题在哪?为什么必须用必须用do while?ETempC程序设计1第六讲-循环结构27main() int s=0,s1=0,s2=0,i; for(i=1;i=99;i+=2) s1=s1+i; for(i=2;i=100;i+=2) s2=s2+i; s=s1

13、-s2; printf(s=%dn,s);分成两部分求和,然后相减:分成两部分求和,然后相减:main() int s=0,i,f=1; for(i=1;i=100;i+) s=s+f*i; f=-f; printf(s=%dn,s);设置一个表示正负的变量:设置一个表示正负的变量:for(i=1;i=99;i+=4)s1=s1+1/(i*i);for(i=3;i=99;i+=4)s2=s2+1/(i*i);?ETempC程序设计1第六讲-循环结构28main() float s=0,s1=0,s2=0; int i; for(i=1;i=99;i+=4) s1=s1+1.0/(i*i); f

14、or(i=3;i=99;i+=4) s2=s2+1.0/(i*i); s=s1-s2; printf(s=%fn,s);分成两部分求和,然后相减:分成两部分求和,然后相减:main() float s=0,f=1; int i; for(i=1;i=100;i+=2) s=s+f/(i*i); f=-f; printf(s=%fn,s);设置一个表示正负的变量:设置一个表示正负的变量:若没有指定项数,而是要求最后一项的绝对值小于10-5,该如何修改程序?ETempC程序设计1第六讲-循环结构29imain() int i,s=0; for(i=1;i=10;i+) s=s+ ; ii表示第表示

15、第i项的值,而第项的值,而第i项的值又是一个项的值又是一个“和和”s1int s1,j;s1=0;for(j=1;j=i;j+)s1=s1+j;main() int i,j; long s=0,s1; for(i=1;i=10;i+) s1=1; for(j=1;j=i;j+) s1=s1*j; s=s+s1; main() int i,j; long s=1,s1; for(i=1;i=10;i+) s1=0; for(j=1;j=i;j+) s1=s1+j; s=s*s1; 请思考:请思考:可以用单可以用单循环实现循环实现吗?吗?ETempC程序设计1第六讲-循环结构30ETempC程序设

16、计1第六讲-循环结构31for(i=2;i=n-1;i+) if(n%i=0) break;if(i=n) printf(“Yesn”);else printf(“Non”);for(i=2;isqrt(n) printf(“Yesn”);else printf(“Non”);ETempC程序设计1第六讲-循环结构32for(n=100;n=200;n+) if(n是素数是素数)输出该素数,并统计个数输出该素数,并统计个数,if(如果个数是如果个数是5的倍数的倍数) 换行换行for(i=2;isqrt(n)if(count%5=0) putchar(n);ETempC程序设计1第六讲-循环结构

17、33for(i=大数大数;i+) if(i%m=0&i%n=0) break;i即为最小公倍数即为最小公倍数for(i=小数小数;i-) if(m%i=0&n%i=0) break;i即为最大公约数即为最大公约数m,n的最大公约数的最大公约数=n,m%n的最大公约数(的最大公约数(m是大数),如:是大数),如:M(12,8)=M(8,4)=M(4,0)=4m,n的最小公倍数的最小公倍数=m*n/最大公约数最大公约数ETempC程序设计1第六讲-循环结构34while(n!=0) m=n; n=m%n;m,n的最大公约数的最大公约数=n,m%n的最大公约数(的最大公约数(m是大数

18、),如:是大数),如:M(12,8)=M(8,4)=M(4,0)=4m,n的最小公倍数的最小公倍数=m*n/最大公约数最大公约数循环体: m=n; n=m%n 循环条件: n!=0 错误在错误在哪?哪?改为改为while(n!=0) t=m; m=n; n=t%n;m是最大公约数是最大公约数ETempC程序设计1第六讲-循环结构35data=0;for(i=1;i=n;i+) data=data*10+a sum=sum+data; datai=datai-1*10+aETempC程序设计1第六讲-循环结构36ETempC程序设计1第六讲-循环结构37思路:思路:Fibonacci数列的前几项

19、是:数列的前几项是:1、1、2、3、5、8、13、21、34、。此数列的变化规律是:。此数列的变化规律是:ETempC程序设计1第六讲-循环结构38f1=1,f2=1并输出并输出for (i=3; i=20; i+) f3=f2+f1 f1=f2,f2=f3 输出输出f3 T F 换行换行ETempC程序设计1第六讲-循环结构39ETempC程序设计1第六讲-循环结构40后续语句后续语句 后续语句后续语句后续语句后续语句ETempC程序设计1第六讲-循环结构41ETempC程序设计1第六讲-循环结构42后续语句后续语句后续语句后续语句后续语句后续语句ETempC程序设计1第六讲-循环结构43E

20、TempC程序设计1第六讲-循环结构441.以下程序的运行结果是?以下程序的运行结果是?main()int a=13,b=21,m=0;switch(a%3)case 0:m+;break; case 1:m+; switch(b%2) default: m+; case 0: m+;break; printf(“m=%dn”,m); 2.阅读程序写结果阅读程序写结果main( ) int x=1,y=2,a=0,b=0; switch(x) case 1: switch(y) case 0: a+; case 2:b+;break; case 1:b+; case 2:a+;b+;break

21、; case 3:a+;b+; printf(“a=%d,b=%dn”,a,b);ETempC程序设计1第六讲-循环结构453.下列程序的输出结果是下列程序的输出结果是:main( ) int i,j,x=0; for(i=0;i2;i+) x+; for(j=0;j=3;j+) if (j%2) break; x+; x+; printf(“x=%dn”,x); break:结束本层循环或结束本层循环或本层的本层的switch结构结构Continue:结束本次循环,结束本次循环,继续下一次的循环判断继续下一次的循环判断ETempC程序设计1第六讲-循环结构46ETempC程序设计1第六讲-循

22、环结构47ETempC程序设计1第六讲-循环结构48ETempC程序设计1第六讲-循环结构49ETempC程序设计1第六讲-循环结构50ETempC程序设计1第六讲-循环结构51ETempC程序设计1第六讲-循环结构52ETempC程序设计1第六讲-循环结构531 22 333 4444 55555ETempC程序设计1第六讲-循环结构54ETempC程序设计1第六讲-循环结构55ETempC程序设计1第六讲-循环结构56ETempC程序设计1第六讲-循环结构57ETempC程序设计1第六讲-循环结构58ETempC程序设计1第六讲-循环结构59ETempC程序设计1第六讲-循环结构60课堂练习:课堂练习:1.下列程序的输出结果是下列程序的输出结果是:A)x=4 B)x=8 C)x=6 D)x=12main( )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); 2.下列程序的输出结果是下列程序的输出结果是:main( ) int i,j,k=0,m=0; for(i=0;i2;i+) for(j=0;j3;j+) k+; k-=j; m=i+j;printf(“k=%d,=%dn”,k,m);3.下列程序的输出结果是下列程序的输出结果

温馨提示

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

评论

0/150

提交评论