C#中的循环结构.ppt
第4章 C#中的循环结构,计算机基础教研室,1,学习目标,知识目标掌握循环结构的用法。技能目标学会循环分支结构while()语句的使用学会循环分支结构do-while()语句的使用学会循环分支结构for()语句的使用学会循环分支结构foreach()语句的使用掌握break;和continue;的用法,2,主要内容,4.1 什么是循环4.2 while()语句4.3 do-while()语句4.4 for()语句*4.5 循环控制语句break、continue的用法4.6 循环的嵌套自学内容 C#特色的foreach()语句,3,4,“浩瀚的宇宙中如果只有我们的话,岂不是太浪费地方?”科幻电影接触未来的女主角埃莉收到了来自外太空的信号,从而开启正式接触外星文明之旅。来自外太空的信号是最朴素的数学语言,即一组素数/质数。因为一组有顺序的质数不可能是自然随机产生的,所以可以肯定是外星文明发出的。本案例要求模仿外星文明产生200以下的素数,如2,3,5,7,11,13,外星文明的信号,5,判断一个数N是素数的条件:(定理1)2N-1 均不能被N整除;(推论1)2N/2 均不能被N整除;(推论2)2N的平方根 均不能被N整除;如13是素数的条件,212均不能被13整除;而15不是素数,因为3能被15整除;,判断素数的数学基础,6,汤姆克鲁斯和伊莉沙白赫莉,7,鼻子和嘴巴的宽度=0.618;鼻子侧面鼻梁长度和鼻尖高度的比=0.618;脸宽和脸长比=0.618。人脸分上中下三个部分,中、下脸部长度和脸全长来比近于0.618最好看。建筑师们对数学0.618的偏爱,金字塔、还是巴黎圣母院、埃菲尔铁塔。名画、雕塑、摄影作品,梦娜丽莎、大卫。艺术家们认为弦乐器的琴马放在琴弦的0.618处,能使琴声更加柔和甜美。,神奇的0.618黄金分割,8,1、1、2、3、5、8、13、21、即Fn=F(n-1)+F(n-2)。相邻两个斐波那契数比值是随序号的增加而趋于黄金分割比的。即F(n)/F(n+1)0.618斐波那契数列又因数学家斐波那契以兔子繁殖为例子而引入,故又称为“兔子数列”。一般而言,兔子在出生两个月后,就有繁殖能力,一对兔子每个月能生出一对小兔子。如果所有兔子都不死,那么40个月以后可以繁殖多少对兔子?,斐波那契数列(Fibonacci Sequence),9,计算自然对数e的近试值。e=1+1/2!+1/3!+1/4!+1/5!+1/6!.1/n!,当1/n!小于0.00001时达到精度。2.序列问题 2/1-3/2+5/3 求前n项之和,其它问题,4.1 什么是循环,1.什么是循环,为什么需要循环?减少重复工作。提高工作效率。,10,例题1.输出一百遍我爱你!(Sample5_1)static void Main(string args)for(int i=1;i=100;i+)Console.WriteLine(赵灵儿,我爱你!);Console.ReadLine();思考:要说一万次呢?能不能加上次数?,11,例题1.输出一百遍我爱你!(Sample5_1)static void Main(string args)for(int i=1;i=100;i+)Console.WriteLine(赵灵儿,我爱你!(第0次),i);/Console.WriteLine(赵灵儿,我爱你!(第+i+次));Console.ReadLine();,12,两种输出方法都可以!,4.2 while()语句,4.2.1 基本格式 while语句先计算表达式的值,值为true则执行循环体,反复执行上述操作,直到表达式的值为false时停止循环。语法如下:while(表达式)循环体(语句序列;),13,4.2.2 while()语句的实例static void Main(string args)int sum=0,i=1;while(i=100)sum=sum+i;i+;Console.WriteLine(sum=0,sum);Console.ReadLine();,14,思考:本题作用?计算3+4+5+1033=?控制循环的3条关键语句!,4.3 do-while()语句,4.3.1 基本格式 do-while语句先执行循环体语句一次,再判别表达式的值,若为true则继续循环,否则终止循环。语法如下:Do 循环体(语句序列;)while(表达式),15,4.3.2 do-while()语句的实例static void Main(string args)int sum=0,i=1;do sum=sum+i;i+;while(i=100);Console.WriteLine(sum=0,sum);Console.ReadLine();,16,思考:本题作用?计算3+4+5+1033=?控制循环的3条关键语句!,4.4 for()语句,4.4.1 for()语句的基本格式 for语句和while语句一样,也是一种循环语句,用来重复执行一段代码。两个循环语句的区别就是使用方法不同。for语句的使用语法如下:for(表达式1;表达式2;表达式3)循环体(语句序列;),17,4.4.2 for()语句的实例static void Main(string args)int sum=0,i;for(i=1;i=100;i+)sum=sum+i;Console.WriteLine(sum=0,sum);Console.ReadLine();,18,思考:本题作用?计算3+4+5+1033=?控制循环的3条关键语句!,例题2.求1*2*3*5=?(Sample5_2)static void Main(string args)int prod=0,i;for(i=1;i=5;i+)prod=prod*i;Console.WriteLine(prod=0,prod);Console.ReadLine();思考:结果对吗,如何修改?,19,1,例题3.求1*2*n,即n!?(Sample5_3)static void Main(string args)int i,n;double prod=1;n=int.Parse(Console.ReadLine();for(i=1;i=n;i+)prod=prod*i;Console.WriteLine(prod=0,prod);Console.ReadLine();思考:为什么使用double 类型?,20,例题4.求 2/1-3/2+5/3-8/5前n项?(Sample5_4)static void Main(string args)int i,n,k=1,a=2,b=1;double sum=0,s;n=int.Parse(Console.ReadLine();for(i=1;i=n;i+)s=a/b*k;sum=sum+s;a=a+b;b=a;k=-k;Console.WriteLine(sum=0,sum);Console.ReadLine();思考:错误在哪里?如何查错?,21,(重要内容)单步调试!单步调试 F11;也可以添加“断点”,按F5执行到“断点”处。观察“局部变量”或者“监视”,一步步寻找出错语句。,22,例题5.求1!+2!+n!=?(Sample5_5)static void Main(string args)int i,n;double sum=0,s=填空;n=int.Parse(Console.ReadLine();for(i=1;i=n;i+)s=填空;sum=sum+s;Console.WriteLine(sum=0,sum);Console.ReadLine();,23,序列类题目,核心框架:for(;)步骤1.确定循环次数,填写;步骤2.构造s项,达到目的。,24,例题6.求斐波那契数列1,1,2,3,5,8前n位和(Sample5_6)static void Main(string args)int i,n,sum=0,s=填空;填空/还需要几个变量?n=int.Parse(Console.ReadLine();for(i=1;i=n;i+)sum=sum+s;/s如何构造,使其为1,1,2,3,5,8?Console.WriteLine(sum=0,sum);Console.ReadLine();,25,4.5 循环控制语句,4.5.1 break和continue用法break:跳出当前的switch语句或循环continue:结束本次循环,循环继续,26,4.5.2 break和continue实例static void Main(string args)int i;for(i=1;i=100;i+)if(i%5!=0)continue;Console.WriteLine(0,i);Console.ReadLine();,27,思考:本题作用?将continue替换为break呢?,例题7.输入一个数k,判断是否为素数。(Sample5_7_1)static void Main(string args)int i,k;k=int.Parse(Console.ReadLine();for(i=2;i=k)/判断for循环结束时的i值,请思考!Console.WriteLine(0 is prime.,k);else Console.WriteLine(0 is not prime.,k);Console.ReadLine();,28,1.循环终值法!,例题7.输入一个数k,判断是否为素数。(Sample5_7_2)static void Main(string args)int i,k,ip=0;k=int.Parse(Console.ReadLine();for(i=2;i k;i+)if(k%i=0)ip=1;break;if(ip=0)/判断for循环结束时的ip值,请思考!Console.WriteLine(0 is prime.,k);else Console.WriteLine(0 is not prime.,k);Console.ReadLine();,29,2.变量标识法!,4.6 循环的嵌套,4.6.1 循环的嵌套(多重循环)1控制台环境,输出图形*static void Main(string args)Console.WriteLine(*);Console.ReadLine();或者 for(int i=1;i=5;i+)Console.Write(*);,30,思考:Write和WriteLine的区别?那种方法好?,控制台环境,输出图形 可以 Console.WriteLine(*);Console.WriteLine(*);Console.WriteLine(*);也可以for(int i=1;i=3;i+)Console.WriteLine(*);还可以for(int i=1;i=3;i+)for(int j=1;j=5;j+)Console.Write(*);Console.WriteLine();,31,*,可以替换为WriteLine吗?,为什么不用i?,思考这条语句的作用,3.例题8.输出图形(Sample5_8)static void Main(string args)for(int i=1;i=5;i+)for(int j=1;j=i;j+)Console.Write(*);Console.WriteLine();Console.ReadLine();,32,*,*,*,*,4.例题9.输出99乘法表(Sample5_9),33,5.例题10.输出200以内的素数(Sample5_10)static void Main(string args)int i,k;for(k=2;k=200;k+)/在循环中判断当前的k是不是素数,是则输出。Console.ReadLine();,34,效果1,效果2,自学内容,C#特色的foreach()语句看书,把4.2中的例子调试一下吧!,35,小结,C#程序设计中有三大程序结构,分别为顺序结构、选择结构和循环结构。本章及上章通过几个案例介绍了选择结构中的if语句、switch语句,循环结构中的while语句、do-while语句、for语句,以及break与continue语句的用法以及它们之间的区别。介绍了循环嵌套的复杂情况。请同学们多上机练习、多调试!,36,通 知,周四上机!地点:工训机房313上机实验内容:例题5.求1!+2!+n!=?(SY4_1)例题6.求斐波那契数列1,1,2,3,5,8前n位和。(SY4_2)例题9.输出99乘法表(SY4_3)例题10.输出200以内的素数(SY4_4)请提前做好准备!,37,