- UID
- 2198
注册时间2005-6-29
阅读权限255
最后登录1970-1-1
副坛主
该用户从未签到
|
#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! 的代码 写过这个程序的朋友欢迎分享下哈 ~~ |
|