第10部分循环的嵌套课件_第1页
第10部分循环的嵌套课件_第2页
第10部分循环的嵌套课件_第3页
第10部分循环的嵌套课件_第4页
第10部分循环的嵌套课件_第5页
已阅读5页,还剩51页未读 继续免费阅读

下载本文档

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

文档简介

循环嵌套循环嵌套1三种嵌套样式样式1:样式2:样式3:while()while()for(;;){┆{┆{┆while()dofor(;;){…}{…}{…}}while();}┆}三种嵌套样式样式1:样式2:多重循环举例【例】从三个红球、五个白球、六个黑球中任意取出八个球,且其中必须有白球,输出所有可能的方案。 #include<stdio.h> voidmain() { inta,b,c; printf("\nred\twhite\tblack\n");

for(a=0;a<=3;a++) for(b=1;b<=5;b++) { c=8-a-b; if(c>=0&&c<=6) printf("%d\t%d\t%d\t\n",a,b,c); }}

多重循环举例【例】从三个红球、五个白球、六个黑球中任意取出八输出菱形********************************

行号空格星号131223315407

行号空格星号107215323431空=4-行空=行-1星=2*行-1星=9-2*行输出菱形********行号空格星号行号空格分析下列两个程序的运行结果#include<stdio.h>main(){inti,j; for(i=1;i<=10;i++) { for(j=1;j<=10;j++) { printf("%d\t",j); } printf("\n"); }}#include<stdio.h>main(){inti,j; for(i=1;i<=10;i++) { for(j=1;j<=10;j++) { printf("%d\t",j); } printf("\n"); }}分析下列两个程序的运行结果#include<stdio.h编程输出如下形式的乘法九九表分析图形:行号列数输出数据191*列号292*列号393*列号494*列号595*列号696*列号797*列号898*列号999*列号编程输出如下形式的乘法九九表分析图形:#include<stdio.h>main(){ intm,n; for(m=1;m<10;m++) printf("%4d",m);//打印表头 printf("\n"); for(m=1;m<10;m++)//打印虚线 printf("-"); printf("\n"); for(m=1;m<10;m++) //打印乘法表{ for(n=1;n<10;n++) { printf("%4d",m*n); } printf("\n"); }}#include<stdio.h>将上例输出格式改成下三角格式打印将上例输出格式改成下三角格式打印#include<stdio.h>main(){ intm,n; for(m=1;m<10;m++) printf("%4d",m);/*打印表头*/ printf("\n"); for(m=1;m<10;m++) printf("-"); printf("\n"); for(m=1;m<10;m++) { for(n=1;n<=m;n++) { printf("%4d",m*n); } printf("\n"); }}#include<stdio.h>趣味编程马克思手稿中有一道趣味数学题:有30个人,其中有男人、女人和小孩,在一家饭馆里吃饭共花了50先令,每个男人各花3先令,每个女人各花2先令,每个小孩各花1先令,问男人、女人和小孩各有几人?解方程组穷举法趣味编程马克思手稿中有一道趣味数学题:有30个人,其中有男人方法1:采用三重循环穷举全部可能的组合

#include<stdio.h>main(){intx,y,z;printf("Man\tWomen\tChildern\n");for(x=0;x<=30;x++)for(y=0;y<=30;y++)for(z=0;z<=30;z++)if(x+y+z==30&&3*x+2*y+z==50)printf("%3d\t%5d\t%8d\n",x,y,z);}方法1:采用三重循环穷举全部可能的组合#include<方法2:改进算法

#include<stdio.h>

main(){intx,y,z;printf("Man\tWomen\tChildern\n");for(x=0;x<=16;x++)for(y=0;y<=25;y++){z=30–x-y;if(3*x+2*y+z==50)printf("%3d\t%5d\t%8d\n",x,y,z);}}方法2:改进算法#include<stdio.h>3.6.5break语句和continue语句1.break语句

跳出一层循环break语句的一般形式:2.continue语句 结束本次循环

continue语句的一般形式:break;continue;3.6.5break语句和continue语句1.breafor(表达式1;表达式2;表达式3){语句1;

continue;语句2;}continue语句while(表达式){语句1;

continue;语句2;}do{语句1;

continue;语句2;}while(表达式);for(表达式1;表达式2;表达式3)continuefor(a=1;a<=3;a++){for(b=1;b<=100;b++){printf("%d,",b);if(b>=10)break;

}printf("\n");}break语句1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,for(a=1;a<=3;a++)break语分析下列两个程序的运行结果#include<stdio.h>main(){inti; for(i=1;i<=100;i++) { if(i%10==0) break; printf("%d\t",i); } printf("\n");}#include<stdio.h>main(){inti; for(i=1;i<=100;i++) { if(i%10==0) continue; printf("%d\t",i); } printf("\n");}分析下列两个程序的运行结果#include<stdio.h分析下列两个程序的运行结果#include<stdio.h>main(){inti,j; for(i=1;i<=10;i++) { for(j=1;j<=10;j++) { if(j%5==0) continue; printf("%d\t",j); } printf("\n"); }}#include<stdio.h>main(){inti,j; for(i=1;i<=10;i++) { for(j=1;j<=10;j++) { if(j%5==0) continue; printf("%d\t",j); } printf("\n"); }}分析下列两个程序的运行结果#include<stdio.hbreak和continue对for、while、do-while循环进行内部手术break,退出循环continue,中断此次循环的执行,开始下一次break和continue少用为妙它们增加了循环执行的分支,break更增加了循环的出口它们可以用来处理程序异常,而尽量不要用来处理正常流程break和continue对for、while、do-wh习题演练1.以下程序运行后,b的值是

inta=1,b;for(b=1;b<=10;b++) {if(a>=8)break;if(a%2==1){a+=5;continue;}a-=3;}习题演练1.以下程序运行后,b的值是习题演练2.以下程序的运行结果是inty=9;for(;y>0;y--)if(y%3==0)printf("%d",--y);3.以下程序的运行结果是for(i=0;i<4;i++,i++)for(k=1;k<3;k++);printf("*");习题演练2.以下程序的运行结果是3.以下程序的运行结果是习题演练4.实现:s=1+12+123+1234+12345

intt=0,s=0,i;for(i=1;i<=5;i++){t=i+

;s=s+t;}5.以下程序运行后,m的值是inti,j,m=55;for(i=1;i<=3;i++)for(j=3;j<=i;j++)m=m%j;

习题演练4.实现:s=1+12+123+1234+123习题演练6.以下程序的运行结果是

inti,j,sum;for(i=3;i>=1;i--){sum=0;for(j=1;j<=i;j++)sum+=i*j;}printf("%d",sum);习题演练6.以下程序的运行结果是习题演练7填空求出S值:S=1+1/2!+1/3!+…+1/n!:#include<stdio.h>main(){ doubles,fac; intn,i; printf("Inputn:"); scanf("%d",&n); s=______,fac=______; for(i=1;i<=n;i++) { fac=fac______; s=s+fac;

} printf("s=%lf\n",s);}习题演练7填空求出S值:S=1+1/2!+1/3!+…+1习题演练8以下程序的输出结果是:#include<stdio.h>main(){ intt,i=5; for(;i>=0;i--) t*=i; printf("%d\n",t);}9设i,j,k均是int型变量,则执行以下for循环后,k值为: for(i=0,j=10;i<=j;i++,j--) k=i+j;习题演练8以下程序的输出结果是:作业111112113311464115101051按此规律输出10行作业11作业2一个数如果恰好等于它的因子之和,这个数就称为完数。求100之内的所有完数。求100以内的所有素数。(素数是除了1和它本身外不能被其它数整除的数)根据下面的公式,计算π值。作业2课外编程活动活动一:“字符分拣”【活动描述】输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。活动二:自然数验证【活动描述】编一程序,验证下列结论:任何一个自然数n的立方都等于n个连续奇数之和。如13=1,23=3+5;33=7+9+11,43=13+15+17+19编程提示:分析数据规律课外编程活动活动一:“字符分拣”Dijkstra说过的话编程的艺术就是处理复杂性的艺术优秀的程序员很清楚自己的能力是有限的,所以他对待编程任务的态度是完全谦卑的,特别是,他们会象逃避瘟疫那样逃避“聪明的技巧”。——1972年图灵奖演讲简单是可靠的先决条件我们所使用的工具深刻地影响我们的思考习惯,从而也影响了我们的思考能力实际上如果一个程序员先学了BASIC,那就很难教会他好的编程技术了:作为一个可能的程序员,他们的神经已经错乱了,而且无法康复就语言的使用问题:根本不可能用一把钝斧子削好铅笔,而换成十把钝斧子会使事情变成大灾难Dijkstra说过的话编程的艺术就是处理复杂性的艺术循环嵌套循环嵌套29三种嵌套样式样式1:样式2:样式3:while()while()for(;;){┆{┆{┆while()dofor(;;){…}{…}{…}}while();}┆}三种嵌套样式样式1:样式2:多重循环举例【例】从三个红球、五个白球、六个黑球中任意取出八个球,且其中必须有白球,输出所有可能的方案。 #include<stdio.h> voidmain() { inta,b,c; printf("\nred\twhite\tblack\n");

for(a=0;a<=3;a++) for(b=1;b<=5;b++) { c=8-a-b; if(c>=0&&c<=6) printf("%d\t%d\t%d\t\n",a,b,c); }}

多重循环举例【例】从三个红球、五个白球、六个黑球中任意取出八输出菱形********************************

行号空格星号131223315407

行号空格星号107215323431空=4-行空=行-1星=2*行-1星=9-2*行输出菱形********行号空格星号行号空格分析下列两个程序的运行结果#include<stdio.h>main(){inti,j; for(i=1;i<=10;i++) { for(j=1;j<=10;j++) { printf("%d\t",j); } printf("\n"); }}#include<stdio.h>main(){inti,j; for(i=1;i<=10;i++) { for(j=1;j<=10;j++) { printf("%d\t",j); } printf("\n"); }}分析下列两个程序的运行结果#include<stdio.h编程输出如下形式的乘法九九表分析图形:行号列数输出数据191*列号292*列号393*列号494*列号595*列号696*列号797*列号898*列号999*列号编程输出如下形式的乘法九九表分析图形:#include<stdio.h>main(){ intm,n; for(m=1;m<10;m++) printf("%4d",m);//打印表头 printf("\n"); for(m=1;m<10;m++)//打印虚线 printf("-"); printf("\n"); for(m=1;m<10;m++) //打印乘法表{ for(n=1;n<10;n++) { printf("%4d",m*n); } printf("\n"); }}#include<stdio.h>将上例输出格式改成下三角格式打印将上例输出格式改成下三角格式打印#include<stdio.h>main(){ intm,n; for(m=1;m<10;m++) printf("%4d",m);/*打印表头*/ printf("\n"); for(m=1;m<10;m++) printf("-"); printf("\n"); for(m=1;m<10;m++) { for(n=1;n<=m;n++) { printf("%4d",m*n); } printf("\n"); }}#include<stdio.h>趣味编程马克思手稿中有一道趣味数学题:有30个人,其中有男人、女人和小孩,在一家饭馆里吃饭共花了50先令,每个男人各花3先令,每个女人各花2先令,每个小孩各花1先令,问男人、女人和小孩各有几人?解方程组穷举法趣味编程马克思手稿中有一道趣味数学题:有30个人,其中有男人方法1:采用三重循环穷举全部可能的组合

#include<stdio.h>main(){intx,y,z;printf("Man\tWomen\tChildern\n");for(x=0;x<=30;x++)for(y=0;y<=30;y++)for(z=0;z<=30;z++)if(x+y+z==30&&3*x+2*y+z==50)printf("%3d\t%5d\t%8d\n",x,y,z);}方法1:采用三重循环穷举全部可能的组合#include<方法2:改进算法

#include<stdio.h>

main(){intx,y,z;printf("Man\tWomen\tChildern\n");for(x=0;x<=16;x++)for(y=0;y<=25;y++){z=30–x-y;if(3*x+2*y+z==50)printf("%3d\t%5d\t%8d\n",x,y,z);}}方法2:改进算法#include<stdio.h>3.6.5break语句和continue语句1.break语句

跳出一层循环break语句的一般形式:2.continue语句 结束本次循环

continue语句的一般形式:break;continue;3.6.5break语句和continue语句1.breafor(表达式1;表达式2;表达式3){语句1;

continue;语句2;}continue语句while(表达式){语句1;

continue;语句2;}do{语句1;

continue;语句2;}while(表达式);for(表达式1;表达式2;表达式3)continuefor(a=1;a<=3;a++){for(b=1;b<=100;b++){printf("%d,",b);if(b>=10)break;

}printf("\n");}break语句1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,for(a=1;a<=3;a++)break语分析下列两个程序的运行结果#include<stdio.h>main(){inti; for(i=1;i<=100;i++) { if(i%10==0) break; printf("%d\t",i); } printf("\n");}#include<stdio.h>main(){inti; for(i=1;i<=100;i++) { if(i%10==0) continue; printf("%d\t",i); } printf("\n");}分析下列两个程序的运行结果#include<stdio.h分析下列两个程序的运行结果#include<stdio.h>main(){inti,j; for(i=1;i<=10;i++) { for(j=1;j<=10;j++) { if(j%5==0) continue; printf("%d\t",j); } printf("\n"); }}#include<stdio.h>main(){inti,j; for(i=1;i<=10;i++) { for(j=1;j<=10;j++) { if(j%5==0) continue; printf("%d\t",j); } printf("\n"); }}分析下列两个程序的运行结果#include<stdio.hbreak和continue对for、while、do-while循环进行内部手术break,退出循环continue,中断此次循环的执行,开始下一次break和continue少用为妙它们增加了循环执行的分支,break更增加了循环的出口它们可以用来处理程序异常,而尽量不要用来处理正常流程break和continue对for、while、do-wh习题演练1.以下程序运行后,b的值是

inta=1,b;for(b=1;b<=10;b++) {if(a>=8)break;if(a%2==1){a+=5;continue;}a-=3;}习题演练1.以下程序运行后,b的值是习题演练2.以下程序的运行结果是inty=9;for(;y>0;y--)if(y%3==0)printf("%d",--y);3.以下程序的运行结果是for(i=0;i<4;i++,i++)for(k=1;k<3;k++);printf("*");习题演练2.以下程序的运行结果是3.以下程序的运行结果是习题演练4.实现:s=1+12+123+1234+12345

intt=0,s=0,i;for(i=1;i<=5;i++){t=i+

;s=s+t;}5.以下程序运行后,m的值是inti,j,m=55;for(i=1;i<=3;i++)for(j=3;j<=i;j++)m=m

温馨提示

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

评论

0/150

提交评论