c#中的数字阶梯和横向金字塔

本文关键字:横向 金字塔 数字 | 更新日期: 2023-09-27 18:10:52

我必须编写一个c#控制台应用程序,当给定一个数字作为"高度"时打印如下所示的数字阶梯:

1

12123年

1234年

以及在给定时打印的第二个程序,将height设为5:

1

12123年

1234年

12345年

1234年

121

我不知道从哪里开始,我知道我应该使用循环,但因为这是我的第二个c#类,我有点迷路了。澄清一下,我不是让别人帮我做作业,但我希望你能给我点建议。编辑:到目前为止,我已经完成了第一个任务:

int altura; string space = "";
Console.WriteLine("Dar altura: ");
altura = int.Parse(Console.ReadLine());
for (int i = 1; i <= altura; i++)
{
    for (int j = 1; j <= i; j++)
    {
        space = "";
        space = space + Convert.ToString(j);
    }
    Console.WriteLine(space);
}
Console.ReadLine();

现在它工作了。但我还是不知道怎么让它循环回去。编辑2:它现在都工作了!!非常感谢大家!

编辑# 3所以很抱歉问,但如果我想让它打印:

1
121
12321
1234321

当我的高度是4时,我应该修改第二个循环,对吗?

c#中的数字阶梯和横向金字塔

您忘记在每行重置space

int altura; 
Console.WriteLine("Dar altura: ");
altura = int.Parse(Console.ReadLine());
for (int i = 1; i <= altura; i++)
{
  string space = "";
  for (int j = 1; j <= i; j++)
  {
    space = space + Convert.ToString(j);
  }
  Console.WriteLine(space);
}
Console.ReadLine();

然后添加另一个双循环,将ialture-1计数到1

for (int i = altura-1; i >= 1; i--)
{
  ...
}

for (c# Reference)将是一个很好的起点。

要解决这个问题,需要使用两个循环。一个嵌入另一个

你的第一个循环应该从1运行到5,变量说'i'从1开始,到5结束,加1

第二个/内循环应该从1开始运行,直到外循环的'i'值。假设变量'j'从1…到'i'的值增加1。在这个循环中,你只是打印j的值,在循环结束时打印新行''n'。

好运

我给你第一个作业的答案:

for(int i=1;i<=height;i++)
{
    Console.Write(''n');
    for(int j=1;j<=i;j++)
    {
        Console.Write(j);
    }
}

这将给你第一部分的数字金字塔。在此基础上,你可以设计第二次作业的答案。(提示:使用第二个循环将变量减少为1)

试着从一个方法开始,因为我猜这就是你需要写的。

public static void PrintNumberLadder (int height) {
    //your code here...
}

你还需要一个变量来存储下一个要打印的数字。也许printNext是个好名字。现在你需要爬梯子达到height的次数。使用for循环:

for (int i = 0 ; i < height ; i++) {
    //code...
}

该循环的每次迭代将打印新行。现在还记得printNext变量吗?将其初始化为1。这就是你想要的起点,对吧?现在我们需要考虑如何打印每一行。让我们使用另一个循环!这次我们想打印printNext的次数。哦,你突然想起printNext必须在每次打印新行时递增。现在代码看起来像这样:

for (int i = 0 ; i < height ; i++, printNext++) {//See? here is how you increment printNext
    for (int j = 0 ; j < printNext ; j++) {
    }
    Console.WriteLine(); //starts a new line
}

现在你应该在内循环中做什么?你猜对了

Console.Write (j + 1);

等一下,为什么是Write而不是WriteLine,为什么是j + 1 ?我们使用Write来确保打印的东西不会转到下一行。如果您使用WriteLine,它将是这样的:

<>之前123.45之前

我们用j + 1因为j从0开始。但你的阶梯从1开始;

现在你怎么下梯子?我给你个提示。使用String类中的Substring方法。创建一个变量来存储将要打印的字符串