没好的算法回很麻烦的啊```
程序是要人输入方正的边长```事先不知道``所以用数组不可以或是很不方便`
应该思考下有没有好的方法``
程序是要人输入方正的边长```事先不知道``所以用数组不可以或是很不方便`
应该思考下有没有好的方法``
女施主``我给你``送茶来了```师太``你就从了老衲吧``
代码本天成~~~妙头偶得之```
#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(); }