#include<stdio.h>
int a[200][200]={0} /*200为我自己定义的,可根据需要修改*/
{int p,k,i,j
p=0k=n/2
a[p][k]=1
for(i=2i<=n*ni++)
{if((i-1)%n==0)
{if(p==n-1)p=0
else p++
}
else
{if(p==0)p=n-1
else p--
if(k==n-1)k=0
else k++
亩型 }
a[p][k]=i
}
}
void Ou4bZ(int n) /*偶数4的倍数魔方阵算法*/
{int a1[200][200],a2[200][200],i,j
for(i=0i<ni++)
for(j=0j<nj++)
{if(i%4==0||(i+1)%4==0)a1[i][j]=j+1
else a1[i][j]=n-j
}
for(j=0j<nj++)
for(i=0i<ni++)
{if(j%4==0||(j+1)%4==0)a2[i][j]=n*i
else a2[i][j]=(n-1-i)*n
}
for(i=0i<ni++)
for(j=0j<nj++)
a[i][j]=a1[i][j]+a2[i][j]
}
void N_4OuZ(int n) /*偶数培旦非4的倍数魔方阵算法*/
{int s[200],x[200],z[200],y[200],i,p,k,b[200][200]={0}
z[0]=4z[1]=10s[0]=2s[1]=9
for(i=2i<n/2-1i++)
{if(i%2==0)
{z[i]=z[i-1]+1
s[i]=s[i-1]+3
}
else
{z[i]=z[i-1]+7
s[i]=s[i-1]+5
}
}
y[0]=3y[1]=5x[0]=1x[1]=6
for(i=2i<n/2i++)
{if(i%2==0)
{y[i]=y[i-1]+3
x[i]=x[i-1]+1
}
else
{y[i]=y[i-1]+5
x[i]=x[i-1]+7
}
}
Ou4bZ(n-2)
for(p=1p<n-1p++)
for(k=1k<n-1k++)
b[p][k]=a[p-1][k-1]+(n*n-(n-2)*(n-2))/2
for(p=1p<n-1p++)
for(k=1k<n-1k++)
a[p][k]=b[p][k]
for(i=0i<n/2-1i++)
{a[0][i]=s[i]
a[n-2-i][0]=z[i]
}
for(i=0i<n/2i++)
{a[n-1][n-2-i]=x[i]
a[i][n-1]=y[i]
}
for(i=0i<ni++)
{if(i==0)a[n-1][0]=n*n+1-a[0][n-1]
else if(i<n/2-1)a[n-1][i]=n*n+1-a[0][i]
else if(i==n-1)a[n-1][n-1]=n*n+1-a[0][0]
else a[0][i]=n*n+1-a[n-1][i]
if(i>0&&i<n/2)a[i][0]=n*n+1-a[i][n-1]
if(i>=n/2&&i<n-1)a[i][n-1]=n*n+1-a[i][0]
}
}
void main()/*主函数*/
{int i,j,n
lp:printf("JieShu(1~200): ")
scanf("%d",&n)
if(n<1||n==2||n>200) /*由于没有二阶魔方阵,"n>200"为超出定义范围*/
{printf("SCANF ERROR!\n")
goto lp
}
if(n%2==0)
{if(n%4==0)Ou4bZ(n)
else N_4OuZ(n)
}
else JSZ(n)
for(i=0i<迅中猜ni++)
{for(j=0j<nj++)
printf("%5d",a[i][j])
printf("\n")
}
goto lp
}
#include<stdio.h>void main(){
int i,j,n,row,col,a[11][11]
printf("please input n:")
scanf("%d",&n)
col=n/2//
row=0//
for(i=1i<=n*ni++){ //答局i<=n*n,楼主写错了,如果想保持为<可做相应修改
if(row==-1) // 不明白再联系吧
row=n-1
if(col==n)
col=0 //禅帆
a[row][col]=i//
if(i%n==0)
row++
else{
row--
col++
}
}
for(i=0i<ni++){
for(j=0j<nj++)
printf("贺举雹%10d",a[i][j])
printf("\n")
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)