控制台打印螺旋数组

最近园里面在聊打印螺旋数组,我业余写了一个自己的实现,如下:
 
代码
static void Main(string[] args)
        {
            
int n = 0;

            
try
            {
                n 
= Convert.ToInt32(Console.ReadLine());
            }
            
catch {
                Console.WriteLine(
"Error");
            }

            
int[,] arr = new int[n, n];

            Spiral(n, arr);

            PrintMatrix(n, arr);

            Console.ReadLine();
        }

        
//螺旋数组
        public static void Spiral(int n,int[,] matrix)
        {
            
int i = 0, j = 0, m = 0, k = 0;

            
for (m = 0; m < n; m++)
            {

                
//方向→
                for (i = m, j = m; j < n - m; j++)
                {
                    matrix[i, j] 
= ++k;
                }
                j
--;
                
                
//方向↓
                for (i = i + 1; i < n - m; i++)
                {
                    matrix[i, j] 
= ++k;
                }
                i
--;

                
//方向←
                for (j = j - 1; j >= m; j--)
                {
                    matrix[i, j] 
= ++k;
                }
                j
++;


                
//方向↑
                for (i = i - 1; i > m; i--)
                {
                    matrix[i, j] 
= ++k;
                }
                i
++;
            }
        }

       
        
//打印
        public static void PrintMatrix(int n,int[,] matrix)
        {
            
for (int a = 0; a < n; a++)
            {
                
for (int b = 0; b < n; b++)
                {
                    
if (matrix[a, b] < 10)
                    {
                        Console.Write(
"0{0} ", matrix[a, b]);
                    }
                    
else
                    {
                        Console.Write(
"{0} ", matrix[a, b]);
                    }
                }
                Console.WriteLine();
            }
        }

 

posted @ 2010-03-18 01:11  Kurodo  阅读(391)  评论(0编辑  收藏  举报