湖北汽车工业学院 数据结构实验
#include<stdio.h>
int main()
{
int n,i,j,k;
printf("请输入魔方镇的阶数!");
scanf("%d",&n);
if(n%2==0)
{
printf("输入的阶数为偶数!请重新输入奇数的阶数!");
scanf("%d",&n);
}
int a[n][n];
for(i=0;i<n;i++)
for(j=0;j<n;j++)
a[i][j]=0;
j=0;
k=(n-1)/2;
a[j][k]=1;
for(i=2;i<=(n*n);i++)
{
if((j==0)&&(k+1!=n))
{
j=n-1;
k++;
if(a[j][k]>0)
{
j=1;
k--;
}
a[j][k]=i;
}
else{
if((j!=0)&&(k+1==n))
{
j--;
k=0;
if(a[j][k]>0)
{
j=j+2;
k=n-1;
}
a[j][k]=i;
}
else{
if((j!=0)&&(k+1!=n))
{
j--;
k++;
if(a[j][k]>0)
{
j=j+2;
k--;
}
a[j][k]=i;
}
else
if((j==0)&&(k+1==n))
{
j=n-1;
k=0;
if(a[j][k]>0)
{
j=1;
k=n-1;
}
a[j][k]=i;
}
}
}
}
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
printf("%4d ",a[i][j]);
printf("\n");
}
return 0;
}