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位置上的那個字符


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM