private static int maxRowCount = 0;private static int maxColCount = 0;static void Main(string[] args)
{intc;boolflag;int[,] rect;intcol;introw;intadd;intnum;inttotalCount;int op; //操作次数
int direct; //操作方向 0 右 1下 2左 3上
flag = int.TryParse(Console.ReadLine(), outc);
maxRowCount= 2 * c + 1;
maxColCount= 2 * c + 1;
rect= new int[maxRowCount, maxColCount];if(flag)
{
col=c;
row=c;
direct= 0;
num= 1;
rect[row, col]=num;
totalCount= maxRowCount *maxColCount;var turnTimes = 1;//转向次数
var waitTime = 1;//下一次转向
for (int i = 0; i < totalCount; i++)
{if (turnTimes == 3)
{
turnTimes= 1;
waitTime++;
}switch(direct)
{case 0:for (int j = 0; j < waitTime; j++)
{
col++;
num++;if (num >totalCount)break;
rect[row, col]= num;//加1
}
Print(rect);
direct++;break;case 1:for (int j = 0; j < waitTime; j++)
{
row++;
num++;if (num >totalCount)break;
rect[row, col]= num;//加1
}
Print(rect);
direct++;break;case 2:for (int j = 0; j < waitTime; j++)
{
col--;
num++;if (num >totalCount)break;
rect[row, col]= num;//加1
}
Print(rect);
direct++;break;case 3:for (int j = 0; j < waitTime; j++)
{
row--;
num++;if (num >totalCount)break;
rect[row, col]= num;//加1
}
Print(rect);
direct= 0;break;
}
turnTimes++;
}
}
}static void Print(int[,] rect)
{for (int i = 0; i < maxRowCount; i++)
{for (int j = 0; j < maxColCount; j++)
{
Console.Write(rect[i, j]+ "\t");
}
Console.Write("\n");
}
}