请教一个问题
就是这样  输入2
打印  1  2
      4  3输入 3 
打印 1 2 3
     8 9 4
     7 6 5n 是用户输入的

解决方案 »

  1.   

    这是当初我的代码.using System;
    namespace PrintArray
    {
        class PrintArray
        {
            static void Main()
            {
                char c = '0';
                while (c != 'n' && c != 'N')
                {
                    Console.Write("输入2-9:");
                    c = Console.ReadKey().KeyChar;
                    Console.WriteLine();
                    if (c < '2' || c > '9') continue;
                    int n = c - '0';
                    p1(n);
                }
            }
            static private void p1(int n)
            {
                int[,] array = new int[n, n];
                array[0, 0] = 1;
                int gridx = 0, gridy = 0, forward = 6;
                for (int i = 2; i <= n * n; i++)
                {
                    switch (forward)
                    {
                        case 2:
                            if ((gridy - 1 >= 0) && (array[gridx, gridy - 1] == 0))
                                array[gridx, --gridy] = i;
                            else
                            {
                                array[++gridx, gridy] = i;
                                forward = 6;
                            }
                            break;
                        case 4:
                            if ((gridx - 1 >= 0) && (array[gridx - 1, gridy] == 0))
                                array[--gridx, gridy] = i;
                            else
                            {
                                array[gridx, --gridy] = i;
                                forward = 2;
                            }
                            break;
                        case 6:
                            if ((gridx + 1 < n) && (array[gridx + 1, gridy] == 0))
                                array[++gridx, gridy] = i;
                            else
                            {
                                array[gridx, ++gridy] = i;
                                forward = 8;
                            }
                            break;
                        case 8:
                            if ((gridy + 1 < n) && (array[gridx, gridy + 1] == 0))
                                array[gridx, ++gridy] = i;
                            else
                            {
                                array[--gridx, gridy] = i;
                                forward = 4;
                            }
                            break;
                    }
                }
                printArray(array, n);
            }
            static private void printArray(int[,] array, int num)
            {
                for (int i = 0; i < num; i++)
                {
                    for (int j = 0; j < num; j++)
                        Console.Write(array[j, i].ToString("00") + " ");
                    Console.WriteLine();
                }
                Console.WriteLine("-----------------------");
            }
        }
    }
      

  2.   

    static void Main(string[] args)
    {
    int nSize = Convert.ToInt32(args[0]);
    string strDirect = "Left";
    int [,] nMatrix = new int[nSize, nSize];
    int nX = 0, nY = 0, nCounter = 1; nMatrix[0, 0] = nCounter;
    while (GetPosition(nMatrix, nSize, ref strDirect, ref nX, ref nY) == true)
    {
    nCounter = nCounter + 1;
    nMatrix[nY, nX] = nCounter;
    } for (int i = 0; i < nSize; i++)
    {
    for (int j = 0; j < nSize; j++)
    {
    Console.Write(nMatrix[i, j] + " ");
    }
    Console.Write("\r\n");
    }
    }
    static bool GetPosition(int [,]nMatrix, int nSize, ref string strDirect, ref int nNextX, ref int nNextY)
    {
    if (strDirect == "Left")
    {
    if (nNextX + 1 < nSize && nMatrix[nNextY, nNextX + 1] == 0)
    {
    nNextX = nNextX + 1; return true;
    } else if (nNextY + 1 < nSize && nMatrix[nNextY + 1, nNextX] == 0)
    {
    nNextY = nNextY + 1; strDirect = "Up";
    return true;
    } else 
    return false;
    } else if (strDirect == "Up")
    {
    if (nNextY + 1 < nSize && nMatrix[nNextY + 1, nNextX] == 0)
    {
    nNextY = nNextY + 1; return true;
    } else if (nNextX - 1 >= 0 && nMatrix[nNextY, nNextX - 1] == 0)
    {
    nNextX = nNextX - 1; strDirect = "Right";
    return true;
    } else
    return false;
    } else if (strDirect == "Right")
    {
    if (nNextX - 1 >= 0 && nMatrix[nNextY, nNextX - 1] == 0)
    {
    nNextX = nNextX - 1; return true;
    } else if (nNextY - 1 >= 0 && nMatrix[nNextY - 1, nNextX] == 0)
    {
    nNextY = nNextY - 1; strDirect = "Down";
    return true;
    } else
    return false;
    } else if (strDirect == "Down")
    {
    if (nNextY - 1 >= 0 && nMatrix[nNextY - 1, nNextX] == 0)
    {
    nNextY = nNextY - 1; return true;
    } else if (nNextX + 1 < nSize && nMatrix[nNextY, nNextX + 1] == 0)
    {
    nNextX = nNextX + 1; strDirect = "Left";
    return true;
    } else
    return false;
    } else 
    return false;
    }如果在图形界面中那个数组还可以省略