这个程序的代码还是有点绕,我还在看,不过我找出问题的所在了
源程序中给数组赋值的时候肯能会越界,需要对越界的情况作出处理:
运行结果:
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:算法+数据结构=程序