学习情景5C结构化程序设计循环结构.ppt_第1页
学习情景5C结构化程序设计循环结构.ppt_第2页
学习情景5C结构化程序设计循环结构.ppt_第3页
学习情景5C结构化程序设计循环结构.ppt_第4页
学习情景5C结构化程序设计循环结构.ppt_第5页
已阅读5页,还剩43页未读 继续免费阅读

下载本文档

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

文档简介

1、学习情景5,Visual C#结构化程序设计 循环结构设计,结构化程序设计语句,本讲要点: while、dowhile和for等循环语句的作用及其使用 continue和break语句的作用及其使用,循环是指在指定的条件下多次重复执行一组语句。被重复执行的一组语句称为循环体。 采用循环结构可以解决一些按一定规则重复执行的问题。例如,统计一个班几十名学生,甚至全校几千名学生的学期成绩,如求平均分、不及格人数等。 循环结构按其循环体是否嵌套从属的子循环结构,可分为单循环结构和多重循环结构。,5.1 循环结构概念,5.1 循环结构概念,C#中提供了4种循环语句: while循环 dowhile循环

2、for循环,5.2 while循环语句,格式: while (条件表达式) 循环体; ,不要加“;”,using System; class Sumw static void Main( ) int n=1; while (n6) Console.WriteLine(“n=0”, n); n+; ,例5-1:写出下列程序的运行结果。,结果:,例5-2:使用while语句,编程计算1+2+1000,using System; class Sumw static void Main( ) int i=1, sum=0; while (i=1000) sum+=i; i+; Console.Writ

3、eLine(“1+2+1000=0”,sum); ,(1)如果要实现 sum=1+2+3+10 , 怎样修改程序? (2)如果要实现 sum=30+31+32+50 , 怎样修改程序?,while(i=10),int i = 30; While(i=50),使用 while语句,练 习,using System; class Value static void Main( ) int i=10; long x=1; while (i0) x*=i; i-; Console.WriteLine(“10!=0”, x); ,例5-3:使用while语句,编程计算10的阶乘值。,1. 下列程序所计算

4、的数学式是( ) int a=0, i=2; while(i100) a+=i; i+=2; A. a=1+2+4+98 B. a=1+2+4+100 C. a=2+4+6+98 D. a=2+4+6+100,练 习,【练习5-4】编程求下式的值,S=12+22+32+n2,练 习,5.3 dowhile循环语句,格式: do 循环体; while(条件表达式);,必须有“;”,dowhile执行过程 while执行过程,using System; class TestDoWhile static void Main( ) int x, y=0; do x=y+; Console.WriteL

5、ine(x); while(y5); ,结果:,例5-5:写出下列程序的运行结果。,例5-6,如果给你一张无限大的纸(纸的厚度为0.5mm),将之反复对折多少次,可超过珠峰高度(8848米)? 想一想? 问题引申:纸张对折多少次可达到地球到月球的平均距离(384,400千米)呢?如果想解决此问题,怎么去修改上面的程序?,【练习5-7】使用dowhile语句,计算100以内的偶数和。,练 习,1.while语句循环结构和do.while语句循环结构的区别在于( ) Awhile语句的执行效率较高 Bdo.while语句编写程序较复杂 C无论条件是否成立,while语句都要执行一次循环体 Ddo.

6、while循环是先执行循环体,后判断条件表达式是否成 立,而while语句是先判断条件表达式,再决定是否执行循 环体,练 习,相传国际象棋是古印度舍罕王的宰相达依尔发明的。舍罕王十分喜爱象棋,决定让宰相自己选择何种赏赐。这位聪明的宰相指着88共64格的象棋盘说:陛下,请您赏给我一些麦子吧。就在棋盘的第1格中放1粒,第2格放2粒,第3格放4粒,以后每一格都比前一格增加一倍,依此放完棋盘上64格,我就感激不尽了。舍罕王让人扛来一袋麦子,他要兑现他的许诺。请问,国王能兑现他的许诺吗?共要多少麦子赏赐他的宰相?合多少立方米?(1立方米麦子约1.42e8粒),练 习,5.4 for循环语句,for循环常

7、常用于已知循环次数的情况。 语法格式: for (初始化表达式;循环条件;迭代表达式 ) 循环语句序列; ,例5-8:使用for循环语句,编程输出120的每个奇数的平方。,using System; class square static void Main( ) int s; for (int i=1;i20;i+=2) s=i*i; Console.Write(0t , s); ,结果:,static void Main( ) long m=1; for (int i=1;i=10;i+) m*=i; Console.WriteLine(0!=1,i-1,m); ,编程5-9:用for语句

8、输出10!的值:,结果:,(1) 如果对循环变量在for语句前已赋初值,则在for语句中可省略表达式1,但要保留其后的分号。 . int i=1; for( ;i=20;i+) .,for语句的几点说明:,(2)for语句可以省略表达式2,即不判断表达式条件是否成立,循环将一直进行下去,但应保留表达式2后面的分号。此时,需要在循环体中添加跳出循环的控制语句。 例: for(int i=1; ;i+) s=i*i; Console.WriteLine(0t , s); if (i=10) break; ,for语句的几点说明:,(3) for中可以省略表达式3。此时应在循环体中添加改变循环变量值

9、的语句,以结束循环。 例: for( int i=1; i=10; ) s=i*i; Console.WriteLine(0t , s); i+; ,for语句的几点说明:,(4) for语句中的3个表达式可同时省略。 int i=1; for( ; ; ) s=i*i; Console.WriteLine(0t , s); i+; if (i=10) break; ,for语句的几点说明:,【练习5-10】 使用for语句,计算100以内奇数的和。,练 习,for循环语句也可以嵌套,for 循环示例5-11,int i, j; /* 打印九九乘法表。 */ for (i=1; i10; i+

10、) for (j=1; j=i; j+) Console.Write(“012, -2 “, j, i, i*j); / 输出完一行后换行。 Console.WriteLine(); ,例5-12:利用for循环嵌套语句,求1!+2!+3!+.+10!的和。,using System; class MultiSum static void Main( ) long s=0, m=1; for (int i=1; i=10; i+) m=1; for (int j=1;j=i; j+) m*=j; s=s+m; Console.WriteLine(1!+2!+3!+.+10!=0 , s); ,

11、结果:,5.5 foreach 循环结构,foreach循环一般用于遍历整个集合或数组,foreach (元素类型 变量名 in 集合或者数组名) / 语句 ,输入一个字符串,输出其中的每个字符,关键代码分析,static void Main(string args) Console.WriteLine(请输入一个字符串:); / 输入提示 / 从控制台读入字符串 string line = Console.ReadLine(); / 循环输出字符串中的字符 foreach (char c in line) Console.WriteLine(c); Console.ReadLine(); ,

12、依次循环字符串中的每个字符,5.6 二重循环进阶,某次程序大赛,3个班级各4名学员参赛,计算每个班参赛学员的平均分,共3个班级,循环3次计算每个班的平均分 每班4名学员,循环4次累加总分,需要使用二重循环实现,for、while、do-while、foreach 语句可以相互嵌套,关键代码,/ 外层循环控制逐个计算每个班级的平均分 for (i = 0; i 3; i+) sum = 0; / 总分计数清零 Console.WriteLine(n请输入第0个班的成绩,i+1); / 内层循环计算每个班级的总分 for (j = 0; j 4; j+) Console.Write(第0个学员的成

13、绩:, j+1); score= int.Parse(Console.ReadLine(); sum = sum + score; average = sum / 4; Console.WriteLine(第0个班的平均分为:1分,i+1,average); ,内层循环结束后,才执行外层循环的语句,二重循环进阶,用 * 打印一个直角三角形图案,二重循环:外层控制行数,内层打印每行的 * 图形特点:每行的 * 个数与行数相等,关键代码,int rows = 5; / 打印的行数 int i, j; / 循环变量 / 外层循环控制打印的行数 for (i = 1; i = rows; i+) /

14、内层循环控制每行打印*的个数 for (j = 1; j = i; j+) Console.Write(*); Console.Write(n); ,内层循环的结束条件与外层循环变量有关,5.7 break和continue语句,在C#中可以用跳转语句来改变程序的执行顺序。在程序中采用跳转语句,可以避免可能出现的死循环。 C#中的跳转语句有break语句、continue语句、goto语句和return语句等。 1. break语句 使用break语句时,将结束循环,执行循环的后续语句。 2. continue语句 continue语句作用是结束本次循环,跳过该语句之后的循环语句,返回到循环的

15、起始处,并根据循环条件决定是否执行下一次循环。,分别调试如下程序,理解break与continue的跳转。 课本实例4-14 课本实例4-15,练 习,流程控制进阶,在循环结构中, continue 和 break怎样跳转?,for() continue; ,for() break; ,跳出循环结构,跳到下次循环,在循环中会怎样呢?,【例3-9】利用break与continue控制输出130的数值。,流程控制进阶continue,下面红色框中代码的作用是什么?,int count = 0; for (i = 0; i 3; i+) / 提示输入成绩 for (j = 0; j 4; j+) C

16、onsole.Write(第0个学员的成绩:, j + 1); score = int.Parse(Console.ReadLine(); sum = sum + score; if (score 85) continue; count+; / 计算平均分并输出 ,continue 跳出本次循环,继续下一次循环,统计成绩在85分以上的学员人数,流程控制进阶break,5个专卖店促销,每个专卖店每人限购3件衣服,可以随时选择离开,离店时要结账,for(i=0;i5;i+) / 每次进一个专卖店 for(j=0;j3;j+) / 每个店限购3件 if(离开这家店) break; 选购一件衣服 结账

17、 ,关键代码回顾,for (i = 0; i 5; i+) /外层循环控制依次进入下一个专卖店 Console.WriteLine(n欢迎光临第0家专卖店,i+1); for (j = 0; j 3; j+) / 内层循环一次买一件衣服 Console.Write(要离开吗?y/n); choice = Console.ReadLine(); if (choice = y) / 如果离开,就跳出,结账,进入下一个店 break; Console.WriteLine(买了一件衣服); count+; / 买一件衣服 Console.WriteLine(离店结账); ,break 跳出内层循环,c

18、hoice = y,流程控制进阶,for() for() continue; ,for() for() break; ,跳出本层循环, 继续执行外层循环,跳出本次循环,继续下一次循环,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();/ 换行 Console.ReadLine(); ,总结,C# 中的循环结构有哪些? break 和 continue 用在内层循环时跳转到哪里? 二重循环实现冒泡排序,循环的中止条件是什么?,【例5-16】 一张单据上有一个5位数的号码为6*42,其中百位数和千位数已模糊不清,但知道该数能被57和67除尽。设计一个算法,找出该单据所有可能的号码。,循环结构项目一,循环结构项目二:百钱买百鸡,【实例题目5-17】 我国古代数学家在算经中出了一道题:“鸡翁一,值钱五;鸡母一,值钱三;鸡

温馨提示

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

评论

0/150

提交评论