这是一个幻方问题,幻方 n 的大小应作为命令行参数输入。n 必须是奇数。 预期的输出应该是这样的。我的问题是,当我尝试执行代码时, 它会生成一堆 0。
我是 C 初学者,我希望有人可以帮助我解决我的问题。非常感谢!我感谢您的帮助!
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int n = atoi(argv[1]);
int magic[n+1][n+1];
if(argc == 2)
{
for(int i = 0; i < n; i++)
{
for(int j = 0; j < n; j++)
{
magic[i][j] = 0;
}
}
int i =0 ;//row
int j= n / 2; //column
for ( int k = 1; k <= n*n; k++ )
{
magic[j][i] = k;
if(magic[j][i] == 0) //if the spot is empty
{
if (j == 0 && i == 0)
{
j--;//go up one level
i--; //go left
}
else
{
if(j == 0) //if it's on the first row
j = n - 1;
else
j--;
if (i == 0) //if it's on the left column
i = n - 1;
else
i--;
}
}
else //if the spot is not empty
{
j = j + 2;
i++;
}
}
}
for(int x=0; x<n; x++)
{
for(int y=0; y<n; y++)
printf("%3d", magic[x][y]);
printf("\n");
}
return 0;
}