数字立方体,每行向左旋转一个

时间:2013-11-08 13:13:16

标签: c#

基本的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

6 个答案:

答案 0 :(得分: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();

答案 1 :(得分:1)

问题是你的第二个内循环从一开始算起来而不是从num开始倒计时。

将该循环更改为:

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

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

答案 2 :(得分:1)

尝试这样的事情

  1. 从用户处获取数字(x)。
  2. 创建一个包含x到0的整数列表。
  3. 运行循环x次。
  4. 每次打印清单并弹出第一个数字并在结尾处推送
  5. 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);
    }
    

答案 3 :(得分:0)

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

for i from 0 to number_input-1 {
    for j from number_input to 0 {
        print((j-i)%(number_input+1) + " ")
    }
    print("\n")
}

答案 4 :(得分: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();
}

答案 5 :(得分: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]。
  5. 所以只是简单的代码

    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;
        }
    }