第一次写博客,有不足的地方还希望各位多多指教。

n阶螺旋数字方阵,结果是这样的,这里说的是顺时针的,逆时针的原理类似。

代码如下


 1 #include <stdio.h>
 2 void main()
 3 {//n阶螺旋数字方阵,先把数字螺旋输入到数组中,
 4 //然后把数组中的数字按顺序输出
 5     int n,h,l,i,x=1;
 6     int a[100][100];
 7     printf("请输入一个整数n\n");
 8     scanf("%d",&n);
 9     h=0;//
10     l=n-1;//
11     do
12     {//这边的注释就讲解第一圈(最外面一圈)的
13         for(i=(n-1-l);i<=l;i++)//第一行。n个
14             a[h][i]=x++;
15         for(i=h+1;i<=(n-1-h);i++)//最后一列。n-1个
16             a[i][l]=x++;
17         for(i=l-1;i>=(n-1-l);i--)//最后一行。n-1个
18             a[n-1-h][i]=x++;
19         h++;//下个循环h要加1,而且为下一个for循环减少一个行数
20         for(i=(n-1-h);i>=h;i--)//第一列(比最后一列少输入一个)n-2个(所以前面刚好h++让这边少了一个)
21             a[i][n-1-l]=x++;
22         l--;//下个循环列要减1
23     }while(x<=(n*n));
24     for(i=0;i<n;i++)
25     {//把数组内的数字按顺序输出
26         for(h=0;h<n;h++)
27             printf("%5d,",a[i][h]);
28         printf("\n");
29     }
30 }