c++打印数字图案?
这是打印螺旋矩阵,一般的解决方法是这样的:
将矩阵生成到一个二维数组,然后打印出二维数组就行了。
代码如下:
#include<iostream>
using namespace std;
int main()
{
int n;
//x,y表示当前数组要赋值的位置
int x = 0,y = -1;
//每次赋值时,x和y的增量
int x_add = 0, y_add = 1;
//num:移动方向发生变化的转变点,num_add:每次转变时num的增量
cin>>n;
int a[n][n];
int num = n,num_add = n;
for(int i=1;i<=n*n;i++)
{
x += x_add;
y += y_add;
a[x][y] = i;
//移动方向发生转变
if(i == num)
{
//横向变纵向
if(y_add == 1 || y_add == -1)
{
x_add = y_add;
y_add = 0;
num_add--;
num += num_add;
}
else //纵向变横向
{
y_add = -x_add;
x_add = 0;
num += num_add;
}
}
}
for(int i=0;i<n;i++)
{
for(int j=0;j<n-1;j++)
{
cout<<a[i][j]<<" ";
}
cout<<a[i][n-1]<<endl;
}
return 0;
}
结果截图: