题目是这样的:
打印一个由1到n^2的自然数组成的魔方阵。要求,每一行、每一列、对角线之和均相等。
例如:三阶魔方阵为
8 1 6
3 5 7
4 9 2
----------------解决方案--------------------------------------------------------
我觉得你应该勤用baidu或者google
这个题的代码很多的
----------------解决方案--------------------------------------------------------
你自己去搜索一下,论坛里面有很多都是关于魔方阵的贴子.里面有很多思路!
----------------解决方案--------------------------------------------------------
[UseMoney=1]
便宜了
#include<stdio.h>
#define N 15
int main()
{
int i,j,n,t,k,m,data[N][N];
printf("输入一个小于16的奇数:");
scanf("%d",&n);
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
data[i][j]=0;
}
}
i=0;j=n/2;data[i][j]=1;
t=2;
while(t<=n*n)
{
k=i,m=j;//记录上个数的位置
i=i-1;
j=j+1;
if(i<0) i=n-1;
if(j>n-1) j=0;
//printf("%-3d%-3d",i,j);
if(data[i][j]==0)
{
data[i][j]=t;
//printf("**%-3d%-3d%-3d\n",i,j,t);
}
else
{
i=k+1;
if(i>n-1) i=0;
j=m;
data[i][j]=t;
//printf("*%-3d%-3d%-3d\n",i,j,t);
}
t++;
}
printf("%d阶的魔方矩阵如下!\n",n);
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
printf("%-4d",data[i][j]);
}
printf("\n");
}
return(0);
}
----------------解决方案--------------------------------------------------------
多谢朋友们的建议!
[此贴子已经被作者于2006-8-8 10:28:52编辑过]
----------------解决方案--------------------------------------------------------
#include<stdio.h>
#define N 15
int main()
{
int i,j,n,t,k,m,data[N][N];
printf("输入一个小于16的奇数:");
scanf("%d",&n);
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
data[i][j]=0;
}
}
i=0;j=n/2;data[i][j]=1;
t=2;
while(t<=n*n)
{
k=i,m=j;//记录上个数的位置
i=i-1;
j=j+1;
if(i<0) i=n-1;
if(j>n-1) j=0;
//printf("%-3d%-3d",i,j);
if(data[i][j]==0)
{
data[i][j]=t;
//printf("**%-3d%-3d%-3d\n",i,j,t);
}
else
{
i=k+1;
if(i>n-1) i=0;
j=m;
data[i][j]=t;
//printf("*%-3d%-3d%-3d\n",i,j,t);
}
t++;
}
printf("%d阶的魔方矩阵如下!\n",n);
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
printf("%-4d",data[i][j]);
}
printf("\n");
}
return(0);
}
----------------解决方案--------------------------------------------------------
多谢楼上的朋友们!
[此贴子已经被作者于2006-8-8 10:26:21编辑过]
----------------解决方案--------------------------------------------------------
6楼的程序不能保证每一行、每一列和对角线的和都相等阿!!只有N为奇数时才行啊!
[此贴子已经被作者于2006-8-8 15:22:38编辑过]
----------------解决方案--------------------------------------------------------
6楼的程序不能保证每一行、每一列和对角线的和都相等阿!!只有N为奇数时才行啊!
本来就只有奇数阵才可以,所以我输入中有要求输入奇数.难道你没有看到?
----------------解决方案--------------------------------------------------------
其他的也行,只是麻烦许多,
我以前编过,不过现在让我写,不知道那个规则,我肯定也是想不起来的,哈
----------------解决方案--------------------------------------------------------