
class Program
{
static void Main(string[] args)
{
int num=0;
Console.WriteLine("请输入矩阵的长度:");
string getKeys= Console.ReadLine();
int.TryParse(getKeys, out num); //输入数组长度
int[,] dataArray =new int[num,num];
int y=0; //设置初始值,线一开始位置 坐标 x,y
int x=0;
int number=1; //蜗牛的起点
if (num % 2 != 0)//
{
dataArray[num / 2, num / 2] = num * num;
}
First(num, dataArray, y, x, number);
PrintDataArray(num, dataArray);
Console.ReadKey();
}
private static int First(int num, int[,] dataArray, int y, int x, int number)
{
int startX = x;
int startY = y;
#region 实现蜗牛的围墙
while (y < num - 1)
{
dataArray[startX, y] = number;
number++;
y++;
}
while (x < num - 1)
{
dataArray[x, y] = number;
number++;
x++;
}
while (y > startX)
{
dataArray[x, y] = number;
number++;
y--;
}
while (x > y)
{
dataArray[x, y] = number;
number++;
x--;
}
#endregion
num -= 1;
startX++;
startY++;
if (num > 2)
{
return First(num, dataArray, startY, startX, number);
}
else
{
return 0;
}
}
private static void PrintDataArray(int num, int[,] dataArray)
{
for (int i = 0; i < num; i++)
{
for (int j = 0; j < num; j++)
{
Console.Write(dataArray[i, j].ToString("#0#") + " ");
}
Console.WriteLine();
}
}
}