魔幻矩阵 编程实现9*9以内任意奇数阶方阵的魔幻矩阵。 所谓奇数魔幻矩阵就是n*n的矩阵(n为奇数)的n*n个格子中放入数1到n*n,使得每行、每列、主对角线、付对角线上元素的和都相等。算法生成如下:: 1 ,第一个数字在第一行的中间位置 2,以后每一个数放在前一个数的右上方,,如果向上超出了界限,在矩阵的最后一行插入,列不变;,如果右侧超出了界限,在矩阵的最左边插入,行不变。 3.如果插入数的位置已经有数,则在前一个数的下方插入。. 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 输入提示:"input Magic matrix n:" 输入格式:"%d" 输出格式:"%4d" 程序运行示例: input Magic matrix n:4 9 15 1 7 14 4 6 8 3 5 11 13 0 10 12 2
#include<stdio.h>
int main()
{
int a[9][9]={0},i,j=0,n;
printf("input Magic matrix n:");
scanf("%d",&n);
int k;
if(n%2!=0) k=(n-1)/2;
else k=n/2;
for(i=1;i<=n*n;i++)//n*n个数,从1开始依次填入矩阵
{
if(j<0) j=n-1;//j代表行,当j<0时,j为最后一行
if(k>n-1) k=0;//k代表列,当k>n-1时,k变为第一列
if(a[j][k]==0)//判断该位置是否已经填入了数字,若没填,则填入
{
a[j][k]=i;
}
else//若已经填入了数字,则填到前一个数的下方
{
j=j+1+1;//j+1为前一个数的行,j+1+1为前一个数的下方
k=k-1;//k-1为前一个数的列
if(j>n-1) j=j-n;//当j=n或者n+1时,实际上为第一行和第二行
if(k<0) k=n-1;//当k=-1时,实际上k=n-1即最后一列
a[j][k]=i;
}
j=j-1;
k=k+1;
}
for(i=0;i<n;i++)//打印该魔幻矩阵
{
for(j=0;j<n;j++)
{
printf("%4d",a[i][j]);
}
printf("\n");
}
return 0;
}
文章来源地址https://www.toymoban.com/news/detail-854912.html
文章来源:https://www.toymoban.com/news/detail-854912.html
到了这里,关于C语言每日一题—魔幻矩阵的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!