C# 循环break 和continue

循环

day05      2018.01.08     周一

-------------------------------------------------------

 

  关键字

  双重for

上午

  数组

    一维数组

    二维数组

   

  方法

 

  OOP 4-5

 

  string

 

  内存

 

  集合IO

 

--------------------------------------------------------

 

  中止循环

 

  1. break

     1) swich..case

 

     2) break : 中止循环

 

     3)break 是如何中止的?

        循环执行过程中,遇到 break 语句时,中止循环

        循环下面的其它语句。

 

     4) break 会和 if 语句配合使用;

     5)  while ,do while ,for中都可以

 

   练习1:

   int x = 2;

   do

   { 

      x++;//x=x+1;  //3    4 

      //如果x是偶数,中止循环

      if( x % 2 == 0 )

      {

          //遇到break会执行循环结束大括号下面的语句

          break ;

      }

      Console.WriteLine( x );//3

 

   }while ( x > 2 && x <= 4 );

  

   Console.WriteLine( x );  

 

  答案:

  3

  4

 

  代码详见:DAY05_02_Break_Continue ---BreakDemo1.cs

 

  2)观察下列代码的功能是什么?

 

  int sum = 0 ; //求和

 

  for ( int i = 0 ; i <= 100 ; i++ )

  {

      if( sum > 2000 ) 

      {

          Console.WriteLine( i );

          break ;

      }   

   分析得出,i=63时,sum+63=2016,然后往下遇到 for的结束

   会返回到i++,i变成了64,然后判断满足<=100,执行循环体

   当再次判断sum与2000关系时,2016>2000,所以执行if代码

   打印i的值为64,遇到 break 跳出循环。

      sum += i ; //累加

  }

 

  Console.WriteLine( "for循环执行结束" );

 

  功能: 求0到100以内所有数字的和,当和大于2000

  时,提前结束循环了(提前中止循环)

 

  代码详见:DAY05_02_Break_Continue --- LianXi2.cs      

 

 2) continue 中止循环

 

    coninue用于结束本次循环,继续执行下一次循环。

    含义是:

  遇到 continue 时,continue下面的语句不再执行,

    会执行下一次循环。

 

  总结:关于 break 和 continue

  1) 相同点: 用于中止循环

  2)不同点:

     循环中一遇到 break,整个循环都中止了

     循环中遇到 continue,只是表示一轮的结束,

     它还会继续下一次循环,只是continue下面的其它

     语句不再执行。

 

  3)使用场景:

     1) break 一般是和总和或总乘积变量做比较

         if ( sum > 2000 )

             break ;

     2)  contiue 更多的是对一组数据进行判断时

         这组数组中某一个或几个不满足条件时,做

         其它处理。然后继续遍历剩下的其它数据。

         比如:打印50以内所有的偶数.循环体中可

         使用if语句进行判断,如果是奇数,直接cotinue

         进行下一个数字比较。

 

  练习: 打印50以内所有的偶数.

         要求:使用 continue 关键字实现。

        

  代码详见:DAY05_02_Break_Continue --- LianXi1.cs

 

   

  练习:

  打印10以内的所有数字,但是3 和 8 两个数字不会打印。

  要求:使用 continue 关键字实现。

  使用for循环完成 或 使用 while 循环完成。

  

 

 

-------------------------------------------------------

 

 循环嵌套

 

 1. 循环嵌套含义?

    在一个 循环中包含另外一个循环。

    外层循环,内层循环

 

    //外层循环,由i构成

    for (int i = 0 ; )

    {

        //内层循环,由j 构成

        for( int j = 0 ; )

        {

        }

 

    }

 2. 循环嵌套的层数?

    任意层,常用的嵌套层,2层

 

 3. 哪种循环嵌套哪种?

    三种可以任意嵌套

 

 4. 双重 for 循环

 

    1.数组排序

 

    2.打印规律性图形

      for ( int i = 0 ; i< ??? ; i++ )

      {

          for( int j = 0 ; j < ??? ; j++ )

          {

              Console.Write("*");

          }

          Console.WriteLine();

      }

 

  练习:九九乘法表

 

 

 

 

    *******

    *******

    *******

    *******

 

    *

    **

    ***

    ****

    *****

    ******

    *******

  

    *********

     ********

      *******

       ******

        *****

         ****

          ***

           **

            *

 

 

    *

   ***

  *****

   ***

    *

 

 

   

 

     

     

 

    for  (  ) 

    {

        for ()

        {

        }

    }

 中午作业1:断点测试 LianXi2.cs中Test2()和Test3()

      方法的执行,分析while循环中continue跳到哪里?

 

 中午作业2:打印以下图形 

   1)********** 

 

    for( int i = 0 ; i < 10 ; i++ )

    {

        Console.Write("*");//在一行上打印

    }

    Console.WriteLine(); //换行  

 

 

   2)

   *******   

   *******    

   *******

   *******

   *******

 

 

  写法:

  外层for循环,控制行数(一共的行数)

  for ( int i = 0 ;  i < 5; i++ )

  {

     //内层for循环,控制列数(每一行打印的*数量)

     for ( int j = 0 ; j < 7 ; j++ )

     {

          Console.Write("*");

     }

     Console.WriteLine();//换行

  }

---------------------------------------------------------

 

 说明:总结的打印多种图形的类在:PrintShape.cs 类中

 

  --------------------------------------------------------

 

  补充:

  在嵌套的循环中,也只可以使用 break 和 continue ,

  还是跳出循环,但跳出的是所在的循环,并不能直接

  跳出最外层的循环.

 

  例如:

  int  sum  =  0  ;

  for ( int i = 1 ; i <= 5  ; i++ )

  {

      for( int j = 1 ; j < 10 ; j++ )

      {

          if(  j % 2 == 0  )

          {

              break ;              

          }

          Console.Write( j + "\t");         

      }

      Console.WriteLine();

      sum += i ;  

  }

  Console.WriteLine( sum );     

  说明:总结的打印多种图形的类在:PrintShape.cs 类中

  

  补充2:

  死循环

下午

循环的使用场景:

 

  1. 如果遇到至少需要执行一次的需求或功能,选择do while

  2. 如果需要或完成的功能,可以翻译为"当满足...条件,做

     ...事情时",要使用while循环完成;

     也可以理解为,不能明确知道循环次数时,只能使用while

    

  3. 使用for循环完成的功能,大部分都使用while替代,

     但是while完成的功能,for并不一定能完成。

     for对一组规律数据操作:求和,求阶乘,求指定范围

     内的数据

     如:求1+2+3+4+...100的和

     如:求100以内所有偶数

     如:求1000以内所有水仙花数(三位 各位的三次方相加等于数本身)

         1000以内所有的水仙花数:153  370  371  407         

四叶玫瑰

    五角星数

    ...

     如:求100以内所有质数(素数)

     ............

-------------------------------------------------------- 

  数组

 

  1. 数组概念

     数组是内存中一块区域,

     这块区域可以存储多个同一类型的数据

     这些数据都拥有同样的名字

     通过每个数据的下标标识来区分(0,1,2,3,4,....)

     这块区域是连续。

   

 

  2. 数组的定义

     基本语法:[]

 

     数据类型[]   数组名;   

     如:数据类型可以是13种值类型,自定义定义的类型

     如:定义一个int类型的数组,年龄数据ages

      int[]   ages ;

 

     如:float类型,存储多个小球移动速度 moveSpeeds

     float[]   moveSpeeds ;

 

 

  3. 数组的初始化(赋值)

     int[]   ages ; //定义

     ages = { 21,23,25,20 };

    

    静态:int[] ages =  {  21, 23 , 25 , 20  };

         1) { }

         2) 只能一条语句

         3)何时使用静态初始化?

            明确已知数组中存储元素的个数,且明确

            已知每个元素的值  

  

   

    动态:new 

      基本语法 :

      数据类型[]  数组名 ;

      数组名  = new   数组类型[60];

 

  或:数据类型[]  数组名 = new 数组类型[60]

 

    如: 使用 动态初始化来构建一个数组,nums

     存储100个float类型的数据;

       

      float[]   nums  ;

      nums = new  float[20];

 

   或: float[]  nums = new   float[20];

 

   说明:

   1) new 用于动态初始化

   2) 何时使用动态初始化?

       已知存储了多个数组,但是不明确知道每个数据

       的值是多少?

   3) 数组动态初始化,每个元素都是有默认值的:

       整数,0

       小数,0.0

       布尔, false

       .....

 

4. 数组元素,数组长度,数组中的元素的值默认

     基本语法:

 

     数组名[下标标识]

 

     注:下标标识是一个整数,从0开始,1,2,3,4,5,

     如:int[]    ages  = { 21, 23, 25 };

         第一个元素: ages[0]

         第二个元素: ages[1]

                      Console.WritLine( ages[1]);

 

练习

  1) 定义一个表示角色年龄的数组,类型int,roleAges ,

      存储的角色的年龄值:45,67,91,89 ,10    

      使用静态初始化方式来完成。

 

  2) 定义一个表示角色身高的数组,数组的类型 float

      数组的名字 roleHeights ,存储 5个角色的身高,

     

      要求:使用动态初始化完成。

     

  3) roleHeights 中的每个元素及元素的值 

 

-------------------------------------------------------

练习2:理解数组元素,数组元素的值,下标

       

  int[]  numbers  =  new   int[3] ;

  1) 数组名为:  numbers

  2)数组长度为:3

  3)数组的类型为:int

  4)数组中有几个元素:3个

  5)数组中的第二个元素如何表示:numbers[1]

 

  6)numbers[1] 这个元素来说,这个元素的下标是多少?1

     解释:[]中写的具体数字就是下标值,下标值从0开始

     第一个元素的下标为0,最后一个元素的下标为:

     数组长度-1,如果长度为3,减-1,为 2

 

   

  7)如果要打印数组中最后一个元素的值和第一个元素中存储

     的具体数字,如何表示?

     Console.WriteLine( numbers[0] );//0

     Console.WriteLine( numbers[2] ) ;//0 

    

 

  5. 数组的遍历(挨个查看每个具体值)

     有至少3种方法:
     方法1:直接利用数组元素的下标

            ages[0]

            ages[1]

            .....

            如果想查看结果,可以将其放到打印语句中

            但是这种方法重载代码太多,太繁琐

 

     方法2:使用标准的for循环

            for ( int i = 0 ;i < 数组名.Length ; i++)

            {

                   Console.WriteLine( ages[i] )

            }

 

     方法3:当然,也可以使用while,do while,只是相比

            不如for循环结构简单,请尝试使用while或

            do while 来完成。

     方法4:foreach 循环

            foreach(数组类型  变量名  in  数组名)

            {

                  Console.WriteLine( 变量名 );

            }

 

  6. 数组(复制,插入,删除,.....)

 

  day05作业

 

  1.猜数字游戏

  首先会由程序自动生成指定区间范围内任意一个随机数,

  [0, 10) 之间的某个数字,然后由控制台提示用户通过

  控制台输入0-10范围内用户自己猜测的数字:

  “请输入您猜测的数字(范围在0-10之间):”,

  然后由程序自动根据用户猜测的数字判断猜测结果:

  如果输入的数字大于系统数字,控制台则提示:“您猜测的数字偏小了...”;

  如果输入的数字小于系统数字,控制台则提示:“您猜测的数字偏大了”;

  否则,输入的数字和系统输入应该正好相等,控制台提示“太棒了,恭喜您猜对了...”

  需要注意的是,如果第一次没有猜对了,就应该在输出猜测结果后,

  让用户继续进行下一次输入数字猜测数字的操作,

  并且对猜测结果进行继续判断;

  如果第二次还是没有猜,就应该继续让用户输入数据,

  然后再由系统判断,如此一来,会发现程序现在有许多需要反复执行的代码

  自然,就需要使用循环语句来完成。

  同样,用户在猜测过程中,如果想中止循环,也可以.当用户输入-1时,表示终止循环.

 

  另外,打印最后结果时,还要打印出猜测的次数.

 

 2.(必做题)

   键盘输入5个学生的年龄,然后求年龄总和,

   平均年龄。

   要求,动态初始化数组表示学生年龄的数组。

 

 

 

3.网站验证码 (选做题)

 现有一组字符,要求从这组字符中随机取出4位作为网站  验证码。

 注:这一组字符串是由 26个大写字母,26个小写字母10个数字构成的char类型的数组,数组名为codes。

 要求:从codes数组中随机取出4位.作为网站验证码,要求 这4位验证码放在数组中

 

 考查: char 类型数组的定义及初始化、随机数的操作.  

 提示:声明并初始化数组

产生一个随机数,随机数范围,int index = new Random().Next (codes.Length)

        for循环遍历数组,取出index位置上的那个字符

posted @ 2019-09-10 19:43  Winward_King  阅读(20365)  评论(0编辑  收藏  举报