作业帮 > 综合 > 作业

c语言 4阶魔方数(每行每列对角线和都相等,每个数不一样从1到16),推广到n阶)高手指点一二

来源:学生作业帮 编辑:百度作业网作业帮 分类:综合作业 时间:2024/07/05 13:49:33
c语言 4阶魔方数(每行每列对角线和都相等,每个数不一样从1到16),推广到n阶)高手指点一二
c语言 4阶魔方数(每行每列对角线和都相等,每个数不一样从1到16),推广到n阶)高手指点一二
/*
填魔术方阵的方法以奇数最为简单,第一个数字放在第一行第一列的正中央,然后向右(左)上填,如果右(左)上已有数字,则向下填,如下图所示:

一般程式语言的阵列索引多由0开始,为了计算方便,我们利用索引1到n的部份,而在计算是向右(左)上或向下时,我们可以将索引值除以n值,如果得到余数为1就向下,否则就往右(左)上,原理很简单,看看是不是已经在同一列上绕一圈就对了.
*/
 
 
#include<stdio.h>
#define N 5
int main(void)
{
 int i,j,key;
 int square[N+1][N+1]={0};
 i=0;
 j=(N+1)/2;
 for(key=1;key<=N*N;key++)
 {
  if((key%N)==1)
   i++;
  else
  {
   i--;
   j++;
  }
  if(i==0)
   i=N;
  if(j>N)
   j=1;
  square[i][j]=key;
 }
 for(i=1;i<=N;i++)
 {
  for(j=1;j<=N;j++)
   printf("%2d  ",square[i][j]);
  printf("\n");
 }
 return 0;
}
 
 
/*效果图:

*/
再问: 注意是4阶。。。
再答: #include <stdio.h>
#include <stdlib.h>
#define N 4int main(void) {
    int i, j;
    int square[N+1][N+1] = {0};    for(j = 1; j <= N; j++) {
        for(i = 1; i <= N; i++){
            if(j % 4 == i % 4 || (j % 4 + i % 4) == 1)
                square[i][j] = (N+1-i) * N -j + 1;
            else
                square[i][j] = (i - 1) * N + j;
        }
    }
    for(i = 1; i <= N; i++) {
        for(j = 1; j <= N; j++)
            printf("%2d ", square[i][j]);
        printf("\n");
    }
    return 0;
}

c语言 4阶魔方数(每行每列对角线和都相等,每个数不一样从1到16),推广到n阶)高手指点一二 1到81不重复地填入九行九列的方格中,每行每列和对角线九个数相加都相等.求解和方法. 将1到16填入16个小方格中,使其每行每列每条对角线的四个数的和相等,问怎么填? C语言课程设计:魔方阵,将1到n*n的自然数摆成n行n列的方阵,要求每一行,每一列,二条对角线上的数加起来都 将1~16这16个数填入图中的方格里,使每行、每列、每条对角线四个数的和都相等.(图是16格的正方形纸格) 把1到25进行排列组合,把它排成5行5列,而且每行每列以及对角线上的数之和都相等,每个数只能用一次. 用C语言编程打印出由1到n^2的自然数构成的魔方阵,n由键盘输入.魔方阵的每一行每一列和对角线均相等. 9个方格,把1到9填进去,要求每行每列和两个对角线上三个数的和都等于15,怎样填高手指教 右边是个三阶魔方,既每行,每列及两条对角线上三个数的和都相等.已知(2,3)位置上是2,(3,3)位置上是12,(1,2 有9个方格,要求每个方格的数,每行,每列.每条对角线三个数的和相等,左上角是M,问图中M是多少?用方程 把1——64这64的数填入8×8的方格里,使每行每列每条对角线的和都相等 如图是九宫格,每个格子中有一个数(图中没有全部标出),已知它每行、每列、每条对角线上三个数的和都相等,则A格中的数是__