0
点赞
收藏
分享

微信扫一扫

求5×5阶螺旋方阵

木匠0819 2022-02-16 阅读 58

    自述题目:收下是一个5×5阶螺旋方阵。设计一个算法输出该形式的n×n(n<10)阶方阵(顺时针方向旋进)。

 1   2   3   4   5

16  17  18  19   6

15  24  25  20   7

14  23  22  21   8

13  12  11  10   9

程序说明与注释:

# include<stdio.h>

# define MaxLen 10

void fun(int a[MaxLen][MaxLen],int n)

{

       int i,j,k=0,m;

       if( n % 2==0)           //m = 「n/2」

              m=n/2;

       else

              m=n/2+1;

       for(i=0;i<m;i++)

       {

              for(j=i;j<n-i;j++)        //产生该圈上横行的数字

              {

                     k++;

                     a[i][j]=k;

              }

              for(j=i+1;j<n-i;j++)        //产生该圈右竖列的数字

              {

                     k++;

                     a[j][n-i-1]=k;

              }

              for(j=n-i-2;j>=i;j--)       //产生该圈下横行的数字

              {

                     k++;

                     a[n-i-1][j]=k;

              }

              for(j=n-i-2;j>=i+1;j--)     //产生该圈左竖列的数字

              {

                     k++;

                     a[j][i]=k;

              }

       }

}

void main()

{

       int n,i,j;

       int a[MaxLen][MaxLen];

       printf("\n");

       printf("输入n(n<10):");

       scanf("%d",&n);

       fun(a,n);

       printf("%d阶数字方阵如下:\n",n);

       for(i=0;i<n;i++)

       {

              for(j=0;j<n;j++)

                     printf("%4d",a[i][j]);

              printf("\n");

       }

       printf("\n");

}

运行结果

 

举报

相关推荐

0 条评论