using System; using System.Collections.Generic; using System.Text; namespace specialmatrix { class Program { static void Main(string[] args) { int n; Program matrix = new Program(); Console.WriteLine("输入方阵行列n"); n = Convert.ToInt32(Console.ReadLine()); matrix.nishizheng(n); //按逆时针方向输出矩阵 matrix.shunshizheng(n);//按顺时针方向输出矩阵 matrix.huixing(n); //按回字形输出矩阵 } private void nishizheng(int n) //按逆时针方向输出数组 { int m, k, i, j; int[,] a = new int[n + 1, n + 1]; m = 1; k = 1; for (i = 0; i <= n; i++) { for (j = 0; j <= n; j++) a[i, j] = 0; } while (k <= Convert.ToInt32(n / 2)) { i = k; j = k; while (i <= n - k) { a[i, j] = m; i++; m++; } while (j <= n - k) { a[i, j] = m; j++; m++; } while (i > k) { a[i, j] = m; i--; m++; } while (j > k) { a[i, j] = m; j--; m++; } k = k + 1; } if (n % 2 != 0) a[k, k] = m; Console.WriteLine("按逆时针方向输出数组"); for (i = 1; i <= n; i++) { for (j = 1; j <= n; j++) Console.Write("{0}/t", a[i, j]); Console.Write("/n"); } } private void shunshizheng(int n) //按顺时针方向输出数组 { int m, k, i, j; int[,] a = new int[n + 1, n + 1]; m = Convert.ToInt32(Math.Pow(n, 2)); k = 1; for (i = 0; i <= n; i++) { for (j = 0; j <= n; j++) a[i, j] = 0; } while (k <= Convert.ToInt32(n / 2)) { i = k; j = k; while (i <= n - k) { a[i, j] = m; i++; m--; } while (j <= n - k) { a[i, j] = m; j++; m--; } while (i > k) { a[i, j] = m; i--; m--; } while (j > k) { a[i, j] = m; j--; m--; } k = k + 1; } if (n % 2 != 0) a[k, k] = m; Console.WriteLine("按顺时针方向输出数组"); for (i = 1; i <= n; i++) { for (j = 1; j <= n; j++) Console.Write("{0}/t", a[i, j]); Console.Write("/n"); } } private void huixing(int n) //回字形矩阵 { int i = 0; int j = 0; int m = 0; int k = 2 * n - 2; int s = k; //k和n的值一直在变,要用s来保存它们的原始值 int[,] a = new int[k + 1, k + 1]; for (i = 0; i < k + 1; i++) //i<k+1 { for (j = 0; j < k + 1; j++) //j<k+1 a[i, j] = 0; } i = 0; j = 0; //i j 重新置0 try { while (n > 0) { while (i <= k) //左 { a[i, j] = n; i++; } i--; j++; while (j <= k) //下 { a[i, j] = n; j++; } i--; j--; while (i >= m) //右 { a[i, j] = n; i--; } i++; j--; while (j >= m) //上 { a[i, j] = n; j--; } i += 1; j += 2; m += 1; k -= 1; n -= 1; } } catch (IndexOutOfRangeException e) { Console.WriteLine("发生异常:" + e.Message); } Console.WriteLine("按回形输出数组"); for (i = 0; i < s + 1; i++) //s { for (j = 0; j < s + 1; j++) Console.Write("{0} ", a[i, j]); Console.Write("/n"); } } } }