题目:输入数字n(n<10),输出n层正方形图案。正方形图案最外层是第一层,依次往内,每层用的数字和层数相同。
const int M=10;
int floor[M][M];
cout<<"请输入正方形层数:";
cin>>m;
int start=0,end=2*m-2;
for(x=0,y=0,t=0;t<=m/2;x++,y++,start++,end--,t++)
{for(x=start;x<end;x++)
floor[x][y]=t+1;
for(y=start;y<end;y++)
floor[x][y]=t+1;
for(x=end;x>start;x--)
floor[x][y]=t+1;
for(y=end;y>start;y--)
floor[x][y]=t+1;}
for(x=0;x<2*m-1;x++)
{for(y=0;y<2*m-1;y++)
cout<<floor[x][y]<<setw(2);
cout<<endl;
#include <iostream>
#include<string>
#include <vector>
using namespace std;
//字符串结束以‘\0’为结束符;
void printfsquare()
{
int n,m;
cin >> n;
m=2 * n - 1;
//动态二维数组
vector<vector<int>> a (m, vector<int>(m));
//动态二维数组的初始化
for (int i = 0; i < m; i++)
{
for (int j = 0; j < m ; j++)
{
a[i][j] = 0;
}
}
int i, j, k;
//以一个外部变量 i 既作为数组的值,有作为总控制。
//这样每当 i + 1 时 这样可以使
//数组的行和列都加 1 使得整个数组向里增加一层。
for ( i = 0; i <m; i++)
{
for ( j = i; j <m - i; j++)
{
for ( k = i ; k <m - i; k++)
{
a[j][k] = i+1;
}
}
}
for ( i = 0; i < m; i++)
{
for ( j = 0; j < m; j++)
{
cout<<a[i][j]<<" ";
}
cout << endl;
}
}
int main()
{
printfsquare();
return 0;
}