C#之打印乘法表

设计说明

我们的目的是打印出一个用 “*” 符号填满的等腰三角形,就像下面这样

金沙官网线上 1

金沙官网线上 2

由图可知:

用星星填满的三角形

1.我们需要打印出九行;

乍一看起来,挺简单的,但是上手之后,发现各种问题,怎么保证每行的 “*” 对称居中呢?

2.每行中最大列数等于行数;

要解决这个问题,首先来让我们把问题分解一下,以三角形的高为轴,把三角形劈成两半,就像下面这样

代码实现

金沙官网线上 3

        public void Display1()
        {
            Console.WriteLine("乘法表:");
            for (int i = 1; i <= 9; i++) // 循环输出乘法表行数
            {
                for (int j = 1; j <= i; j++) // 循环输出乘法表列数
                {
                    Console.Write(i + "*" + j + "=" + i * j + "  ");

                }
                Console.WriteLine();

            }
            Console.WriteLine();
        }    

劈成两半后形成的直角三角形

金沙官网线上, 

金沙官网线上 4

效果图

劈成两半后形成的直角三角形

金沙官网线上 5

这样看起来就简单多了,只要我们先打印出两个对称的直角三角形,然后再拼接完整就可以了。

如果具有强迫症(例如:我^_^)就会发现在第三行和第四行与下面的行并未对齐;

下面的这个三角形看起来实现非常简单,我脑海中第一个冒出的解决方法是定义一个String字符串,然后每次循环在字符串末尾追加一个 “*” ,我甚至还把代码写了出来。

看效果图我们会发现,只需要在3*2与4*2的结果后多打印一个空格,乘法表都将对齐;

但是等到写上面的直角三角形时,我傻了,这个怎么用String实现啊,不行,想了一会之后我放弃了。

代码实现

后来我选择了用数组,这样只需找出矩阵的对角线,然后在对角线上下方根据情况填充 “*” 就可以了。

        public void Display2()
        {
            Console.WriteLine("乘法表:");
            for (int i = 1; i <= 9; i++) // 循环输出乘法表左边数值
            {
                    for (int j = 1; j <= i; j++) // 循环输出乘法表右边数值
                    {
                    if ((i == 3 || i == 4) && j == 2) // 将乘法表排序整齐
                    {
                        Console.Write(i + "*" + j + "=" + i * j + "   ");
                    }
                    else {
                        Console.Write(i + "*" + j + "=" + i * j + "  ");
                    }

                    }
                    Console.WriteLine();

            }
        }    

code开始。

本文由金沙官网线上发布于编程,转载请注明出处:C#之打印乘法表

您可能还会对下面的文章感兴趣: