第4章--C#中的循环

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第4章C#中的循环•在第3章的学习中,读者已经掌握了条件结构。使用条件结构可以使程序实现判断逻辑。但是,这些还不够,在本章,读者将学习循环结构。有了循环结构,有利于利用计算机强大的计算能力,让程序实现繁重的计算任务。同时循环结构还可以简化程序编码,更好地实现理想的效果。4.1基本循环•问题:李逍遥决定对赵灵儿说10000遍“我爱你”,以表达自己对赵灵儿的真心:07Console.WriteLine(第1遍说:我爱你!);08Console.WriteLine(第2遍说:我爱你!);09Console.WriteLine(第2遍说:我爱你!);10//此处省略9995条输出语句11Console.WriteLine(第9999遍说:我爱你!);12Console.WriteLine(第10000遍说:我爱你!);•赵灵儿绝顶聪明,说事情还有更简单的做法。于是给李逍遥指点了一招:循环结构。那么循环结构是什么呢?一起来见识下(P41代码)。4.1.1while循环(当循环)•分析上面的例子可知,循环就是重复地做一件事:重复地说“我爱你!”。无论是生活中还是C#中,所有的循环结构都有这样的特点:首先,环不是无休止进行的,满足一定条件的时候循环才会继续,称为“循环条件”。循环条件不满足的时候,循环退出。其次,循环结构是反复进行相同的或类似的一系列操作,称为“循环操作”。•比如,打印50份试卷、滚动的车轮,这些是生活中的循环结构。••循环结构的共同特征循环结构循环条件循环操作打印50份试卷只要打印的试卷份数不足50份就继续打印打印一份试卷,打印过的总份数加1滚动车轮没有到目的地就继续车轮滚一圈,离目的地更近一点4.1.2while的使用•在运行该程序的时,只有当用户输入y(不分大小写)的时候,循环才退出。部分代码如下:•while(answer!=y)//只要输入的不是“y”,就执行循环操作•{•Console.WriteLine(李逍遥:);•Console.WriteLine(训练训练坚持训练!);•Console.WriteLine(抓紧抓紧抓紧时间!咖啡以后可以喝。);•Console.WriteLine(加油!我李逍遥一定能打败拜月);•Console.WriteLine(李逍遥:我可以打败拜月了吗?(y/n));•//获取用户输入,去掉空格,将输入的字母转化成小写•answer=Console.ReadLine().Trim().ToLower();•}•Console.WriteLine(灵儿:逍遥哥哥,你真棒!);•Console.ReadLine();4.1.3while循环常见错误•张三根据问题写出了如代码所示。•01staticvoidMain(string[]args)//程序入口•02{•03inti=1;//定义循环变量•04while(i8)//使用While循环•05{•06Console.WriteLine(我能行!);•07i++;•08}•09Console.Read();•10}•只打印了7遍.张三的代码错在哪里呢?仔细查看示例中的代码,从i的值为1的时候开始循环,根据循环条件i8,i的值等于7的时候打印第7遍,到i的值为8的时候,循环条件已经不满足,循环就退出了,所以打印了7遍。•排错方法:将循环条件修改为i=8,或者将“inti=1”修改为“inti=0”4.1.4do-while循环(直到循环)•通过前面的学习可以得知,当一开始循环条件不满足的时候,while循环一遍也不会执行。但是有的时候,又有这样的需求:无论如何循环都要执行一遍,再判断循环条件是否继续执行。do-while循环就满足了这样的需求。也就是说,do-while循环是一种至少要执行一遍循环操作的循环结构。•语法:do{循环操作;}while(循环条件);4.1.5do-while循环的使用•问题1:杨过苦练了数月,眼看奥运会在即,小龙女提议“咱们比试下吧,如果你能胜我,就不需要晨练了,否则每天都要训练,直到羸我为止”。•使用do-while循环解决上述问题。步骤与采用while循环解决问题的步骤类似:(P45代码)(1)分析循环条件和循环操作;(2)套用do-while语法写出代码;(3)检查循环是否能够退出。•问题2:连续输入武侠剧里面的侠士或侠女的名字,直到输入s时停止。(P46代码)4.1.6while循环和do-while循环的区别•相同处:都是循环结构,使用“while(循环条件)”表示循环条件,使用大括号将循环操作括起来。•不同处:–语法不同。与while循环相比,do-while循环将while关键字和循环条件放在后面,而且前面多了do关键字,后面多了一个分号。–执行次序不同。while循环先判断,再执行;do-while循环先执行,再判断。–一开始循环条件就不满足的情况下,while循环一次也不会执行,do-while循环则不管什么情况都至少执行一遍。4.1.7for循环•for循环例:publicstaticvoidShowILoveYou(){for(inti=0;i100;++i){Console.WriteLine(i的值=+i);}Console.ReadLine();}•循环四要素:初始部分、循环条件、迭代部分、循环操作。•问:上例,i自加的操作在什么时候执行?4.1.8for循环的使用•问题:输入随意一个整数,根据这个值输出加法表。(代码见P49)//使用for循环输出加法表for(i=0,j=num;i=num;i++,j--){//输出加法表Console.WriteLine(i+++j+=+(i+j));}•用“,”隔开的多个表达式:i=0,j=numi++,j—•在这种特殊形式的表达式中,运算顺序是从左到右。4.1.9for循环常见错误(特殊用法)•(1)缺少循环变量初始化for(;i100;i++){Console.WriteLine(i);}纠正:可在for结构前进行初始化。•(2)缺少条件判断语句for(i=0;;i++){Console.WriteLine(i);}纠正:在循环体中增加break语句。4.1.9for循环常见错误(特殊用法)•(3)缺少迭代部分for(i=0;i100;){Console.WriteLine(i);}纠正:在循环体中增加i++语句。•(4)缺少初始部分、迭代部分和条件判断for(;;){Console.WriteLine(“菜单选项”);}用途:常用于构造循环显示选项,用break跳出循环。4.2C#中特有的foreach循环•这次要结识一位非常强大的新朋友了——foreach循环。许多情况,都可以用foreach循环来描述.•比如:超市结账时,把每一件物品计价;腾空箱子时,将里面的东西一件件掏出来。•foreach中的each是每个的意思,那么foreach就是循环每一个。foreach循环很简单,也很常用,在后面的编程中,foreach循环将大显身手!针对问题进行学习,容易加深理解。4.2.1什么是foreach循环•foreach就是循环每一个,其语法很简单,用法也简单,但是非常实用。语法如下:•语法:foreach(类型元素(局部变量)in集合或者数组){循环操作}•例:foreach(charcinstr){//逐个输出字符串str中的字符Console.WriteLine(c);}4.2.2foreach循环的使用•问题:某个程序需要对用户输入的电子邮箱地址的格式进行判断,要求格式必须正确(比如必须包含“@”和“.”),如果不正确就要求用户重新输入。foreach(charcinemail){if(c=='@')//如果找到了“@”{condition1=true;}if(c=='.')//如果找到了“.”{condition2=true;}}4.2.3死循环•回顾:P50的错误(2)和错误(3)。•死循环就是永远不会退出的循环。死循环是写程序的过程中应该极力避免的情况。•写好循环代码后一定要仔细检查循环是否能够退出。对于初学者来说,由于知识掌握得不牢固或者疏忽,极易造成死循环。•造成死循环的原因有:–缺少条件判断语句或者迭代部分,如4.1节的错误(2)和错误(3);–条件判断语句不准确,比如用true代替条件判断语句;–忘写跳转语句。4.3循环结构总结•4种基本循环结构:while循环:for循环:do-while循环:foreach循环:while(循环条件){//循环操作}for(初始化;循环条件;迭代部分){//循环操作}do{//循环操作}while(循环条件);foraceh(元素in集合或数组){//循环操作}4.4多重循环•内层循环和外层循环就好比地球的自转和公转,地球自转一次,就是内层循环循环一次,地球公转一次,就是外层循环循环一次。当地球自转365次后,才完成了一次公转。即:外层循环每执行一次,内层循环都会从头到尾完整地执行一遍。•问题1:李逍遥任蜀山掌门后,举行了一次团体比赛。比赛分4个队,每个队3名成员。要求循环输入每个队每名成员的成绩,然后计算每个队的成员的平均分。(代码见P56)•问题2:使用多重循环打印直角三角形图案。(代码见P57)扩展:打印菱形图案(P62)。4.5跳转语句•目的:有的时候想要根据需要停止整个循环或者跳到下一次循环,有时需要从程序的一部分跳到程序的其他部分,该怎么办呢?其实,这些都可以用跳转语句来完成。•C#支持3种形式的跳转:break(停止)、continue(继续)和return(返回)。至于return,本书将放在后面的章节进行讲解。现在,本节只学习其中的两种:break和continue。4.6.1使用break语句•见到break这个关键字,读者已经不生疏了,因为在前面使用switch结构的时候,笔者已经再三强调不要落下break。在switch结构中的break,读者已经知道,break语句用于终止循环语句中的某个分支,使程序跳到循环语句以外的下一条语句。•在switch结构、for结构、do...while结构均可用。for(inti=0;i20;i++){爬400米;if(没有力气坚持了)break;//退出比赛}4.6.2使用continue语句•根据要求,在循环语句中if结构中使用break关键字退出循环。但是,可能读者会遇到这样的问题:在某次循环中,并不想执行完所有的循环体,就想跳出本次循环开始执行下一次循环。这时可以用continue语句。•例:统计90分以上的人数。(P59)……if(score90){//分数小于90分时,不进行人数累加continue;}……小结•本章主要学习了C#中的循环结构,包括while循环、do-while循环、for循环和foreach循环。还学习了多重循环结构和跳转语句,通过本章的学习,读者可以编写简单的小程序,并简化自己的代码,使编程代码更加简洁清晰。

1 / 22
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功