为什么在尝试在c中打印矩阵时出现此错误?

时间:2014-08-09 04:43:34

标签: c matrix

我已经搜索了几个关于如何打印矩阵的视频和教程,他们引导我做到了这一点:

void
init(void)
{
    board[3][3] = {{8,  7,  6}, 
                   {5,  4,  3},
                   {2,  1,  0}};
}

void
draw(void)
{                  
    for (int row = 0; row < d; row++)
    {
        for (int column = 0; column < d; column++)
        {
            printf("%i", board[row][column]);
        }
    }
}

代码很有意义。我明白了。而且我已经看到人们在视频上使用它来打印矩阵并且它有效!但是当我尝试时,我得到错误:

  

&#34;'{'令牌&#34;之前的预期表达式在线:&#34;董事会[3] [3] = ...&#34;

我不知道为什么。你们中的任何人都知道错误吗?

6 个答案:

答案 0 :(得分:4)

这不是有效的C:

board[3][3] = {{8,  7,  6}, 
               {5,  4,  3},
               {2,  1,  0}};

在声明时初始化它,或者一次分配一个元素。

答案 1 :(得分:4)

board[3][3] = {{8,  7,  6}, 
               {5,  4,  3},
               {2,  1,  0}};

必须:

int board[3][3] = {{8,  7,  6}, 
                   {5,  4,  3},
                   {2,  1,  0}};

但正如@dreamlax指出的那样,只有在声明board并将其初始化为全局时才有效。

此代码使用复合文字在C99上运行:

void
init(void)
{
    memcpy(board, (int[][3]){{8, 7, 6}, {5, 4, 3}, {2, 1, 0}}, sizeof board);
}

便携式方式是:

void
init()
{
    int temp[][3] = {{8, 7, 6}, {5, 4, 3}, {2, 1, 0}};

    memcpy(board, temp, sizeof board);
}

答案 2 :(得分:1)

程序中可能出现的错误: -

1){之前的行或调用init(void)的主函数中缺少分号。

2)改变

board[3][3] = {{8,  7,  6}, 
               {5,  4,  3},
               {2,  1,  0}};

int board[3][3] = {{8,  7,  6}, 
               {5,  4,  3},
               {2,  1,  0}};

3)

for (int row = 0; row < d; row++)

for (int column = 0; column < 3; column++)

仅在最新的C99编译器模式下允许在循环内声明变量。所以,做吧,

int row, column;
for (row = 0; row < d; row++) {
for (column = 0; column < 3; column++) {
} }

4)您尚未在任何地方声明d(数组大小)。使用文件顶部的#define将其设为宏,或将其作为函数draw(void)中的参数传递,或在函数draw内明确定义。

但无论如何,我没有看到在3函数中使用常量init数组的意义,然后使用变量来访问draw函数中的元素。< / p>

答案 3 :(得分:0)

您缺少关键字int,它也是数组变量的数据类型:

void 
init(void)
{
    int board[3][3] = {{8, 7, 6}, {5, 4, 3}, {2, 1, 0}}; 
}

答案 4 :(得分:-1)

尝试此代码: -

int board[3][3] = {8, 7, 6, 5, 4, 3, 2, 1} 

for (int row = 0; row <3; row++)
{
    for (int column = 0; column < 3; column++)
    {
        printf("%d ", board[row][column]);
    }
}  

答案 5 :(得分:-2)

有效代码是

int board[3][3] = {8,  7,  6, 5,  4,  3, 2,  1,  0};

for (int row = 0; row < 3; row++)
{
    for (int column = 0; column < 3; column++)
    {
        printf("%d ", board[row][column]);
    }
}