/*
2021年1月24日12:21:58
输出m*n的螺旋矩阵
*/
#include<stdio.h>
#include<stdlib.h>
void creatmatrix(int** r,int n,int m)
{
int x,y;
int cnt=1,time=-1;//length->m,width->n
printf("creating...\n");
while(1)
{
time++;
for(x=time,y=time;y<n-1-time;y++)
r[x][y]=cnt++;
if(cnt>m*n) break;
for(x=time,y=n-1-time;x<m-1-time;x++)
r[x][y]=cnt++;
if(cnt>m*n) break;
for(x=m-1-time,y=n-1-time;y>time;y--)
r[x][y]=cnt++;
if(cnt>m*n) break;
for(x=m-1-time,y=time;x>time;x--)
r[x][y]=cnt++;
if(cnt>m*n) break;
}
}
void printmatrix(int** r,int m,int n)
{
int i,j;
printf("printing...\n");
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
printf("%-3d",r[i][j]);
printf("\n");
}
}
int main()
{
int m,n,i;
int** matrix;
printf("请输入矩形的长度和宽度:");
scanf("%d%d",&m,&n);
matrix=(int**)calloc(n,sizeof(int*));
for(i=0;i<n;i++)
matrix[i]=(int*)calloc(m,sizeof(int));
creatmatrix(matrix,m,n);
printmatrix(matrix,m,n);
return 0;
}