这个程序的代码还是有点绕,我还在看,不过我找出问题的所在了
源程序中给数组赋值的时候肯能会越界,需要对越界的情况作出处理:
程序代码:
运行结果:
1 3 4 10 11 21
2 5 9 12 20 22
6 8 13 19 23 30
7 14 18 24 29 31
15 17 25 28 32 35
16 26 27 33 34 36
请按任意键继续. . .
这次对了吧,大兵?
源程序中给数组赋值的时候肯能会越界,需要对越界的情况作出处理:
程序代码:#include <stdio.h>
#define N 6
int count=1; //初值
int main(int argc,char **argv)
{
int a[N][N]={0};
int i,j;
int n;
a[0][0] = count++;
for(n=1;n<(2*N-2);n++)
{
if(n%2==0)//偶数
{
for(i=0,j=n;((j>=0) && (i<=n));i++,j--)
{
//加了这个条件,控制数组的越界
if(i>=N || j>=N) continue;
if (a[i][j] == 0 )
{
a[i][j] = count++;
}
}
}
else //奇数
{
for(i=n,j=0;((i>=0) && (j<=n));i--,j++)
{
//加了这个条件,控制数组的越界
if(i>=N || j>=N) continue;
if (a[i][j] == 0 )
{
a[i][j] = count++;
}
}
}
}
a[N-1][N-1] = count++;
for(i = 0;i < N;i++)//输出结果
{
for(j = 0;j < N;j++)
{
printf("%3d ",a[i][j]);
}
printf("\n");
}
return 0;
}
运行结果:
1 3 4 10 11 21
2 5 9 12 20 22
6 8 13 19 23 30
7 14 18 24 29 31
15 17 25 28 32 35
16 26 27 33 34 36
请按任意键继续. . .
这次对了吧,大兵?


Edsger Dijkstra:算法+数据结构=程序








