Nisy 发表于 2009-7-28 21:18:09

N宫格C源码

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

void Show(int * a,int n)
{
      int i;
      for(i=0;i<(n*n);i++)
      {
            if(!(i%n))
            printf("\r\n");
            printf("%02d ",*(a+i));      
      }
            printf("\r\n");
}

void NGongGe(int * a,int n)
{
      int i,j,k;
      i=n-1;      
      j=n/2;      
      *(a+i*n+j)=1;
            for(k=2;k<=n*n;k++)
      {               
//         if(*(a+((i+1+n)%n)*n+((j-1+n)%n)))// 两种算法均可
//         {
//             i=(i-1+n)%n;
//             *(a+i*n+j)=k;
//             continue;
//         }
      i=(i+1+n)%n;
                j=(j-1+n)%n;
      if(*(a+i*n+j))
      {
            i=(i-2+n)%n;
            j=(j+1+n)%n;
            *(a+i*n+j)=k;
            continue;
      }
                *(a+i*n+j)=k;
      }
      Show(a,n);
}

int main()
{
      int n,* a;
      scanf("%d",&n);
      a=(int *)malloc(sizeof(int)*n*n);
      if(!a)return 0;
      memset(a,0,sizeof(int)*n*n);
      NGongGe(a,n);
      free(a);
      return 0;
}



期待一下 100! 的代码 写过这个程序的朋友欢迎分享下哈 ~~
页: [1]
查看完整版本: N宫格C源码