使用for循环打印三角形的星形

时间:2015-04-14 14:00:58

标签: c# for-loop

我需要在C#

中打印类似这种风格的东西
*****
 ***
  *

我怎么能这样做?

到目前为止,我得到了以下代码,但它以另一种方式打印并减少了一颗星。

int number = 5;
int i, j, k;
for (i = 1; i <= number; i++)
{
    for (j = 1; j <= number - i; j++)
    {                    
        Console.Write("");
    }

    for (k = 1; k <= i; k++)
    {
        Console.Write("*");
    }

    Console.WriteLine("");
}

5 个答案:

答案 0 :(得分:6)

请尝试以下代码:

int number = 5;

for (int i = number; i >= 1; i -= 2)
{
    string spaces = new String(' ', (number - i) / 2);
    Console.WriteLine(spaces + new String('*', i) + spaces);
}

主要思想是使用String(char, count)构造函数消除内部循环。

答案 1 :(得分:0)

如果您想从用户那里获取输入,请尝试以下操作:

int number;
int i, j, k;
if (int.TryParse(Console.ReadLine(), out number))
{
    for (i = 0; i < number; i++)
    {
        int numberOfSpaces = i;
        int numberOfStars = (number * 2 - 1) - (2 * numberOfSpaces);

        for (j = 1; j <= numberOfSpaces; j++)
        {
            Console.Write(" ");
        }

        for (k = 1; k <= numberOfStars; k++)
        {
            Console.Write("*");
        }

        Console.WriteLine("");
    }
}
else
{
    Console.WriteLine("No number entered.");
}

Console.Read();

只用一个循环就可以(并且更好)做到这一点,但是你的方法也可以,并且循环可能是你的方式有效的练习点。我可以看到你还在学习,我试着只改变你的代码以使其工作,但要注意有更好的方法来做到这一点(比如使用字符串构建其他一些答案)。

考虑一下你在这里尝试做什么很有帮助。您希望通过这些行循环计算空格和星星的数量。

首先,使用ReadLine将行数作为输入字符串,然后将其解析为可在循环中使用的数字。 注意 - 如果您之前还没有看到过TryParse,它只是一种通过输入非数字来阻止用户崩溃程序的方法。它检查输入是否可以解析为数字,如果可以,则执行程序。

接下来,对于每一行,您需要计算所需的字符数。让我们考虑3行。

  • 第一行:没有空格,5星。
  • 第二行:每边1个空间,3星。
  • 第三行:每边2个空格,1个星。

由此可以看出,你需要两倍于行数的字符,少于1.(3 * 2 -1)。您还可以看到,您需要的空格数等于每侧的行数(如果第一行的编号为0)。由此我们可以得出结论,我们需要一个等于字符数的数字星号,少于2 *个空格数。

希望这有助于您思考如何模拟手头的问题!

答案 2 :(得分:0)

CIRCLE形状 伙计们试试这个......

using System;

namespace Fan
{
   class Program
   {
    static void Main(string[] args)
    {
        int circle_radius = 6; 
        double console_ratio = Convert.ToDouble(4.0 / 2.0);
        double a = console_ratio * circle_radius;
        double b = circle_radius;

        for (int y = -circle_radius; y <= circle_radius; y++)
        {
            for (double x = -console_ratio * circle_radius; x <= console_ratio * circle_radius; x++)
            {
                double d = (x / a) * (x / a) + (y / b) * (y / b);
                if (d > 0.90 && d < 1.2)
                {
                    Console.Write("*");
                }
                else
                {
                    Console.Write(" ");
                }
            }
            Console.Write("\n");
        }
                   Console.Read();
    }

   }
}

答案 3 :(得分:0)

代码:

 int index = 20;
            for (int i = 0; i < 20; i++)
            {
                for (int k = 0; k < 20 - index; k++)
                {
                    Console.Write(" ");
                }
                for (int j = 0; j < index; j++)
                {
                    Console.Write("*");
                }
                for (int k = 0; k < index; k++)
                {
                    Console.Write("*");
                }

                index--;
                Console.WriteLine();
            }
            Console.ReadLine();

输出图片:

enter image description here

答案 4 :(得分:-2)

    using System;

namespace ConsoleApplication1
{
    public enum shape{
        square,
        triangle
    }
    class Program
    {

        static void Main(string[] args)
        {
            for (int i = 0; i < 20; i++)
            {
                for (int j = 0; j < 20; j++)
                {
                    Console.SetCursorPosition(j,i);
                    if (IsInShape(shape.square ,i,j))
                    {
                        Console.Write("*");
                    }
                }
            }
            Console.ReadLine();
        }

        public static bool IsInShape(shape s, int i, int j)
        {
            if (s == shape.square)
            {
                return ((Math.Pow((i - 7), 2) + Math.Pow((j - 7), 2)) <= 12);
            }
            else
            {
                return (j - i > 0 && j+i < 6);
            }
        }

    }
}