黑马程序员技术交流社区

标题: 菱形问题 [打印本页]

作者: 伪善者。    时间: 2014-3-24 21:21
标题: 菱形问题
本帖最后由 伪善者。 于 2014-3-24 22:43 编辑

如何生成一个每间隔一个空格一个*的菱形呢?
例如

           *
          * *
         * * *
        * * * *
       * * * * *
        * * * *
         * * *
          * *
           *
作者: 鬼鬼    时间: 2014-3-24 21:46
  1.         static void printStar(int n)
  2.         {
  3.             //上三角
  4.             for (int i = 0; i < n; ++i)
  5.             {
  6.                 for (int j = 0; j < n - i; ++j)
  7.                 {
  8.                     Console.Write(' ');
  9.                 }
  10.                 for (int k = 0; k < i+1; ++k)
  11.                 {
  12.                     Console.Write('*');
  13.                     Console.Write(' ');
  14.                 }
  15.                 Console.WriteLine();
  16.             }

  17.             //下三角
  18.             for (int i = 0; i < n - 1; ++i)
  19.             {
  20.                 for (int j = 0; j < i + 2; ++j)
  21.                 {
  22.                     Console.Write(' ');
  23.                 }
  24.                 for (int k = 0; k <= n - i - 2; ++k)
  25.                 {
  26.                     Console.Write('*');
  27.                     Console.Write(' ');
  28.                 }
  29.                 Console.WriteLine();
  30.             }
  31.         }
复制代码

注意观察规律,再多试几次,调整一下,就可以了。
作者: luoyilan222    时间: 2014-3-24 22:30
        public static void main(String[] args) {
                int row = 10;
                row = (row / 2) * 2 + 1;
                for (int i = 0; i < row; i++) {
                        if (row / 2 + 1 > i) {
                                for (int j = 0; j < row - i; j++) {
                                        System.out.print(" ");
                                }
                                for (int j = 0; j < i + 1; j++) {
                                        System.out.print("* ");
                                }
                        } else {
                                for (int j = 0; j < i + 1; j++) {
                                        System.out.print(" ");
                                }
                                for (int j = 0; j < row - i; j++) {
                                        System.out.print("* ");
                                }
                        }
                        System.out.println();
                }
        }
           *
          * *
         * * *
        * * * *
       * * * * *
      * * * * * *
       * * * * *
        * * * *
         * * *
          * *
           *

作者: 伪善者。    时间: 2014-3-24 22:43
谢谢两位的帮助
作者: 百川    时间: 2014-3-25 11:42
本帖最后由 百川 于 2014-3-25 12:02 编辑

输出菱形的简单算法:
  1. for (int i = 1; i < 2 * n; i++)
  2.             {
  3.                 for (int j = 1; j < 2 * n; j++)
  4.                 {
  5.                     if (Math.Abs(j - n) + Math.Abs(i - n) >= n)
  6.                     {
  7.                         Console.Write(" ");
  8.                     }
  9.                     else if ((i + j) % 2 == 0)
  10.                     {
  11.                         Console.Write("*");
  12.                     }
  13.                     else
  14.                     {
  15.                         Console.Write(" ");
  16.                     }
  17.                 }
  18.                 Console.WriteLine();
  19.             }
复制代码






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2