C++实现奇数魔方阵

C++实现奇数魔方阵,第1张

概述C++实现奇数魔方

下面是内存溢出 jb51.cc 通过网络收集整理的代码片段。

内存溢出小编现在分享给大家,也给大家做个参考。

/*    魔方阵,古代又称“纵横图”,是指组成元素为自然数1、2…n的平方的n×n的方阵,    其中每个元素值都不相等,且每行、每列以及主、副对角线上各n个元素之和都相等。    输入一个奇数,实现奇数魔方阵。     附:奇数魔方阵的实现方法            (1) 将1填入第一行中间;          (2) 将每个数填在前一个数的右上方。          (3) 若该位置超出最上行,则改填在最下行的对应位置;          (4) 若该位置超出最右列,则该填在最左列的对应行位置;          (5) 若某元素填在第一行最右列,下一个数填在该数同列的下一行;          (6) 若某数已填好,但其右上角已填了其他数据,则下一个数填在该数同列的下一行位置。*/ #include <stdio.h>#include <math.h> voID main(){    int a[16][16],i,j,n,k;     printf("Please input  n(1~15,it must be odd.): ");    scanf("%d",&n);     while( !(n>=1&&n<=15) || n%2==0 )    {        printf("The number is invalID.Please insert again:");        scanf("%d",&n);    }      printf("\n");    //矩阵的初始化    for(i=1;i<=n;i++)        for(j=1;j<=n;j++)            a[i][j]=0;     j=n/2+1;    a[1][j]=1;    i=1;     for(k=2;k<=n*n;k++)    {        i=i-1;        j=j+1;         if( i==0 && j==n+1 )        {            i=i+2;            j=j-1;        }        else        {            if(i==0)            {                i=n;            }            if(j==n+1)            {                j=1;            }        }         if(a[i][j]==0)        {            a[i][j]=k;        }        else        {            i=i+2;            j=j-1;            a[i][j]=k;        }    }      for(i=1;i<=n;i++)    {        for(j=1;j<=n;j++)            printf("%4d",a[i][j]);        printf("\n");    }}

以上是内存溢出(jb51.cc)为你收集整理的全部代码内容,希望文章能够帮你解决所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

总结

以上是内存溢出为你收集整理的C++实现奇数魔方阵全部内容,希望文章能够帮你解决C++实现奇数魔方阵所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1231974.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存