第一次写博客,有不足的地方还希望各位多多指教。
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 }