用c语言输出1到n的平方的自然数构成的魔方阵
时间: 2024-04-30 08:20:09 浏览: 129
以下是用C语言输出1到n的平方的自然数构成的魔方阵的代码:
```c
#include <stdio.h>
#include <stdlib.h>
void magic_square(int n);
int main()
{
int n;
printf("请输入魔方阵的阶数:");
scanf("%d", &n);
magic_square(n);
return 0;
}
void magic_square(int n)
{
int **m, i, j, k;
m = (int **) malloc(n * sizeof(int *));
for (i = 0; i < n; i++)
m[i] = (int *) malloc(n * sizeof(int));
for (i = 0; i < n; i++)
for (j = 0; j < n; j++)
m[i][j] = 0;
j = n / 2;
i = 0;
for (k = 1; k <= n * n; k++)
{
m[i][j] = k * k;
i--;
j++;
if (i < 0 && j >= n)
{
i += 2;
j--;
}
else if (i < 0)
i = n - 1;
else if (j >= n)
j = 0;
else if (m[i][j] != 0)
{
i += 2;
j--;
}
}
printf("魔方阵如下:\n");
for (i = 0; i < n; i++)
{
for (j = 0; j < n; j++)
printf("%d\t", m[i][j]);
printf("\n");
}
for (i = 0; i < n; i++)
free(m[i]);
free(m);
}
```
其中,使用了动态内存分配来创建二维数组,使用了奇数阶魔方阵的构造方法。运行程序,输入魔方阵的阶数,即可输出对应的魔方阵。
阅读全文