我已经搜索了几个关于如何打印矩阵的视频和教程,他们引导我做到了这一点:
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;
我不知道为什么。你们中的任何人都知道错误吗?
答案 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]);
}
}