0

基本 C# 问题:输入某个数字时我需要得到该结果(本例输入 4):

4 3 2 1 0
3 2 1 0 4
2 1 0 4 3
1 0 4 3 2

我正在尝试该代码,但无法弄清楚我的错误:

Console.WriteLine("Please write a Number: ");
Console.Write("Number: ");
int num = int.Parse(Console.ReadLine());
for (int i = 0; i <= num; i++)
{
    for (int j = num - i; j >= 0; j--)
    {
        Console.Write(j);
    }
    for (int j = 1; j <= i; j++)
    {
        Console.Write(j);
    }
    Console.WriteLine();
}
Console.ReadLine();

这是我得到的输出:

4 3 2 1 0
3 2 1 0 1
2 1 0 1 2
1 0 1 2 3
0 1 2 3 4
4

6 回答 6

2

尝试这个:

Console.WriteLine("Please write a Number: ");
Console.Write("Number: ");
int num = int.Parse(Console.ReadLine());
for (int i = 0; i <= num; i++)
{
    for (int j = num - i; j >= 0; j--)
    {
        Console.Write(j);
    }
    for (int j = num; j > num - i; j--)
    {
        Console.Write(j);
    }
    Console.WriteLine();
}
Console.ReadLine();
于 2013-11-08T13:23:11.947 回答
1

尝试这样的事情

  1. 从用户那里得到一个数字(x)。
  2. 创建一个包含 x 到 0 的整数列表。
  3. 循环运行 x 次。
  4. 每次打印列表并弹出第一个数字并在最后推送
var ints = new List<int> { 4, 3, 2, 1, 0 };
for (int i = 0; i < 4; i++)
{
    ints.ForEach(n => Console.Write(n + " "));
    Console.WriteLine("");
    var a = ints[0];
    ints.RemoveAt(0);
    ints.Add(a);
}
于 2013-11-08T13:22:35.660 回答
1

问题是您的第二个内部循环从一开始并向上计数,而不是从开始num和向下计数。

将该循环更改为:

for (int j = num; j > num -i; j--)
{
    Console.Write(j);
}

我也不清楚你是否想要 04321 的最后一行。如果您不这样做(如原始示例中所示),则只需将循环检查更改为i<num.

于 2013-11-08T13:21:13.220 回答
0

作为提示,我将主循环作为伪代码提供给您:

for i from 0 to number_input-1 {
    for j from number_input to 0 {
        print((j-i)%(number_input+1) + " ")
    }
    print("\n")
}
于 2013-11-08T13:21:50.253 回答
0

老实说,这是一个经典的排序任务。它只是隐藏在“用户类型和 bla bla bla”之外,但我记得在学校它是.. 有一个数组 [4,3,2,1,0].. 所以

  1. 我们交换 1 和 2 并得到 [3,4,2,1,0]。
  2. 我们交换 2 和 3 得到 [3,2,4,1,0]。
  3. 我们交换 3 和 4 得到 [3,2,1,4,0​​]。
  4. 我们交换 4 和 5 得到 [3,2,1,0,4]。

所以只是简单的代码

int[] numbers假设你有这个数组 [4,3,2,1,0]

for(int i = 0; i < numbers.length - 2; i++){
    for(int y = 0; y < numbers.length - 1; y++){
        int buf = numbers[y];
        numbers[y] = numbers[y + 1];
        numbers[y + 1] = buf;
    }
}
于 2013-11-08T14:57:59.293 回答
0

纯娱乐:

const int NUM = 4; // num from user
for (int start = NUM; start > 0; start--)
{
    for (int i = 0; i <= NUM; i++)
    {
        int current = (start - i) >= 0 ? start - i : NUM + (start - i) + 1;
        Console.Write(current + " ");
    }
    Console.WriteLine();
}
于 2013-11-08T13:52:40.697 回答