请高手进来帮忙解决魔方矩阵的问题,谢谢了..
看了楼下兄弟的回复,我方才省悟,初来贵宝地,不懂规矩,请多多原谅.我要认真学习版规.
魔方矩阵的问题 就是输入1-n的自然数,
形成如3*3 或5*5的矩阵,这个矩阵每行的数之和和每列的数之和以及对角线的数之和都是相等的.
我这错在哪了? 得不到我想要的东东啊.
顺便问下,魔方阵这个题目是不是很难?老潭数组那章的习题我大部分都能做出来,最次也都有个思路.
但是这个我自己做做不出来,一点思路都没..
我是抄老潭题库的答案的,结果还不对,郁闷.
发现老潭的书上的错误不少啊.
前面就有类似的问题.
偶是初学c的新手.帮帮忙.谢谢了.
#include <stdio.h>
main()
{int a[16][16],i,j,k,p,m,n;
p=1;
while(p==1)
{printf("请输入n.(1<n<=15,n是奇数.)\n");
scanf("%d",&n);
if((n!=0)&&(n<=15)&&(n%2!=0))
{printf("矩阵阶数是%d\n.",n);
p=0;
}
}
for(i=0;i<=n;i++)
for(j=1;j<=n;j++)
a[i][j]=0;
j=n/2+1;
a[1][j]=1;
for(k=2;k<=n*n;k++)
{i=i-1;
j=j+1;
if((i<1)&&(j>0))
{i=i+2;j=j-1;}
else{if(i<1)i=n;
if(i>n)j=1;
}
if(a[i][j]==0)
a[i][j]=k;
else
{i=i+2;
j=j-1;
a[i][j]=k;
}
}
for(i=1;i<=n;i++)
{for(j=1;j<=n;j++)
printf("%3d",a[i][j]);
printf("\n");
}
}
[此贴子已经被作者于2007-1-9 15:30:23编辑过]