#include<iostream.h>
#include <stdio.h>
void mofang(int **a,int n)
{
if(n%2==0)
{
}
else
{
int i,j;
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
a[i][j]=0;
}
int num=1;
a[0][n/2]=num;
num++;
i=0;
j=n/2;
int ii,jj;
while(num<=n*n)
{
ii=i;
jj=j;
if(i==0)
i=n-1;
else
i--;
if(j==n-1)
j=0;
else
j++;
if(a[i][j]==0)
a[i][j]=num++;
else
{
if(ii==n-1)
{
ii=0;
i=ii;
}
else
i=ii+1;
j=jj;
a[i][j]=num++;
}
}
}
}
int main()
{
int n,i,j;
cout<<"please input the base number:";
cin>>n;
while(n%2==0)
{
cout<<"the number must be the odd!"<<endl;
cout<<"please input the base number:";
cin>>n;
}
int **p=new int*[n];
for(i=0;i<n;i++)
{
p[i]=new int[n];
}
mofang(p,n);
cout<<endl<<"the magic cube is:"<<endl;
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
printf("%2d ",p[i][j]);
cout<<endl;
}
for(i=0;i<n;i++)
delete []p[i];
delete []p;
return 0;
}