gpt4 book ai didi

C# 打印星星图案

转载 作者:行者123 更新时间:2023-12-02 02:49:42 27 4
gpt4 key购买 nike

我想打印类似的图案

pattern

但我的输出有问题。

我的代码是:

int i, j, k;

for (i = 5; i >= 1; i--)
{
for (j = 5; j > i; j--)
{
Console.Write(" ");
}

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

Console.WriteLine();
}

Console.ReadLine();

最佳答案

只有几个问题:

  1. 您正在写"*_"对于每次迭代,包括最后一次。相反,我们应该只写 "*"在每次迭代中,后跟 "_"除了最后一次之外的每次迭代。我们可以用两个不同的 Console.Write 来做到这一点调用,其中第二个检查我们的迭代器是否位于最后一个位置。
  2. 当您这样做时,您的迭代次数是所需次数的两倍 k < (i * 2) (在第一次迭代中, i == 5 ,所以 i * 2 == 10 ,这意味着我们将迭代 9 次)。我们可以通过将其更改为 k <= i 来解决此问题
  3. 作为旁注,我们可以在 for 中本地声明我们的循环变量。循环。这缩小了它们的范围,这通常是一件好事。

例如:

for (int i = 5; i >= 1; i--)
{
for (int j = 5; j > i; j--)
{
Console.Write(" ");
}

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

Console.WriteLine();
}

Console.ReadLine();

如果我们使用string,代码可以简化一点构造函数接受一个字符并重复多次以写入空格,如果我们在内部循环中迭代少一次,我们可以编写 "*_"随后是 WriteLine("*") :

for (int i = 5; i >= 1; i--)
{
// Write (5 - i) spaces at once
Console.Write(new string(' ', 5 - i));

// Write 'i' count of "*", joined with a "_"
Console.WriteLine(string.Join("_", Enumerable.Repeat("*", i)));
}

Console.ReadLine();

关于C# 打印星星图案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62224679/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com