c语言魔方编程,C语言编程实现魔方阵

问题描述:编写程序,实现如下表所示的5-魔方阵。

49a9a751cbc902fb59e0196203a0e175.png

问题分析:

第一行元素之和:17+24+1+8+15=65

第一列元素之和:17+23+4+10+11=65

主对角线上元素之和:17+5+13+21+9=65

程序源码:

#include

#include

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=j-1;

}

if(i<0) /*当前数在第0行*/

{

i=n-1;

}

if(j>n-1) /*当前数在最后一列,即n-1列*/

{

j=0;

}

no=i*n+j; /*找到当前数在数组中的存放位置*/

mtrx[no]=num;

}

/*打印生成的魔方阵*/

printf("生成的%d-魔方阵为:",n);

no=0;

for(i=0; i

{

printf("\n");

for(j=0; j

{

printf("%3d", mtrx[no]);

no++;

}

}

printf("\n");

free(mtrx);

return 0;

}

int main()

{

int n;

printf("请输入n值:\n");

scanf("%d", &n);

array(n); /*调用array函数*/

return 0;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值