c语言(螺旋矩阵)2017.4.23

来源:互联网 发布:vip影视盒子源码 编辑:程序博客网 时间:2024/04/30 19:48
/*对于任意的M×M方阵,编程按照下面的规律对其初始化并输出。 
特别说明:方阵行列数不超过20。
输入
方阵的行列数
输出
输出螺旋矩阵,每个数字占三个字符的宽度,右对齐,同行相邻两个数字间用一个空格隔开,每行最后一个数字后面没有空格。
样例输入
7
样例输出
  1   2   3   4   5   6   7
 24  25  26  27  28  29   8
 23  40  41  42  43  30   9
 22  39  48  49  44  31  10
 21  38  47  46  45  32  11
 20  37  36  35  34  33  12
 19  18  17  16  15  14  13
*/
#include<stdio.h>
#define M 22
int main()
{
    int a[M][M];
    int i,j,n,N;
    int num=1;


    scanf("%d",&N);//n为计数行
    for(n=1;n<=N;n++)
    {
        for(i=n;i<=N-n+1;i++)//转变各个方向
            a[n][i]=num++;
        for(j=n+1;j<=N-n+1;j++)
            a[j][i-1]=num++;
        for(i=N-n;i>=n;i--)
            a[j-1][i]=num++;
        for(j=N-n;j>=n+1;j--)
            a[j][i+1]=num++;
    }
    for(i=1;i<=N;i++)
      {  for(j=1;j<=N;j++)
           {printf("%3d",a[i][j]);
           if(j!=N)
           putchar(' ');
           }
           putchar('\n');
      }


    return 0;


}
0 0