标题:[求助]关于方阵的一个简单问题
只看楼主
皮皮鲁
Rank: 1
等 级:新手上路
帖 子:46
专家分:0
注 册:2006-7-27
 问题点数:0 回复次数:13 
[求助]关于方阵的一个简单问题
刚刚学习C,很多不懂的地方,这是课本上的习题,请大家帮忙写一写,谢了。

题目是这样的:

打印一个由1到n^2的自然数组成的魔方阵。要求,每一行、每一列、对角线之和均相等。
例如:三阶魔方阵为
8 1 6
3 5 7
4 9 2
搜索更多相关主题的帖子: 方阵 简单问题 
2006-08-07 17:41
jyycom
Rank: 1
等 级:新手上路
帖 子:36
专家分:0
注 册:2006-5-18
得分:0 
我觉得你应该勤用baidu或者google
这个题的代码很多的

重新学习C语言!
2006-08-07 20:54
wuyufenjr
Rank: 1
等 级:新手上路
帖 子:62
专家分:0
注 册:2006-7-20
得分:0 

你自己去搜索一下,论坛里面有很多都是关于魔方阵的贴子.里面有很多思路!

2006-08-07 20:54
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
得分:0 
[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-08-07 21:04
皮皮鲁
Rank: 1
等 级:新手上路
帖 子:46
专家分:0
注 册:2006-7-27
得分:0 




多谢朋友们的建议!

[此贴子已经被作者于2006-8-8 10:28:52编辑过]

2006-08-07 21:05
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
得分:0 

#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-08-07 21:25
皮皮鲁
Rank: 1
等 级:新手上路
帖 子:46
专家分:0
注 册:2006-7-27
得分:0 



多谢楼上的朋友们!

[此贴子已经被作者于2006-8-8 10:26:21编辑过]

2006-08-07 21:50
无心剑
Rank: 1
等 级:新手上路
帖 子:45
专家分:0
注 册:2006-8-4
得分:0 
6楼的程序不能保证每一行、每一列和对角线的和都相等阿!!只有N为奇数时才行啊!

[此贴子已经被作者于2006-8-8 15:22:38编辑过]


2006-08-08 15:17
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
得分:0 
以下是引用无心剑在2006-8-8 15:17:11的发言:
6楼的程序不能保证每一行、每一列和对角线的和都相等阿!!只有N为奇数时才行啊!

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


倚天照海花无数,流水高山心自知。
2006-08-08 19:40
soft_wind
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:1430
专家分:0
注 册:2006-4-5
得分:0 

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


对不礼貌的女生收钱......
2006-08-08 20:25



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-82641-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.341616 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved