打印魔方阵,所谓魔方阵是这样的方阵,它的每一列,每一行和对角线之和均相等。
例如:三阶魔方阵为
8 1 6
3 5 7
4 9 2
写一程序能打印出由1到n2(n≤15)的自然数构成的魔方阵。
打印魔方阵,所谓魔方阵是这样的方阵,它的每一列,每一行和对角线之和均相等。
例如:三阶魔方阵为
8 1 6
3 5 7
4 9 2
写一程序能打印出由1到n2(n≤15)的自然数构成的魔方阵。
#include<stdio.h>#include<stdlib.h>//奇数阶(罗伯法)int laobo(int n,int **arr,int num){ int i, j, k,N; i = 0; j = n / 2; //第1个元素位置 N=n*n-1; for (k = num;k <=num+N;k++){//num代表第一个数(一般是以1开始) arr[i][j] = k; int x=(i - 1 + n) % n,y=(j + 1 + n) % n; if (arr[x][y] == 0){//右上方可前进 i = x; j = y; }else{ i= (i + 1 + n) % n; } } return 0;}//双偶阶(海尔法)int Init(int n, int **arr){//初始化数组 int i, j, num; num = 1; for (i = 0;i < n;i++) { for (j = 0;j < n;j++) { arr[i][j] = num++; } } return 0;}int haier(int n, int **arr){ int i, j, complement, deg; complement = n*n + 1;//互补数:n*n+1 deg = n / 4; //分块:A,B,C,D for (i = 0;i < deg;i++){//每一块 for (j = 0;j < deg;j++){//对角线取互补数 arr[i * 4 + 0][j * 4 + 0] = complement - arr[i * 4 + 0][j * 4 + 0]; arr[i * 4 + 0][j * 4 + 3] = complement - arr[i * 4 + 0][j * 4 + 3]; arr[i * 4 + 1][j * 4 + 1] = complement - arr[i * 4 + 1][j * 4 + 1]; arr[i * 4 + 1][j * 4 + 2] = complement - arr[i * 4 + 1][j * 4 + 2]; arr[i * 4 + 2][j * 4 + 1] = complement - arr[i * 4 + 2][j * 4 + 1]; arr[i * 4 + 2][j * 4 + 2] = complement -...
查看完整答案在C语言中,数组名作为参数传递给函数,作为实在参数的数组名被处理为【 】
介绍一个你所编制的你认为最有意义的程序(包括目的、算法、所解决的实际问题)。
打印魔方阵,所谓魔方阵是这样的方阵,它的每一列,每一行和对角线之和均相等。例如:三阶魔方阵为8 1 63 5 74 9 2写一程序能打印出由1到n2(n≤15)的自然数构成的魔方阵。
打印魔方阵,所谓魔方阵是这样的方阵,它的每一列,每一行和对角线之和均相等。例如:三阶魔方阵为8 1 63 5 74 9 2写一程序能打印出由1到n2(n≤15)的自然数构成的魔方阵。
打印魔方阵,所谓魔方阵是这样的方阵,它的每一列,每一行和对角线之和均相等。例如:三阶魔方阵为8 1 63 5 74 9 2写一程序能打印出由1到n2(n≤15)的自然数构成的魔方阵。
打印魔方阵,所谓魔方阵是这样的方阵,它的每一列,每一行和对角线之和均相等。例如:三阶魔方阵为8 1 63 5 74 9 2写一程序能打印出由1到n2(n≤15)的自然数构成的魔方阵。