列印星號(*)三角形(C# Linq實現)的小例子

來源:互聯網
上載者:User

標籤:style   blog   http   io   ar   color   使用   sp   for   

  以前看面試寶典(C#)的時候,記得有一道題是列印三角形的。比如:

 

記得那時候剛學C#花了我好長時間才做出來,那是用的方法沒有使用到linq,現在使用Linq重新做一次。以下是代碼:

 1             int empty = 10; 2             for (int i = 1; i <= empty; i++) 3             { 4                 foreach (var c in Enumerable.Repeat(" ", empty - i)) 5                 { 6                     Console.Write(c); 7                 } 8                 foreach (var s in Enumerable.Repeat("* ", i)) 9                 {10                     Console.Write(s);11                 }12                 Console.WriteLine();13             }14             Console.WriteLine("Press enter to exit");15             Console.ReadKey();

 

解題思路:

觀察看出,三角行的左側,可以看成一個三角形,如的紅色三角形所示:

可以把紅色三角形,看成是字串“ ”空格組成的倒三角形。:一個方塊代表一個“ ”字串。

代碼也可以寫成函數式編程的風格(書上稱這種文法的是方法文法):

 1             int empty = 10;                             //empty是*的個數 2             for (int i = 1; i <= empty; i++) 3             { 4                 Enumerable.                            //整體作用:輸出空格三角型 5                     Repeat(" ", empty - i).ToList().   //Repeat(TResult,int count)函數,控制每行的空格數。 6                     ForEach(Console.Write);            //ForEach(Action<T> action)函數,對每個元素都執行action函數,即每個元素都 7                                                        //執行Console.Write函數 8  9                 Enumerable.Repeat("* ", i).ToList().ForEach(Console.Write); //作用輸出*號三角形10 11                 Console.WriteLine();                   //控制換行12             }

 最近又看了看Linq編程,看到Repeat操作符就想起以前的程式,隨手寫了一個,加深印象。

 

重構代碼:

提取參數empty和“*”和行數,使次函數不僅可以輸出*三角形,還可以輸出其他類型的三角形。比如+號三角形等。提取的函數為:

 1        //列印*三角形 2         private static void PrintTriangle(string typeChar,int count) 3         { 4             int empty = count; 5             for (int i = 1; i <= empty; i++) 6             { 7                 Enumerable.Repeat(" ", empty - i).ToList().ForEach(Console.Write);             8                 Enumerable.Repeat(typeChar+" ", i).ToList().ForEach(Console.Write);  9                 Console.WriteLine();    //控制換行10             }11         }

 

 PrintTriangle("*",10);函數調用,輸出與三角形相同。

 PrintTriangle("+",10);PrintTriangle("0",5);輸出所示:

 

列印星號(*)三角形(C# Linq實現)的小例子

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.