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

时间:2015-09-03 00:21:32

标签: c#

我必须编写一个c#控制台应用程序,当给出一个数字为" height" 打印一个数字梯子,如下所示:

  

1

     

12

     

123

     

1234

除了在给定时打印的第二个程序,例如5作为高度:

  

1

     

12

     

123

     

1234

     

12345

     

1234

     

12

     

1

我不知道从哪里开始,我知道我应该用于周期但是因为它是我的第二个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时我应该修改第二个循环吗?

5 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

您忘记在每行重置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>的1倒计时的双循环

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

与上述内容相同。

答案 2 :(得分:0)

我会给你回答第一个任命:

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

这将为您提供第一部分的数字金字塔。基于此,您可以为第二次分配设计答案。 (提示:使用第二个循环将变量减少回1)

答案 3 :(得分:0)

要解决此问题,您需要使用两个循环。一个嵌入其他内部。

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

第二个/内部循环应该从1开始并运行到外部循环的“i”值。说变量'j'从1 ..到'i'的值增加1。在这个循环中,你只需打印j的任何值,并在循环结束时打印新行'\ n'。

祝你好运

答案 4 :(得分:0)

尝试从一个方法开始,因为我想这就是你需要写的东西。

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,它将是这样的:

1
2
3
4
5

我们使用j + 1,因为j从0开始。但是你的梯子从1开始;

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