#include "stdio.h"
#include
int main(int argv,char *argc[]){
int n,i,j,k,*p,**q;
printf("Input n(int 0 if(scanf("%d",&n)!=1 || n<1 || n>19 || !(n&1)){ printf("Input error, exit...\n"); return 0; } p=(int *)malloc(sizeof(int)*n*n); if(!p || !(q=(int **)malloc(sizeof(int *)*n))){ printf("Application failure, exit...\n"); return 0; } for(q[0]=p,i=1;i for(i=0;i for(j=0;j for(k=1,i=n/2,j=n-1;k<=n*n;k++,i++,j++){ if(j==n && i j-=n; else if(i==n && j i-=n; else if(j==n && i==n || q[i][j]){ j-=2; i-=1; } q[i][j]=k; } printf("\nThe results are as follows:\n"); for(i=0;i for(j=0;j printf("\n"); } free(p); free(q); return 0; } 运行样例: