在下面的5×5魔方矩阵中,每一行、每一列、每一对角线上的元素之和都是相等的,试编写程序将这些魔方

myhz1988
推荐于2017-09-26 · TA获得超过3260个赞
知道小有建树答主
回答量:316
采纳率:100%
帮助的人:122万
展开全部
C语言如下:
#include<stdio.h>
int main()
{
int a[100][100],x;/*初始化*/
int i,j,m,n,temp;
printf("输出魔方矩阵n=");
scanf("%d",&x);
while(x)
{
if(!(x%2))
{printf("你输入了偶数,很遗憾本程序将退出");
return 0;
}

else
{
for(i=0;i<x;i++)
for(j=0;j<x;j++)
a[i][j]=0;
i=0;
j=x/2;
a[i][j]=1;/*第一行中间填1*/
for(temp=2;temp<=x*x;temp++)/*循环24次,填剩余的24个数*/
{
m=i;
n=j;
i--;
j++;
if(i<0)
i=x-1;
if(j>x-1)
j=0;
if(a[i][j]!=0)
{i=m+1;
j=n;
}
a[i][j]=temp;
}
for(i=0;i<x;i++)
{
for(j=0;j<x;j++)
printf("%4d",a[i][j]);
printf("\n");
}
}
printf("输出魔方矩阵n=");
scanf("%d",&x);
}
return 0;
}
本程序只适合基数,解释如下:
N 为奇数时
  (1) 将1放在第一行中间一列;   (2) 从2开始直到n×n止各数依次按下列规则存放:   按 45°方向行走,如向右上   每一个数存放的行比前一个数的行数减1,列数加1   (3) 如果行列范围超出矩阵范围,则回绕。   例如1在第1行,则2应放在最下一行,列数同样加1;   (4) 如果按上面规则确定的位置上已有数,或上一个数是第1行第n列时,   则把下一个数放在上一个数的下面。
17 24 1 8 15
23 5 7 14 16
4 6 13 20 22
10 12 19 21 3
11 18 25 2 9
xxqxxlysy
2011-11-29
知道答主
回答量:66
采纳率:0%
帮助的人:42.8万
展开全部
??
这个问题不全啊。。。
追问
在下面的5×5魔方矩阵中,每一行、每一列、每一对角线上的元素之和都是相等的,试编写程序将这些魔方矩阵中的元素读到一个二维整型数组中,然后,检验其是否为魔方矩阵,并将其按如下格式显示到屏幕上。 
17 24 1 8 15
23 5 7 14 16
4 6 13 20 22
10 12 19 21 3
11 18 25 2 9
追答
这个。。。
是属于计算机吧。。。
表示不会。。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
孙继刚1206
2011-11-29 · TA获得超过159个赞
知道答主
回答量:146
采纳率:0%
帮助的人:168万
展开全部
magic(5);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式