如矩阵
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
找出规律,并打印出一个N*N的矩阵;规律就是从首坐标开始顺时针增大,所以
1.需要一个变量m来递增记录进度。
2.注意各个转折点。
具体代码实现如下:
#include#define N 5int a[N][N]={ 0};void fun(int n){ int i,j; int m=1; for(i=0;i i;j--) //下边的一行 { a[n-i-1][j]=m++; } for(j=n-i-1;j>i;j--) //左边的一列 { a[j][i]=m++; } } if(n%2==1) a[n/2][n/2]=m;}int main(void){ int i,j; fun(N); for(i=0;i
别忘记考虑到n为奇数的情况下,需要加上最后的判断
结果如下:
[root@master tmp]# ./2 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