我正在尝试创建一个程序,用C语言中给定的n值生成幻方。 这是代码
#include<stdio.h>
#include<string.h>
// A function to generate odd sized magic squares
void generateSquare(int n)
{
int magicSquare[n][n];
// set all slots as 0
memset(magicSquare, 0, sizeof(magicSquare));
// Initialize position for 1
int i = n/2;
int j = n-1;
// One by one put all values in magic square
for (int num=1; num <= n*n; )
{
if (i==-1 && j==n) //3rd condition
{
j = n-2;
i = 0;
}
else
{
// 1st condition helper if next number
// goes to out of square's right side
if (j == n)
j = 0;
// 1st condition helper if next number
// is goes to out of square's upper side
if (i < 0)
i=n-1;
}
if (magicSquare[i][j]) //2nd condition
{
j -= 2;
i++;
continue;
}
else
magicSquare[i][j] = num++; //set number
j++; i--; //1st condition
}
// Print magic square
printf("The Magic Square for n=%d:\nSum of "
"each row or column %d:\n\n", n, n*(n*n+1)/2);
for (i=0; i<n; i++)
{
for (j=0; j<n; j++)
printf("%3d ", magicSquare[i][j]);
printf("\n");
}
}
// Driver program to test above function
int main()
{
int n = 7; // Works only when n is odd
generateSquare (n);
return 0;
}
在Turbo C编译器中编译程序时,出现以下错误
需要第7行常量表达式
第13行声明此处不允许
第14行声明此处不允许
未定义符号编号
如果我将其作为c ++文件运行,则该程序运行良好,但作为c程序却显示错误
答案 0 :(得分:1)
您可能正在使用TurboC。
TurboC使用了过时的C语言编译器。它支持Borland编译器。最好是Windows Xp处于趋势中。现在已经过时了。
请使用最新的gcc或g ++。
您可能会转向Ubuntu或Mac
或可以尝试Windows的CodeBlocks。