在 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();
}
}
}
试试这个:
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--)
或类似的东西