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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© FrancisTan 中级黑马   /  2014-7-4 18:21  /  870 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 FrancisTan 于 2014-7-7 17:40 编辑
      题目要求从键盘输入一个奇数,然后用“*”打印出所输入数字为行数的菱形。       如输入5,则输出:
                                      *
                                    ***
                                   *****         
                                    ***
                                     *

这个题目据说是很经典的一个练习for循环的习题,非常惭愧,不才用了一下午的时间才想出来。
在这里贴出自己的代码:
  1. Console.WriteLine("请输入一个奇数(1~20):");
  2. int input = Convert.ToInt32(Console.ReadLine());

  3. //下面分两部分输入结果
  4. //第一部分 输出前input/2-1行
  5. for (int i = 0; i < input/2 -1; i++)
  6. {
  7.      //首先输出每行前面的空格
  8.      for (int j = 0; j < input/2; j++)
  9.           Console.Write(" ");

  10.      //然后输出每行的星号
  11.      for (int k = 0; k < 2*i + 1; k++)
  12.           Console.Write("*");

  13.      //一行结束 换行
  14.      Console.WriteLine();
  15. }

  16. //第二部分 输出后input/2+1行
  17. for (int i = 0; i < input/2 + 1; i++)
  18. {
  19.      for (int j = 0; j < i; j++)
  20.           Console.Write(" ");

  21.      //用input减去每行输出的空格数,剩下的就是该行应该输出的星号数
  22.      for (int k = 0; k < input -2*i; k++)
  23.           Console.Write("*");

  24.      Console.WriteLine();
  25. }
复制代码
       上述代码我自己都感觉挺乱的,看着也费事,但苦思更好的算法无果,还请各位指教!


0 个回复

您需要登录后才可以回帖 登录 | 加入黑马