黑马程序员技术交流社区

标题: 打印对齐~ [打印本页]

作者: 万大述    时间: 2013-6-27 13:43
标题: 打印对齐~
杨辉三角如何对齐成下图(下面代码给对歪了):
                 1
                      1      1
                   1     2      1
                1    3      3     1
           1      4     6    4       1
        1     5     10   10     5     1

本人代码:
static void Main(string[] args)
        {
            int count=0;
            bool flag = false;
            count = ReadInt();
            Console.WriteLine(".....................................................");
            Console.WriteLine();
            int [,] yanghui=new int[count,count];  //定义一个二维数组
            int i=0,j=0;
            for (i = 0; i < count; i++) //给杨辉三角赋值
            {
                yanghui[i, 0] = yanghui[i, i] = 1;
                for (j = 1; j < i; j++)
                {
                    yanghui[i, j] = yanghui[i - 1, j - 1] + yanghui[i - 1, j];
                }
            }
            if (count % 2 == 1) //输入偶数和奇数是分开打印(输入为奇数时的输出)
            {
                for (i = 0; i < count; i++)
                {
                    for (int x = (count - i - 1) / 2; x > 0; x--) //补空格
                    {
                        Console.Write("     ");
                    }
                    if ((i % 2) == 1) //奇数行输出
                    {
                        Console.Write("  "); //补空格
                        for (j = 0; j < (i + 1) / 2 - 1; j++) //输出右半边数
                        {
                            Console.Write((yanghui[i, j]));                        }
                        Console.Write((yanghui[i, j]));
                        Console.Write(" "); //补空格
                        int x = ++j;
                        for (j = x; j <= i; j++) //输出右半边数
                        {
                            Console.Write((yanghui[i, j]));
                        }   
                    }
                    else  //输出偶数行
                    {
                        for (j = 0; j <= i; j++)
                        {
                            Console.Write((yanghui[i, j]));
                        }
                    }
                    Console.WriteLine(); //换行
                }
            }
            else  //输入为偶数时的输出
            {
                for (i = 0; i < count; i++)
                {
                    for (int x = (count - i - 1) / 2; x > 0; x--)
                    {
                        Console.Write("     ");
                    }
                    if ((i % 2) == 1)
                    {
                        for (j = 0; j < (i + 1) / 2 - 1; j++)
                        {
                            Console.Write((yanghui[i, j]));
                        }
                        Console.Write((yanghui[i, j]));
                        Console.Write(" ");
                        int x = ++j;
                        for (j = x; j <= i; j++)
                        {
                            Console.Write((yanghui[i, j]));
                        }
                    }
                    else
                    {
                        Console.Write("   ");
                        for (j = 0; j <= i; j++)
                        {
                            Console.Write((yanghui[i, j]));
                        }
                    }
                    Console.WriteLine();
                }
            }
            Console.ReadKey();
        }
        static int ReadInt()
        {
            int number = 0;
            do
            {
                try
                {
                    Console.WriteLine("请输入一个正整数");
                    number = Convert.ToInt32(Console.ReadLine());
                    if (number > 0)   //确保输入为正整数                 {
                        break;
                    }
                    else  
                    {
                        continue;
                    }
                }
                catch  
                {
                    continue;
                }
            } while (true);
            return number;        }



作者: 万琪    时间: 2013-6-27 14:13
用制表符  \t
作者: 庞登升    时间: 2013-6-27 14:21
\t就可以了呢。。。
作者: 彭家贰小姐    时间: 2013-6-27 16:40
本帖最后由 彭家贰小姐 于 2013-6-27 16:43 编辑

我试着用楼主的代码加制表符来控制,但不好弄,所以优化了代码
  1. using System;

  2. namespace test14
  3. {
  4. internal class Program
  5. {
  6. //杨辉三角
  7. private static void Main(string[] args)
  8. {
  9. var p = new Program();
  10. Console.WriteLine("请输入一个正整数:");
  11. var strName = Console.ReadLine();
  12. int value = Convert.ToInt16(strName);
  13. p.Yanghui(value);
  14. Console.ReadKey();
  15. }
  16. public void Yanghui(int value)
  17. {
  18. if (value < 3)
  19. {
  20. Console.WriteLine("请重新输入数组大于3的值!");
  21. }
  22. else
  23. {
  24. var arry = new int[value, value];
  25. Console.WriteLine("杨辉三角形:");
  26. for (var i = 0; i < value; i++)
  27. {
  28. var str = "";
  29. str = str.PadLeft(value - i,'\t');
  30. Console.Write(str);
  31. for (var j = 0; j <= i; j++)
  32. {
  33. if (i == j || j == 0)
  34. {
  35. arry[i, j] = 1;
  36. }
  37. else
  38. {
  39. arry[i, j] = arry[i - 1, j - 1] + arry[i - 1, j];
  40. }
  41. Console.Write(arry[i, j] + "\t\t");
  42. }
  43. Console.WriteLine();
  44. }
  45. }
  46. }
  47. }
  48. }
复制代码

作者: 道法乾坤110    时间: 2013-6-27 18:36
我觉得,大家写代码的时候,是不是应该写上注释,要不然向我们这些新手,看不懂呀,本来就不怎么会,如果连个注释也没有,看蒙了。




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