1.输入一个n ,然后在屏幕上打印出NxN 的矩阵!
例如,输入一个3,则
1 2 3
8 9 4
7 6 5
输入一个4,则
1 2 3 4
12 13 14 5
11 16 15 6
10 9 8 7
#include <iostream>
#include <iomanip>
using namespace std;
void PrintMatrix(int n)
{
if (n <= 1)
{
cout << n << endl;
return;
}
//分配空间
int **matrix = new int*[n];
for (int i = 0; i < n; ++i)
{
matrix[i] = new int[n];
for (int j = 0; j < n; ++j)
{
matrix[i][j] = 0;
}
}
int row = 0;
int col = 0;
int num = 1;
int nend = n*n;
char buff[256] = {"\0"};
_itoa_s(nend, buff, 256, 10);
int width = strlen(buff);
int nloop = 0;
while (num <= nend)
{
//行 左->右
for (; col < n - nloop; ++col)
{
matrix[row][col] = num++;
}
//列 上->下
col -= 1;
row += 1;
for (; row < n - nloop; ++row)
{
matrix[row][col] = num++;
}
//行 右->左
row -= 1;
col -= 1;
for (; col >= nloop; --col)
{
matrix[row][col] = num++;
}
//列 下->上
col += 1;
row -= 1;
for (; row > nloop; --row)
{
matrix[row][col] = num++;
}
row = col = 0;
++nloop;
row += nloop;
col += nloop;
}
//打印输出
for (int k = 0; k < n; ++k)
{
for (int h = 0; h < n; ++h)
{
cout << setw(width) << matrix[k][h] << " ";
}
cout << endl;
}
//释放空间
for (int i = 0; i < n; ++i)
{
delete[] matrix[i];
matrix[i] = 0;
}
delete[] matrix;
}