求 !C语言3*3九宫格怎么写
横排相加都相等15 算出所有可能、、想好久了 没点思路、、大哥大姐帮忙写下、
------解决方案--------------------
我很早之前写的一个,仅限4阶和奇数阶,源码如下:
#include
#include
void main()
{
int n,i,j,t1=0,t2,t3=0,arr[100][100]={0},m,k;
printf("输入魔方阵的阶数:\n");
scanf("%d",&n);
t2=n*n+1;
if(n%4==0)
{
for(i=0;i
{
for(j=0;j
{
++t1;
--t2;
if((abs(i-j)%4==0)
------解决方案--------------------
(i+j==n-1))
{
arr[i][j]=t2;
}
else
{
arr[i][j]=t1;
}
}
}
printf("%d阶的魔方阵为:\n",n);
for(i=0;i
{
for(j=0;j
{
printf("%5d",arr[i][j]);
}
printf("\n\n");
}
}
if((n-1)%2==0)
{
for(i=0;i
{
++t3;
if(i==0)
{
arr[0][1]=t3;
m=0;
k=1;
continue;
}
if((m==0)&&(k
{
if(arr[n-1][k+1]!=0)
{
arr[m+1][k]=t3;
m=m+1;
k=k;
}
else
{
arr[n-1][k+1]=t3;
m=n-1;
k=k+1;
}
}
else if(((m>0)&&(m
{
if(arr[m-1][0]!=0)
{
arr[m+1][k]=t3;
m=m+1;
k=k;
}
else
{
arr[m-1][0]=t3;
m=m-1;
k=0;
}
}
else if((m==0)&&(k==n-1))
{
if(arr[n-1][0]!=0)
{
arr[m+1][k]=t3;
m=m+1;
k=k;
}
else
{
arr[n-1][0]=t3;
m=n-1;
k=0;
}
}
else if(((m>0)&&(m
{
if(arr[m-1][k+1]!=0)
{
arr[m+1][k]=t3;
m=m+1;
k=k;
}
else
{
arr[m-1][k+1]=t3;
m=m-1;
k=k+1;
}
}
else if(((m==n-1))&&(k
{
if(arr[m-1][k+1]!=0)
{
arr[0][k+1]=t3;
m=0;
k=k+1;
}
else
{
arr[m-1][k+1]=t3;
m=m-1;
k=k+1;
}
}
else if((m==n-1)&&(k==n-1))
{
if(arr[n-2][0]!=0)
{
arr[0][n-1]=t3;
m=0;
k=n-1;
}
else
{
arr[m-1][0]=t3;
m=m-1;
k=0;
}
}
}
printf("%d阶的魔方阵为:\n",n);
for(i=0;i
{
for(j=0;j
{
printf("%5d",arr[i][j]);
}
printf("\n\n");
}
}
getch();
}