编辑代码

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
	int n,**a=NULL,i,j,k;
	while(1)
	{
		scanf("%d",&n);
		if(n%2 == 1)
			break;
	}
	a=(int**)malloc(sizeof(int*)*n);
	for(i=0; i<n; i++)
	{
		a[i]=(int*)malloc(sizeof(int)*n);
		memset(a[i],0,sizeof(int)*n);
	}
	i=0;
	j=n/2;
	a[i][j]=1;
	for(k=2; k<=n*n; k++)
	{
		i--;
		j++;
		if(i<0 && j==n)
		{
			i+=2;
			j--;
		}
		if(i<0)
			i=n-1;
		if(j == n)
			j=0;
		if(a[i][j])
		{
			i+=2;
			j--;
		}
		a[i][j]=k;
	}
	for(i=0; i<n; i++)
	{
		for(j=0; j<n; j++)
			printf("%-5d",a[i][j]);
		free(a[i]);
		printf("\n");
	}
	free(a);
	return 0;
}