1
#include <iostream.h>
2
#include<iomanip.h>
3
int temp,m[30][30]={0,};
4
void Helix(int min,int max)
5
{
6
for(int i=min;i<max;i++)
7
{
8
m[min][i]=temp+i-min;
9
m[i][max]=temp+(max-min)+i-min;
10
m[max][i+1]=temp+3*(max-min)-(i-min+1);
11
m[i+1][min]=temp+4*(max-min)-(i-min+1);
12
}
13
temp+=4*(max-min);
14
}
15
void main()
16
{
17
while(1)
18
{
19
int N,min(0),max;
20
cout<<" 输入螺旋矩阵的行列数N(1~20),输入字母 退出:";
21
cin>>N;
22
if(N<1 || N>30)
23
break;
24
max=N-1;
25
temp=1;
26
if(N%2==1)
27
m[N/2][N/2]=N*N;
28
for(int i=0;i<N/2;i++)
29
Helix(min++,max--);
30
for(i=0;i<N;i++)
31
{
32
for(int j=0;j<N;j++)
33
cout<<setw(3)<<m[i][j]<<' ';
34
cout<<endl;
35
}
36
}
37
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
浙公网安备 33010602011771号