具体思路是什么啊?我看不懂,那位帮我解释一下呢?

来源:百度知道 编辑:UC知道 时间:2024/07/03 01:03:37
#include <stdio.h>
void main()
{
int n=5,a[5][5];
int X,X0,i,YY,XX,j;
int v = 1;
X=0; X0 = n - 1;

for (i = 0;i <= n / 2; i++)
{
j = i;
for (XX = X; XX <= X0; XX++)
{
a[XX][j]=v;
v++;
};
for (YY = j+1;YY <= X0; YY++)
{
a[X0][YY]=v;
v++;
};
for (XX = X0-1; XX >= X; XX--) ´
{
a[XX][X0]=v;
v++;
};
for (YY = X0-1;YY >= X+1; YY--)
{
a[X][YY]=v;
v++;
};
++X; --X0;
}

for (YY = 0;YY < n;YY++)
{
for (XX = 0;XX < n; XX++)
{
printf("%3d",a[XX][YY]); }
printf("\n");
}
}

输出结果:
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
而a[5][5] 实际的值为 1 16 15 14 13
2 17 24 23 12
3 18 25 22 11
4 19 20 21 10
5 6 7 8 9

for (i = 0;i <= n / 2; i++) 循环三次
首先第一次是 j=0 时讨论
for (XX = X; XX <= X0; XX++)
{
a[XX][j]=v;
v++;
};
是给数组的第一列赋值 即 1,2,3,4,5

for (YY = j+1;YY <= X0; YY++)
{
a[X0][YY]=v;
v++;
};
是给数组第四行的元素从第1列开始赋值 即 6,7,8,9

for (XX = X0-1; XX >= X; XX--) ´
{
a[XX][X0]=v;
v++;
};
是给数组第四列的元素从第3行开始赋值 10,11,12,13

for (YY = X0-1;YY >= X+1; YY--)
{
a[X][YY]=v;
v++;
};
是给数组第0行的元素从第3列到第1列赋值 14,15,16

第一次完
接着第二次时 ++X; --X0; 均减一

还有两次就简单了 你自己推推 得到a[5][5] 值是第二个方正

下面是最后输出 它把行和列