/*输出“魔方阵”。所谓魔方阵是指这样的方阵,它的每一行、每一列和对角线之和均相等。
要求输出1~n的平方的自然数构成的魔方阵*/
#include <stdio.h>
#include <math.h>
int main()
{
int a[10][10] = {0};//给出足够大的空间
int n,i,j,k = 1,b,c;
printf("请输入n:\n");
scanf("%d",&n);
a[0][n/2] = 1;
i = 0;
j = n/2;
for(k = 2;k <= n * n;k++)
{
b = i;
c = j;
if(i == 0 && j == n - 1)//必须先进行判断,否则出错
{
i = b + 1;
j = c;
a[i][j] = k;
continue;
}
if(i == 0)
{
i = n - 1;
j = j + 1;
if(a[i][j] != 0)
{
i = b + 1;
j = c;
}
a[i][j] = k;
continue;
}
if(j == n-1)
{
i = i - 1;
j = 0;
if(a[i][j] != 0)
{
i = b + 1;
j = c;
}
a[i][j] = k;
continue;
}
i = i - 1;
j = j + 1;
if(a[i][j] != 0)
{
i = b + 1;
j = c;
}
a[i][j] = k;
}
for(i = 0;i < n;i++)
{
for(j = 0;j < n;j++)
{
printf("%d ",a[i][j]);
}
printf("\n");
}
}
谭浩强C程序设计(第四版)p168第7题
我通过查阅百度的资料找到魔方阵的规律,找到规律,这样的程序就好写了
魔方阵规律百度文库