通过for循环打印各种星阵(三角,菱形,空心系列)

   在很多的笔试题中都会出现打印星阵的题目(简单的平行四边形,三角形,菱形到复杂的空心系列),其实考察的就是对循环的灵活应用

和简单的逻辑。虽然这个题目真的让我很讨厌。

   刚开始学习的时候使用的都是最基本的for嵌套,每次只打印一个*号,但是后来通过同学的指点我发现在C#中完全可以通过使用String的

构造函数进行替换这样就会减少对for的嵌套(”编程的目的就是为了让程序员偷懒“这句话是正确的)。虽然这种方法可能会被一些大牛所

鄙视,但这种方法写起来还是比较容易理解的。在下面的代码中,我们通过String的构造函数(char c,int count)可以创建出指定长度相同字符字符串。 

Sain's Code
  1        /// <summary>
  2         /// 平行四边形
  3         /// </summary>
  4         /// <param name="row">行数</param>
  5         /// <param name="col">每行显示多少个*号</param>
  6         static void Parallelogram(int row,int col)
  7         {
  8             for (int i = 1; i <= row; i++)
  9             {
 10                 Console.WriteLine(string.Format("{0}{1}",new string(' ',row-                 i),new string('*',col)));
 11             }
 12         }
 13         
 14         
 15         /// <summary>
 16         /// 正三角形
 17         /// </summary>
 18         /// <param name="row"></param>
 19         static void Triangle(int row)
 20         {
 21             for (int i = 1; i < row; i++)
 22             {
 23                 Console.WriteLine(string.Format("{0}{1}",new string(' ',row-                 i),new string('*',i*2-1)));
 24                 
 25             }
 26         }
 27 
 28         /// <summary>
 29         /// 倒三角形
 30         /// </summary>
 31         /// <param name="row"></param>
 32         static void ReverseTriangle(int row)
 33         {
 34             for (int i = 1; i < row; i++)
 35             {
 36                 Console.WriteLine(new string(' ', i) + new string   ('*',  (row - i) 
 37                 *2 - 1));
 38             }
 39         }
 40 
 41        
 42 
 43         /// <summary>
 44         /// 梯形
 45         /// </summary>
 46         /// <param name="row"></param>
 47         static void Trapezoid(int row)
 48         {
 49             for (int i = 2; i < row; i++)
 50             {
 51                 Console.WriteLine( new string('*', i * 2 - 1));
 52             }
 53         }
 54 
 55         /// <summary>
 56         /// 菱形
 57         /// </summary>
 58         /// <param name="row"></param>
 59         static void Diamond(int row)
 60         {
 61             
 62             for (int i = 1; i <= row; i++)
 63             {
 64                 Console.WriteLine(string.Format("{0}{1}",new string(' ',row-                  i),new string('*',i*2-1)));
 65             }
 66                 row -= 1;
 67             for (int i = 1; i <row; i++)
 68             {
 69                 Console.WriteLine(string.Format("{0}{1}", new string(' ',     
 70                 i+1), new string('*', ((row - i) * 2) - 1)));
 71             }
 72         
 73         }
 74 
 75         /// <summary>
 76         /// 空心三角形
 77         /// </summary>
 78         /// <param name="row"></param>
 79         static void EmptyTriangle(int row)
 80         {
 81             for (int i = 1; i <= row; i++)
 82             {
 83                 if (i == 1 || i == row)
 84                 {
 85                     Console.WriteLine("{0}{1}",new string(' ',row-i),new string
 86                      ('*',i*2-1));
 87                 }
 88                 else
 89                 {
 90                     Console.WriteLine("{0}*{1}*", new string(' ', row - i), new 
 91                     string(' ', (i * 2 - 1)-2));
 92                 }
 93             }
 94         }
 95 
 96         /// <summary>
 97         /// 空心菱形
 98         /// </summary>
 99         /// <param name="row"></param>
100         static void EmptyDiamond(int row)
101         {
102             for (int i = 1; i <= row; i++)
103             {
104                 if (i == 1 )
105                 {
106                     Console.WriteLine(string.Format("{0}{1}", new string(' ', 
107                     row - i), new string('*', i * 2 - 1)));
108                 }
109                 else
110                 {
111                     Console.WriteLine(string.Format("{0}*{1}*",new string
112                      (' ',row-i),new string(' ',(i*2-1)-2)));
113                 }
114             }
115             row-=1;
116             for (int j = 1; j <= row; j++)
117             {
118                 if (j == row)
119                 {
120                     Console.WriteLine(string.Format("{0}{1}", new string(' ', j), 
121                      new string('*', 1)));
122                 }
123                 else
124                 {
125                
126                     Console.WriteLine(string.Format("{0}*{1}*",new string
127                      (' ',j),new string(' ',((row-j)*2)-1)));
128                 }
129             }
130         }
131     

 

posted @ 2013-01-04 21:34  Sain  阅读(1319)  评论(0)    收藏  举报