没好的算法回很麻烦的啊```
程序是要人输入方正的边长```事先不知道``所以用数组不可以或是很不方便`
应该思考下有没有好的方法``
程序是要人输入方正的边长```事先不知道``所以用数组不可以或是很不方便`
应该思考下有没有好的方法``

女施主``我给你``送茶来了```师太``你就从了老衲吧``
代码本天成~~~妙头偶得之```

程序代码:#include <stdio.h>
#include <alloc.h>
void main()
{
int n,i,j,k,l,m,*buffer;
printf(" n=? \n");
scanf("%d",&n);
buffer=(int*)malloc(n*n*sizeof(int));
if(!buffer)
return;
buffer[n/2*n+n/2]=n*n; /*为中心元素赋值,当n为奇数时需要。*/
for(l=n-1,i=j=0,k=1;l>0;i++,j++,l-=2)
{
for(m=0;m<l;m++)
buffer[i*n+(j++)]=k++;
for(m=0;m<l;m++)
buffer[(i++)*n+j]=k++;
for(m=0;m<l;m++)
buffer[i*n+(j--)]=k++;
for(m=0;m<l;m++)
buffer[(i--)*n+j]=k++;
}
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
printf("%3d ",buffer[i*n+j]);
}
printf("\n");
}
free(buffer);
getch();
}