一道有关螺旋矩阵的问题,输出错误,还望大家指点一二,谢谢
#include<stdio.h>#define N 100
#define down 1
#define left 2
#define up 3
#define right 4
void main()
{int n,i,j,s,dir=right,count=0;
int num=2,lenth=1;
int a[N][N];
scanf("%d",&n);
i=j=(n+1)/2;
a[i][j]=1;
while(num<=n*n)
{for(s=0;s<lenth;s++)
{switch(dir)
{case left: a[i][--j]=num++;break;
case right: a[i][++j]=num++;break;
case up: a[--i][j]=num++;break;
case down: a[++i][j]=num++;break;
defaule: break;
}
}
count++;
if(count==2)
{count=0;
lenth++;
}
dir=(dir+1)%4;
}
for(i=1;i<=n;i++)
{for(j=1;j<=n;j++)
printf("%3d",a[i][j]);
printf("\n");
}
}
输入 5
本应该输出为
21 22 23 24 25
20 7 8 9 10
19 6 1 2 11
18 5 4 3 12
17 16 15 14 13
但是我编写的输出为
0 7 0 0 0
0 8 1 2 0
0 9 3 4 0
11 10 0 0 0
怎么回事?我找不出来!希望大家帮忙
[ 本帖最后由 阑珊灯火 于 2009-10-29 10:35 编辑 ]