A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 伪善者。 中级黑马   /  2014-3-24 21:21  /  1155 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 伪善者。 于 2014-3-24 22:43 编辑

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

           *
          * *
         * * *
        * * * *
       * * * * *
        * * * *
         * * *
          * *
           *

4 个回复

倒序浏览
  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.         }
复制代码

注意观察规律,再多试几次,调整一下,就可以了。
回复 使用道具 举报
        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-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.             }
复制代码

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马