1#include <iostream.h>
2#include<iomanip.h>
3int temp,m[30][30]={0,};
4void 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}
15void 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#include<iomanip.h>
3int temp,m[30][30]={0,};
4void 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}
15void 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}