螺旋数字矩阵的输出

 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}

你可能感兴趣的:(数字)