当前位置: 代码迷 >> C语言 >> [求助]关于方阵的一个简单问题
  详细解决方案

[求助]关于方阵的一个简单问题

热度:114   发布时间:2006-08-07 17:41:23.0
[求助]关于方阵的一个简单问题
刚刚学习C,很多不懂的地方,这是课本上的习题,请大家帮忙写一写,谢了。

题目是这样的:

打印一个由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);
}

[/UseMoney]
----------------解决方案--------------------------------------------------------




多谢朋友们的建议!

[此贴子已经被作者于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编辑过]



----------------解决方案--------------------------------------------------------
以下是引用无心剑在2006-8-8 15:17:11的发言:
6楼的程序不能保证每一行、每一列和对角线的和都相等阿!!只有N为奇数时才行啊!

本来就只有奇数阵才可以,所以我输入中有要求输入奇数.难道你没有看到?
----------------解决方案--------------------------------------------------------

其他的也行,只是麻烦许多,
我以前编过,不过现在让我写,不知道那个规则,我肯定也是想不起来的,哈


----------------解决方案--------------------------------------------------------
  相关解决方案