问题描述:编写程序,实现如下表所示的5-魔方阵。
问题分析:
- 第一行元素之和:17+24+1+8+15=65
- 第一列元素之和:17+23+4+10+11=65
- 主对角线上元素之和:17+5+13+21+9=65
程序源码:
#include<stdio.h>
#include<stdlib.h>
int array(int n)
{
int i, j, no, num, max;
int *mtrx;
if(n%2 == 0) /*n是偶数,则加1使其变为奇数*/
{
n=n+1;
}
max=n*n;
mtrx=(int *)malloc(max+max); /*为魔方阵分配内存*/
mtrx[n/2]=1; /* 将1存入数组*/
i=0; /*自然数1所在行*/
j=n/2; /*自然数1所在列*/
/*从2开始确定每个数的存放位置*/
for(num=2; num<=max; num++)
{
i=i-1;
j=j+1;
if((num-1)%n == 0) /*当前数是n的倍数*/
{
i=i+2;
j&