在螺旋矩阵中,可以分为左、下以及右、上两部分,其中,
#include<stdio.h>
int main()
{
int i,j,k,n;
int x,y;
int t = 1;
int a[100][100],b[2];//a数组用来存储整个数组,b数组用来表示行、列向量的下标
scanf("%d" ,&n);//n为矩阵阶数
b[0] = 0;//记录矩阵行下标
b[1] = 1;//记录矩阵列下标
x = 1;//x表示第一个传入矩阵的数据:1
k = n;
while(x <= n*n){
for(y = 1 ;y <= 2*k-1 ;y++){
//在y=1~k的范围内,b的下标为0(对b[0]进行+t操作,行变列不变);
//在y=k+1~2k-1的范围内,b的下标为1(对b[1]进行+t操作,列变行不变)
b[y/(k+1)]+=t;
a[b[0]][b[1]] = x;
x++;
}
k--;
t = -t;
}
//打印输出
for(i = 1 ;i <= n ;i++){
printf("\n");
for(j = 1 ;j <= n ;j++){
printf("%d\t",a[i][j]);
}
printf("\n");
}
return 0;
}