#
include<stdio.
h>
#
include<string.
h>
int main()
{
1//
int i,j,
n,
sum=0,p[10][10];
int x,y;
loop:printf(
"输入n阶矩阵 ");
scanf(
"%d",&
n);
memset(p,0,sizeof(p));
//使数组中的每个值首先都为0
//
2//
int i,j,n,sum=
0,**p;
int x,y;
loop:
printf(
"输入n阶矩阵 ");
scanf(
"%d",&n);
p=(
int **)
malloc(n*
sizeof(
int));
for(i=
0;i<n;i++)
{
p[i]=(
int *)
malloc(n*
sizeof(
int));
}
memset(p,
0,
sizeof(p));
//使数组中的每个值首先都为0
//
p[
0][
0]=
1;
sum=
1;
x=
0;
y=
0;
while(sum<n*n)
//按照蛇形赋值
{
while(x+
1<n&&p[x+
1][y]==
0) p[++x][y]=++sum;
while(y+
1<n&&p[x][y+
1]==
0) p[x][++y]=++sum;
while(x-
1>=
0&&p[x-
1][y]==
0) p[--x][y]=++sum;
while(y-
1>=
0&&p[x][y-
1]==
0) p[x][--y]=++sum;
}
printf(
"输出n阶矩阵\n");
for(i=
0;i<n;i++)
{
for(j=
0;j<n;j++)
{
printf(
"%3d",p[i][j]);
}
printf(
"\n");
}
goto loop;
return
0;
}
当我用第一种方法去定义一个n*n的数组,来打印蛇形数组时,程序的运行结果是
而当我用第2种方法去动态分配内存给一个n*n的数组,来打印蛇形数组时,程序的运行结果是
除了双斜杠内的程序内容不同之外,其余程序的内容都一样的,为什么会出现不同的运行结果,求解答