题目描述
输出“魔方阵”。所谓魔方阵是指这样的方阵,它的每一行、每一列和对角线之和均相等。
例如,三阶魔方阵为:
8 1 6
3 5 7
4 9 2
思路
(1)将1放在第1行中间一列
(2)从2开始直到n*n,每个数放在前一个数右上角的位置
(3)如果前一个数的右上角超出了方阵,则:上一个数行数为1,下一个数行数为n,列数+1;上一个数列数为n,下一个数列数为1,行数-1。(在纸上画图就能理解)
(4)如果出现了下一个位置已经有数字的情况,将下一个数放在上一个数的下面,超出的情况同(3),移到最上面的第一行
答案
#include<stdio.h>
int main()
{
int a[16][16]; //定义数组,让方阵的边长不超过15
int n,i,j,k;
int p,t;
scanf("%d",&n); //输入方阵边数
if(n%2!=0&&