分类: C/C++
2010-04-20 16:25:35
/*print array */ #include /*to track the array*/
static int off=1,per_off=1,pn=1,two=2,iorj=0; //when i,iorj=1 void track(int* i,int* j)
{ iorj?((*i)+=pn):((*j)+=pn); --per_off; if(per_off==0) { iorj=~iorj&0x1; per_off=off; --two; if(two==0) { ++off; per_off=off; pn*=-1; two=2; } } return; } void printa(int in,int a[][in])
{ int i,j; for(i=0;i for(j=0;j printf("%2d ",a[i][j]); } putchar('\n'); } putchar('\n'); } int main(void)
{ int in; int count=1; puts("Input a num <10:"); scanf("%d",&in); int a[in][in]; int i,j;
int n=0; for(i=0;i for(j=0;j a[i][j]=++n; } } printa(in,a); n=1; //for(i=(in-1)/2,j=(in-1)/2;i!=(in%2==0?(in-1):0)&&j!=(in%2==0?0:(in-1));track(&i,&j)) for(i=(in-1)/2,j=(in-1)/2;n!=in*in+1;track(&i,&j)) { #ifdef DEBUG printf("i=%d,j=%d,n\n",i,j,n); #endif a[i][j]=n++; } printa(in,a); return 0; } |