无法在c中用可变值声明数组

时间:2018-11-13 16:19:55

标签: c

我正在尝试创建一个程序,用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程序却显示错误

1 个答案:

答案 0 :(得分:1)

您可能正在使用TurboC。

TurboC使用了过时的C语言编译器。它支持Borland编译器。最好是Windows Xp处于趋势中。现在已经过时了。

请使用最新的gcc或g ++。

您可能会转向Ubuntu或Mac

或可以尝试Windows的CodeBlocks。