网站程序开发教程,绍兴网站建设,运维网页平台维护,成都建筑网站建设数字转圈 题干输入整数 N#xff08;1≤N≤9#xff09;#xff0c;输出如下 N 阶方阵。 若输入5显示如下方阵#xff1a; * 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*输入样例3输出样例* 1*…数字转圈 题干输入整数 N1≤N≤9输出如下 N 阶方阵。 若输入5显示如下方阵 * 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*输入样例3输出样例* 1** 2** 3* * 8** 9** 4* * 7** 6** 5*
思路 代码
#define M 9
#includestdio.h
void Print(int a[M][M],int n) {int i,j;for (i 0; i n; i) {for (j 0; j n; j) {printf(*%2d*, a[i][j]);}printf(\n);}
}
void fz(int a[M][M], int n) {int k, hang 0, lie 0, hangt, liet, fx0, wy[4][2] { {0,1},{1,0},{0,-1},{-1,0} };for (k 1; k n*n; k) {a[hang][lie] k;hangt hang wy[fx][0];liet lie wy[fx][1];if (hangt n || liet n || hangt 0 || liet 0 || a[hangt][liet] ! 0) {fx (fx 1) % 4;hangt hang wy[fx][0];liet lie wy[fx][1];}hang hangt;lie liet;}
}
int main() {int a[M][M] { 0 },n;scanf(%d, n);fz(a, n);Print(a, n);return 0;
}