您的位置:首页 > 编程语言 > C语言/C++

C/C++小程序学习:n*n魔方矩阵实现每行、每列、每一对角线上的元素之和相等

2013-04-24 19:14 836 查看
用一个程序实现n*n魔方矩阵中,每一行、每一列、每一对角线上的元素之和相等。

矩阵规律:

本程序只适合基数,解释如下:

N 为奇数时,此题中N设为5

(1) 将1放在第一行中间一列;   

(2) 从2开始直到n×n止各数依次按下列规则存放:   

按 45°方向行走,如向右上   

每一个数存放的行比前一个数的行数减1,列数加1   

(3) 如果行列范围超出矩阵范围,则回绕。   

例如1在第1行,则2应放在最下一行,列数同样加1;   

(4) 如果按上面规则确定的位置上已有数,或上一个数是第1行第n列时,则把下一个数放在上一个数的下面。

#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;
for(temp=2;temp<=x*x;temp++)
{
m=i;
n=j;
i--;
j++;
if(i<0)
i=x-1;
if(j>=x)
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;
}


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐