《学习情景5C结构化程序设计循环结构.ppt》由会员分享,可在线阅读,更多相关《学习情景5C结构化程序设计循环结构.ppt(48页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、学习情景5Visual C#结构化程序设计循环结构设计结构化程序设计语句 本讲要点:while、dowhile和for等循环语句的作用及其使用 continue和break语句的作用及其使用循环循环是指在指定的条件下多次是指在指定的条件下多次重复执行重复执行一组语一组语句。被重复执行的一组语句称为句。被重复执行的一组语句称为循环体循环体。采用循环结构可以解决一些按一定规则重复执行采用循环结构可以解决一些按一定规则重复执行的问题。例如,统计一个班几十名学生,甚至全校的问题。例如,统计一个班几十名学生,甚至全校几千名学生的学期成绩,如求平均分、不及格人数几千名学生的学期成绩,如求平均分、不及格人数
2、等。等。循环结构按其循环体是否嵌套从属的子循环结构,循环结构按其循环体是否嵌套从属的子循环结构,可分为可分为单循环结构单循环结构和和多重循环结构。多重循环结构。5.1 循环结构概念循环结构概念5.1 循环结构概念循环结构概念 C#中提供了中提供了4种循环语句:种循环语句:while循环循环dowhile循环循环 for循环循环5.2 while循环语句循环语句 格式格式格式格式 :while(条件表达式条件表达式)循环体;循环体;不要加“;”usingSystem;classSumwstaticvoidMain()intn=1;while(n6)Console.WriteLine(“n=0”,
3、n);n+;例例5-1:写出下列程序的运行结果。写出下列程序的运行结果。结果结果:例例5-2:使用使用while语句,编程计算语句,编程计算1+2+1000usingSystem;classSumwstaticvoidMain()inti=1,sum=0;while(i=1000)sum+=i;i+;Console.WriteLine(“1+2+1000=0”,sum);(1 1)如果要实现)如果要实现 sum=1+2+3+10 sum=1+2+3+10,怎怎样修改程序样修改程序?(2 2)如果要实现)如果要实现 sum=30+31+32+50 sum=30+31+32+50,怎样修改程序怎样
4、修改程序?while(i=while(i=10)10)int i=int i=30;30;While(i=While(i0)x*=i;i-;Console.WriteLine(“10!=0”,x);例例5-3:使用使用while语句,编程计算语句,编程计算10的阶乘值。的阶乘值。1.下列程序所计算的数学式是下列程序所计算的数学式是()inta=0,i=2;while(i100)a+=i;i+=2;A.a=1+2+4+98B.a=1+2+4+100C.a=2+4+6+98D.a=2+4+6+100练练 习习2 分钟分钟【练习5-4】编程求下式的值S=12+22+32+n2练练练练 习习习习10
5、分钟分钟5.3 dowhile循环语句 格式格式:do 循环体;循环体;while(条件表达式)(条件表达式);必须必须必须必须有有有有“;”dowhile执行过程执行过程whilewhile执行过程执行过程usingSystem;classTestDoWhilestaticvoidMain()intx,y=0;dox=y+;Console.WriteLine(x);while(y5);结果:结果:例例5-5:写出下列程序的运行结果。:写出下列程序的运行结果。例例5-6如果给你一张无限大的纸(纸的厚度为0.5mm),将之反复对折多少次,可超过珠峰高度(8848米)?想一想?问题引申:纸张对折多
6、少次可达到地球到月球的平均距离(384,400千米)呢?如果想解决此问题,怎么去修改上面的程序?【练习5-7】使用dowhile语句,计算100以内的偶数和。练练练练 习习习习10 分钟分钟1.while语句循环结构和语句循环结构和do.while语句循环结构的区别在于(语句循环结构的区别在于()Awhile语句的执行效率较高语句的执行效率较高Bdo.while语句编写程序较复杂语句编写程序较复杂C无论条件是否成立,无论条件是否成立,while语句都要执行一次循环体语句都要执行一次循环体Ddo.while循环是先执行循环体,后判断条件表达式是否成循环是先执行循环体,后判断条件表达式是否成立,而
7、立,而while语句是先判断条件表达式,再决定是否执行循语句是先判断条件表达式,再决定是否执行循环体环体练练 习习2 分钟分钟相传国际象棋是古印度舍罕王的宰相达依尔发明的。舍罕王十分喜爱象棋,决定让宰相自己选择何种赏赐。这位聪明的宰相指着88共64格的象棋盘说:陛下,请您赏给我一些麦子吧。就在棋盘的第1格中放1粒,第2格放2粒,第3格放4粒,以后每一格都比前一格增加一倍,依此放完棋盘上64格,我就感激不尽了。舍罕王让人扛来一袋麦子,他要兑现他的许诺。请问,国王能兑现他的许诺吗?共要多少麦子赏赐他的宰相?合多少立方米?(1立方米麦子约1.42e8粒)练练练练 习习习习10 分钟分钟5.4 for
8、循环语句 for循环常常用于循环常常用于已知循环次数已知循环次数的情况。的情况。语法格式:语法格式:for(初始化表达式;循环条件;迭代表达式初始化表达式;循环条件;迭代表达式)循环语句序列循环语句序列;例例5-8:使使用用for循循环环语语句句,编编程程输输出出120的的每个奇数的平方。每个奇数的平方。usingSystem;classsquarestaticvoidMain()ints;for(inti=1;i20;i+=2)s=i*i;Console.Write(0t,s);结果:结果:staticvoidMain()longm=1;for(inti=1;i=10;i+)m*=i;Con
9、sole.WriteLine(0!=1,i-1,m);编程编程5-9:用:用for语句输出语句输出10!的值!的值:结果:结果:(1)如如果果对对循循环环变变量量在在for语语句句前前已已赋赋初初值值,则则在在for语语句句中中可省略表达式可省略表达式1,但要,但要保留其后的分号保留其后的分号。.inti=1;for(;i=20;i+).forfor语句的几点说明:语句的几点说明:语句的几点说明:语句的几点说明:(2)for语语句句可可以以省省略略表表达达式式2,即即不不判判断断表表达达式式条条件件是是否否成成立立,循循环环将将一一直直进进行行下下去去,但但应应保保留留表表达达式式2后后面面的
10、的分分号号。此时,需要在循环体中。此时,需要在循环体中添加跳出循环的控制语句。添加跳出循环的控制语句。例:例:for(inti=1;i+)s=i*i;Console.WriteLine(0t,s);if(i=10)break;forfor语句的几点说明:语句的几点说明:语句的几点说明:语句的几点说明:(3)for中中可可以以省省略略表表达达式式3。此此时时应应在在循循环环体体中中添添加加改变循环变量值的语句,以结束循环。改变循环变量值的语句,以结束循环。例:例:for(inti=1;i=10;)s=i*i;Console.WriteLine(0t,s);i+;forfor语句的几点说明:语句的
11、几点说明:语句的几点说明:语句的几点说明:(4)for语句中的语句中的3个表达式个表达式可同时省略可同时省略。inti=1;for(;)s=i*i;Console.WriteLine(0t,s);i+;if(i=10)break;forfor语句的几点说明:语句的几点说明:语句的几点说明:语句的几点说明:【练习5-10】使用for语句,计算100以内奇数的和。练练练练 习习习习10 分钟分钟for循环语句也可以嵌套循环语句也可以嵌套for 循环示例循环示例5-11inti,j;/*打印九九乘法表。打印九九乘法表。*/for(i=1;i10;i+)for(j=1;j=i;j+)Console.W
12、rite(“012,-2“,j,i,i*j);/输出完一行后换行。输出完一行后换行。Console.WriteLine();例例5-12:利用:利用for循环嵌套语句,求循环嵌套语句,求1!+2!+3!+.+10!的和。的和。usingSystem;classMultiSumstaticvoidMain()longs=0,m=1;for(inti=1;i=10;i+)m=1;for(intj=1;j=i;j+)m*=j;s=s+m;Console.WriteLine(1!+2!+3!+.+10!=0,s);结果:结果:5.5 foreach 循环结构循环结构foreach循环一般用于遍历整个集
13、合或数组循环一般用于遍历整个集合或数组foreach(元素类型元素类型 变量名变量名 in 集合或者数组名集合或者数组名)/语句语句输入一个字符串,输出其中的每个字符输入一个字符串,输出其中的每个字符 关键代码分析关键代码分析static void Main(string args)Console.WriteLine(请输入一个字符串请输入一个字符串:);/输入提示输入提示 /从控制台读入字符串从控制台读入字符串 string line=Console.ReadLine();/循环输出字符串中的字符循环输出字符串中的字符 foreach(char c in line)Console.Write
14、Line(c);Console.ReadLine();依次循环字符串中依次循环字符串中的每个字符的每个字符5.6 二重循环进阶二重循环进阶 某次程序大赛,某次程序大赛,3个班级各个班级各4名学员参赛,名学员参赛,计算每个班参赛学员的平均分计算每个班参赛学员的平均分共共3个班级,循环个班级,循环3次计算每个班的平均分次计算每个班的平均分每班每班4名学员,循环名学员,循环4次累加总分次累加总分需要使用二重循环实现需要使用二重循环实现for、while、do-while、foreach 语句可以相互嵌套语句可以相互嵌套 关键代码关键代码/外层循环控制逐个计算每个班级的平均分外层循环控制逐个计算每个班
15、级的平均分for(i=0;i 3;i+)sum=0;/总分计数清零总分计数清零 Console.WriteLine(n请输入第请输入第0个班的成绩个班的成绩,i+1);/内层循环计算每个班级的总分内层循环计算每个班级的总分 for(j=0;j 4;j+)Console.Write(第第0个学员的成绩个学员的成绩:,j+1);score=int.Parse(Console.ReadLine();sum=sum+score;average=sum/4;Console.WriteLine(第第0个班的平均分为个班的平均分为:1分分,i+1,average);内层循环结束内层循环结束后,才执行外后,才
16、执行外层循环的语句层循环的语句 二重循环进阶二重循环进阶用用*打印一个直角三角形图案打印一个直角三角形图案二重循环:外层控制行数,内层打印每行的二重循环:外层控制行数,内层打印每行的*图形特点:每行的图形特点:每行的*个数与行数相等个数与行数相等 关键代码关键代码int rows=5;/打印的行数打印的行数int i,j;/循环变量循环变量/外层循环控制打印的行数外层循环控制打印的行数for(i=1;i=rows;i+)/内层循环控制每行打印内层循环控制每行打印*的个数的个数 for(j=1;j=i;j+)Console.Write(*);Console.Write(n);内层循环的结束条件与
17、外层内层循环的结束条件与外层循环变量有关循环变量有关5.7 break和continue语句 在在C#中可以用跳转语句来改变程序的执行顺序。在程序中可以用跳转语句来改变程序的执行顺序。在程序中采用跳转语句,可以避免可能出现的死循环。中采用跳转语句,可以避免可能出现的死循环。C#中的跳转语句有中的跳转语句有break语句语句、continue语句语句、goto语语句句和和return语句语句等。等。1.break语句语句 使用使用break语句时,将结束循环,执行循环的后续语句。语句时,将结束循环,执行循环的后续语句。2.continue语句语句 continue语句作用是结束本次循环,跳过该语
18、句之后的语句作用是结束本次循环,跳过该语句之后的循环语句,返回到循环的起始处,并根据循环条件决定是循环语句,返回到循环的起始处,并根据循环条件决定是否执行下一次循环。否执行下一次循环。分别调试如下程序,理解break与continue的跳转。课本实例4-14课本实例4-15练练练练 习习习习12 分钟分钟 流程控制进阶流程控制进阶在循环结构中,在循环结构中,continue 和和 break怎样跳转?怎样跳转?for()continue;for()break;跳出循环结构跳出循环结构跳到下次循环跳到下次循环在循环中会怎样呢?在循环中会怎样呢?【例3-9】利用break与continue控制输出
19、130的数值。流程控制进阶流程控制进阶continue下面红色框中代码的作用是什么下面红色框中代码的作用是什么?int count=0;for(i=0;i 3;i+)/提示输入成绩提示输入成绩 for(j=0;j 4;j+)Console.Write(第第0个学员的成绩个学员的成绩:,j+1);score=int.Parse(Console.ReadLine();sum=sum+score;if(score 85)continue;count+;/计算平均分并输出计算平均分并输出continue 跳跳出本次循环,出本次循环,继续下一次继续下一次循环循环统计成绩在统计成绩在85分以上的学员人数分
20、以上的学员人数 流程控制进阶流程控制进阶break 5个专卖店促销,每个专卖店每人个专卖店促销,每个专卖店每人限购限购3件衣服,可以随时选择离开,件衣服,可以随时选择离开,离店时要结账离店时要结账for(i=0;i5;i+)/每次进一个专卖店每次进一个专卖店 for(j=0;j3;j+)/每个店限购每个店限购3件件 if(离开这家店离开这家店)break;选购一件衣服选购一件衣服 结账结账 关键代码回顾关键代码回顾for(i=0;i 5;i+)/外层循环控制依次进入下一个专卖店外层循环控制依次进入下一个专卖店 Console.WriteLine(n欢迎光临第欢迎光临第0家专卖店家专卖店,i+1
21、);for(j=0;j 3;j+)/内层循环一次买一件衣服内层循环一次买一件衣服 Console.Write(要离开吗要离开吗?y/n);choice=Console.ReadLine();if(choice=y)/如果离开,就跳出,结如果离开,就跳出,结账账,进入下一个店,进入下一个店 break;Console.WriteLine(买了一件衣服买了一件衣服);count+;/买一件衣服买一件衣服 Console.WriteLine(离店结离店结账账);break 跳出内层循环跳出内层循环choice=y 流程控制进阶流程控制进阶for()for()continue;for()for()br
22、eak;跳出本层循环,跳出本层循环,继续执行外层循环继续执行外层循环跳出本次循环,跳出本次循环,继续下一次循环继续下一次循环break 和和 continue 用在二重循环中:用在二重循环中:小结小结在控制台打印出如下图案(9行9列):提示:使用二重循环提示:使用二重循环static void Main(string args)int i,j;/循环变量循环变量 for(i=1;i=9;i+)/外层循环控制行数外层循环控制行数 for(j=1;j=9;j+)/内层循环控制每行打印的内层循环控制每行打印的*数数 Console.Write(*t);Console.WriteLine();/换行换
23、行 Console.ReadLine();总结总结C#中的循环结构有哪些?中的循环结构有哪些?break 和和 continue 用在内层循环时跳转到哪里?用在内层循环时跳转到哪里?二重循环实现冒泡排序,循环的中止条件是什么?二重循环实现冒泡排序,循环的中止条件是什么?【例5-16】一张单据上有一个5位数的号码为6*42,其中百位数和千位数已模糊不清,但知道该数能被57和67除尽。设计一个算法,找出该单据所有可能的号码。循环结构项目一循环结构项目一循环结构项目循环结构项目二:百钱买百鸡二:百钱买百鸡【实例题目5-17】我国古代数学家在算经中出了一道题:“鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,
24、值钱一。百钱买百鸡,问鸡翁、母、雏各几何?”意为:公鸡每只5元,母鸡每只3元,小鸡3只1元。用100元买100只鸡,问公鸡、母鸡、小鸡各多少?循环结构项目三循环结构项目三:捉拿肇事司机:捉拿肇事司机【练习题目5_18】一辆卡车违反交通规则,撞死行人,司机畏罪驾车逃跑。当时有三个人目击这一车祸的发生,但都没有看清卡车的牌照号码,只记住牌照号码的部分特征,甲记住牌照号码的前两位数字是相同的,乙记住牌照号码的后两位数字是相同的,丙是一位数学家,他说“车牌号码肯定是四位数,而且恰好是一个整数的平方。”,并且丙已推导出符合该条件的号码只可能有一个。根据这些信息来判定车牌号并捉拿肇事司机。Thank You!