C魔方!
#include <stdio.h>
#define NUM 50//预定义一个50*50的整形数组,可能大了?可能小了?
main()
{
int s[NUM][NUM],a=0,i=0,j,l;
while(a<3 || a%2==0 || a>NUM)
{
system("cls");
printf("input the number:"); //输入大于2,小于50的奇数a
scanf("%d",&a);
j=a/2;
for(l=1;l<=a*a;l++) //从1到a得平方的循环
{
s[i][j]=l;//将l逐一增加传值给一定得整形数组内的成员
//printf("s[%d][%d]=%d\n",i,j,s[i][j]); //可以打印赋值顺序
i==0?(j==a-1?i=1:(j++,i=a-1)):(j==a-1?i--,j=0:(s[i-1][j+1]?i++:(i--,j=j+1)));//。。。。。。。。。。。。
}
for(i=0;i<a;i++)
{
for(j=0;j<a;j++)
printf("%8d",s[i][j]);
printf("\n");
}
}