using System;
using System.Collections.Generic;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
int n=0 ; //矩阵大小
Console.Write("请输入矩阵行列的大小(N*N):");
do
{
try
{
n = Convert.ToInt32(Console.ReadLine());
}
catch
{
Console.Write("输入有误,请重新输入一个正整数:");
continue;
}
if (n <= 0)
{
Console.Write("输入有误,请重新输入一个正整数:");
continue;
}
}
while(n<=0);
int num=n; //方向上的个数
int x=0, y=0; //座标
int number= 1; //起始数据
int[,] arraya = new int[n, n];
int c;
if ((n + 1) % 2 == 0)
c = (n + 1) / 2;
else
c = n / 2;
for (int i = 1; i <= c; i++)
{
for(int j=1;j<=num;j++)
arraya[x++,y]=number++;
x--;
y++;
num--;
for(int j=1;j<=num;j++)
arraya[x,y++]=number++;
y--;
x--;
for(int j=1;j<=num;j++)
arraya[x--,y]=number++;
x++;
y--;
num--;
for(int j=1;j<=num;j++)
arraya[x,y--]=number++;
y++;
x++;
}
for (int i = 0; i <= n-1; i++)
{
for (int j = 0; j <= n-1; j++)
{
if (arraya[i, j] < 10)
Console.Write(" " + arraya[i, j].ToString() + " ");
else if(arraya[i, j] < 100)
Console.Write(" " + arraya[i, j].ToString() + " ");
else
Console.Write(arraya[i, j].ToString() + " ");
}
Console.Write("/n");
}
Console.ReadKey();
}
}
}