在 C# 中制作星形金字塔

本文关键字:金字塔 | 更新日期: 2023-09-27 17:57:06

所以我试图用 C# 做一个金字塔,但我无法让它正确打印。我正在为学校的 C# 课程执行此操作,无法真正弄清楚如何正确获取金字塔中的空间。我觉得我在这里真的做错了什么。

我得到的不是三角形,而是这样的东西:

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

这是我的代码:

using System;
namespace Pyramidi
{
    class Ohjelma
    {
        static void Main()
        {
            int korkeusMax = 0;
            int valit = 0;
            do
            {
                Console.Write("Anna korkeus: ");            
                korkeusMax = Convert.ToInt32(Console.ReadLine());           
                if (korkeusMax > 0) {
                    break;
                }
                else {
                    continue;
                }          
            }
            while(true);
            for (int korkeus = 1; korkeus <= korkeusMax; korkeus++)
            {
                valit = (korkeusMax - korkeus) / 2;
                for (int i = 0; i < valit; i++)
                {
                    Console.Write(" ");
                }
                for (int leveys = 1; leveys <= korkeus; leveys++)
                {
                    Console.Write("*");
                }
                Console.WriteLine();
            }
                Console.ReadLine();
        }
    }
}

在 C# 中制作星形金字塔

试试这个:

for (int korkeus = 0; korkeus < korkeusMax; korkeus++)
{
    for (int i = 0; i < (korkeusMax - korkeus - 1); i++)
    {
        Console.Write(" ");
    }
    for (int i = 0; i < (korkeus * 2 + 1); i++)
    {
        Console.Write("*");
    }
    Console.WriteLine();
}

或者,您可以使用 new String('*', num) 代替循环。试试这个:

for (int korkeus = 0; korkeus < korkeusMax; korkeus++)
{
    Console.Write(new String(' ', korkeusMax - korkeus - 1));
    Console.Write(new String('*', korkeus * 2 + 1));
    Console.WriteLine();
}
你做

对了前半部分,但你想为后半部分做的是另一个相反的 for 循环。

所以你可能想复制你的 for 循环并将标题从

 for (int korkeus = 1; korkeus <= korkeusMax; korkeus++)

 for (int korkeus = kokeusMax; korkeus > 1; korkeus--)

或类似的东西