#include <iostream> using namespace std; void Matric(int **array,int row,int col,bool isClock) { int indexRow,indexCol=indexRow=0; //用于判断是否顺时针还是逆时针,1为顺时针 int dir=(isClock==true)?1:-1; int s=1; //第一个先赋值为1 array[indexRow][indexCol]=s; int rowDir=0; int colDir=dir; //当s的值不大于col和row的乘积时 while (col*row>s) { //不出边界,同时未赋值 while (indexCol+colDir<col && indexCol+colDir>=0 && indexRow+rowDir<row && indexRow+rowDir>=0 && array[indexRow+rowDir][indexCol+colDir]==0) { //通过对rowDir的0 -1 1 不同赋值而产生不同的顺序 array[indexRow+=rowDir][indexCol+=colDir]=++s; } if (colDir==0) { //判断是否等于1 colDir=(rowDir==1)?-dir:dir; rowDir=0; } else { rowDir=(colDir==1)?dir:-dir; colDir=0; } } for (int i=0;i<row;i++) { for (int j=0;j<col;j++) { cout<<array[i][j]<<" "; } cout<<endl; } } int main() { int row,col; cin>>row>>col; int **array=new int *[row]; for (int i=0;i<row;i++) { array[i]=new int[col]; for (int j=0;j<col;j++) { array[i][j]=0; } } Matric(array,row,col,false); return 0; }