C语言关于打印n阶魔方阵的编程有几个看不懂的,,求指点啊

作者&投稿:高果 (若有异议请与网页底部的电邮联系)
用C语言如何编程打印出由1到n^2的自然数构成的魔方阵,?~

奇数魔方阵就是将数字排列在nxn(n为奇数)的方阵上,要求满足各行、各列与各对角线的和相同。如下图所示,是n=5的奇数魔方阵。

填魔方阵的方法以奇数魔方阵最为简单,第一个数字放在第一行的正中央(填了1),然后向右(左)上填,如果右(左)上已有数字,则向下填,如下图所示:

一般程序语言的阵列多由0开始,为了计算方便,我们利用索引1到n的部份,而在计算是向右(左)上或向下时,我们可以将索引值除以n值,如果得到余数为1就向下,否则就往右(左)上。
4N 魔方阵
与奇数魔术方阵相同,在于求各行、各列与各对角线的和相等,不同的是这次方阵的维度是4的倍数。
先来看看4X4方阵的解法:

简单的说,就是一个从左上由1依序开始填,但遇对角线不填,另一个由左上由16开始填,但只填在对角线,再将两个合起来就是解答了。如果N大于等于2,则以 4X4为单位画对角线,如下所示:

至于对角线的位置该如何判断,有两个公式,有兴趣的可以画图印证,如下:
左上至右下:j % 4 == i % 4
右上至左下:(j % 4 + i % 4) == 1
8阶魔方阵(N=2)的结果如下:

#include #include #define N 9int main(){ int a[N][N]={0},i=0,j=N/2,n; a[i][j]=1; for(n=2;n<=N*N;n++) { i--; j++; if(i<0&&j==N) { i+=2; j--; } else { if(i<0) i=N-1; if(j==N) j=0; } if(a[i][j]) { i+=2; j--; } a[i][j]=n; } for(i=0;i<N;i++) { for(j=0;j<N;j++) printf("%-4d",a[i][j]); printf("
"); } getch(); return 0;}根据题意可得以上代码

幻方是可以构造的
分为奇数阶、双偶阶、偶数阶三种情况
具体可以参考百度百科
p==1表示true,为真也就是一直循环,直到p变成0




C语言N阶魔方阵
使用C++代码实现,根据矩阵的阶数n(1至100),我们有:```cppint a[100][100]; \/\/ 矩阵数组int sum1, sum2; \/\/ 存储对角线和void jiShu(int n) { ... } \/\/ 奇数阶魔方阵生成void doubleOuShu(int n) { ... } \/\/ 双偶数阶魔方阵生成void singleOuShu(int n) { ... } \/\/ ...

C语言程序解释!
这个程序是输出一个N阶的魔方阵,既每行每列斜行之和都相等 在这里你首先要知道求这样一个矩阵的一个技巧和方法 就是从1开始往N*N的矩阵里填数,下一个数就填在它的右上角,若右上角已经填了数,就填在它的下方。eg :5*5的矩阵,如果1填在【0,2】,那么3就在【-1,3】等效与原矩阵...

C语言关于打印n阶魔方阵的编程有几个看不懂的,,求指点啊
分为奇数阶、双偶阶、偶数阶三种情况 具体可以参考百度百科 p==1表示true,为真也就是一直循环,直到p变成0 参考资料:http:\/\/baike.baidu.com\/view\/5058.htm

用c语言编写n阶魔方阵.谢谢了!!!
int a[N][N]={0},i,j,k,p,m,n;p=1;while(p==1){ printf("Enter n(1~%d): ",N-1);scanf("%d",&n);if((n!=0)&&(n<N)&&(n%2!=0))p=0;} i=n+1;j=n\/2+1;a[1][j]=1;for(k=2;k<=n*n;k++){ i=i-1;j=j+1;if((i<1)&&(j>n)){ i=i+2;j...

n阶乘怎么打印?
1、不是直接输入n!,需要一定的算法才可以实现。具体方法是,首先打开编辑器,准备好空白的C语言文件:2、在编辑器中输入代码,这里所谓 n 的阶乘,就是从 1 开始乘以比前一个数大 1 的数,一直乘到 n。C语言中可利用循环解决,可以假设循环变量为 i,初值为 1,i 从 1 变化到 n;依次让 ...

c语言中n阶魔方中的问题,详情请进,满足要求再追分
if (a[(i+n-1)%n][(j+1)%n]==0)\/*判断下一个位置是否已经排了数,如果为0,则没有排,位置空,这时可以把r的值放上去。*\/ { i=(i+n-1)%n; \/*把该位置行数值赋给i*\/ j=(j+1)%n; \/*把该位置列数值赋给j*\/ a[i][j]=r; \/*把r值排到该位置上*\/ } else \/*...

求一个n阶魔方阵的算法用标准c语言的风格来做的
1)将n阶方阵分为四个小魔方阵ABCD如下排列:B C D A 因为n*n=4*(2*m+1)*(2*m+1),记u=n\/2=2*m+1,分为1~u*u,u*u+1~2*u*u,2*u*u+1~3*u*u,3*u*u+1~4*u*u 即在调用子函数的时候分别如下面传递参数:A(0),B(u*u),C(2*u*u),D(3*u*u)分别在ABCD...

用C语言如何编程打印出由1到n^2的自然数构成的魔方阵,?
填魔方阵的方法以奇数魔方阵最为简单,第一个数字放在第一行的正中央(填了1),然后向右(左)上填,如果右(左)上已有数字,则向下填,如下图所示:一般程序语言的阵列多由0开始,为了计算方便,我们利用索引1到n的部份,而在计算是向右(左)上或向下时,我们可以将索引值除以n值,如果得到余数为1...

关于C语言的N阶方阵,输出N阶方阵,和它的上,下三角阵(高手帮分析一下有...
printf("\\n"); \/\/当执行完for(i=0;i<N;i++)之后打印回行,即每次打印完一行二维数组则回行(可以理解为回车)for(i=0;i<N;i++) \/\/for循环,初始化i=0,判断i<3,如果成立则执行for循环里面的语句,每次执行完for循环语句后i+1 { for(j=0;j<N;j++) \/\/for循环,初始...

用C语言编程打印出由1到n^2的自然数构成的魔方阵,n由键盘输入。魔方阵的...
{ int i, j, n, row, col;int **a;printf("please input n:");scanf("%d",&n);a = (int**)malloc(sizeof(int*)*n);for(i = 0; i != n; i++){ (a+i) = (int*)malloc(sizeof(int)*n);} col = n \/ 2;row = 0;for(i = 1; i <= n*n; i++){ if(...

锡林浩特市17179577353: C语言关于打印n阶魔方阵的编程有几个看不懂的,,求指点啊
壬卞阿替: 幻方是可以构造的 分为奇数阶、双偶阶、偶数阶三种情况 具体可以参考百度百科 p==1表示true,为真也就是一直循环,直到p变成0

锡林浩特市17179577353: 用c语言编程打印出由1到n^2的自然数构成的魔方阵 -
壬卞阿替: //WindowsXP VC++6.0 #include<stdio.h> int main() { int buf[256][256]={0}; int i=0,j=0,n,count; scanf("%d",&n); count=buf[0][0]=1; while(count<n*n) { while(j+1<n&&!buf[i][j+1]) buf[i][++j]=++count; while(i+1<n&&!buf[i+1][j]) buf[++i][j]=++count; while(j...

锡林浩特市17179577353: 求一个n阶魔方阵的算法用标准c语言的风格来做的 -
壬卞阿替: 对平面魔方的构造,分为三种情况:N为奇数、N为4的倍数、N为其它偶数(4n+2的形式) ⑴ N 为奇数时,最简单 (1) 将1放在第一行中间一列; (2) 从2开始直到n*n止各数依次按下列规则存放: 按 45°方向行走,如向右上 每一个数存放的行...

锡林浩特市17179577353: c语言中魔方阵编程的思路 -
壬卞阿替: /* 所谓魔方阵是指这样的的方阵: 它的每一行、每一列和对角线之和均相等. 输入n,要求打印由自然数1到n2的自然数构成的魔方阵(n为奇数). 例如,当n=3时,魔方阵为:8 1 63 5 74 9 2 魔方阵中各数排列规律为: ① 将“1”放在第...

锡林浩特市17179577353: 如何用C语言编出一个N阶螺旋方阵?例如:1234<br/>121
壬卞阿替: int n为阶数,具体打印格式你可以按需要改void op(int n){ int i=0,j=0; int*(*p); int temp = 1; int t; p = (int**)malloc(sizeof(int*)*n); for (t=0;t=t;j--) p[i][j] = temp ; j ; i--; for(;i>t;i--) p[i][j] = temp ; j ; i ; } for (i=0;i { for (j=0;j { printf("= ",p[i][j]); } printf("\n"); }}.

锡林浩特市17179577353: 用C语言编程打印出由1到n^2的自然数构成的魔方阵,n由键盘输入.魔方阵的每一行每一列和对角线均相等. -
壬卞阿替: 只要用动态分配内存就可以了. #include <stdio.h>#include <malloc.h>int main() { int i, j, n, row, col; int **a; printf("please input n:"); scanf("%d",&n); a = (int**)malloc(sizeof(int*)*n); for(i = 0; i != n; i++) { *(a+i) = (int*)malloc(sizeof(int)*n); } col = ...

锡林浩特市17179577353: 用C语言编写一个程序 输出魔方阵 -
壬卞阿替: #include #define n 16 //这里可以修改n的值 int main() { int a[n][n],i,j,k,p,m,n; p=1; while(p==1) /*要求阶数为1~15的商数*/ { printf("enter n(n=1~15):"); //可以输入小于等于n-1的整数 scanf("%d",&n); if((n!=0)&&(n<=n-1)&&(n%2!=0)) p=0; } for...

锡林浩特市17179577353: c语言输出魔方阵的代码? -
壬卞阿替: 这是我写的的魔方代码,奇阶的 .#include<stdio.h> int main() {int i,j,n,a[25][25],p,k;p=0;if(p==0){ scanf("%d",&n);if(n>=1&&n<=25&&n%2==1)p=1;}for(i=1;i<=n;i++)for(j=1;j<=n;j++)a[i][j]=0;j/=2;a[1][j]=1;for(k=2;k<=n*n;k++){i--;...

锡林浩特市17179577353: 用C语言 检验并打印魔方矩阵 -
壬卞阿替: #include<stdio.h>#include<conio.h> int main() { int a[5][5]={0};/*初始化*/ int i,j,m,n,temp; i=0; j=5/2; a[i][j]=1;/*第一行中间填1*/ for(temp=2;temp<=5*5;temp++)/*循环24次,填剩余的24个数*/ { m=i; n=j; i--; j++; if(i<0) i=5-1; if(j>5-1) j=0; if(a[i][j]!=0) ...

锡林浩特市17179577353: 求教一道编程题?打印一个n阶魔方阵,要求用C编写. -
壬卞阿替: #include <stdio.h>#include <stdlib.h>#include <math.h>#include <conio.h>#define MAX_INDEX 100void swap(int *a,int *b){ int t; t=*a; *a=*b; *b=t;}/*快速排序算法*/void QuickSort(int a[], int l, int r){ int i=l; /*从左至右的游标*/ int j=r + 1; /*从右到...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网