void printBoard(int board[8][8])
{
int i,j;
for(i = 0; i<8; i++)
{
for(j = 0; j<8; j++)
{
printf("%d ", board[i][j]);
}
printf("n");
}
}
int main(){
int i, j;
int board[8][8];
for(i = 0; i<8; i++)
{
for(j = 0; j<8; j++)
{
scanf("%d", &board[i][j]);
}
}
printBoard(board);
为什么下面的 void 函数不打印二维数组?它只是继续要求输入。我也尝试了没有该功能的功能,但它仍然不起作用。
我们打算将此作为家庭作业的一部分。有人可以解释一下如何解决这个问题吗?
您的main
正在循环scanf
这是一个要求用户输入 64 次的函数。您需要输入 64 个值才能到达 printBoard()
语句。
首先,您的 printBoard 函数不会打印所有数组。当你解决这个问题(函数 8 而不是 2 中的第一个循环(你会得到你想要的,但我建议尝试使用更小的数组,因为你需要输入 64 个值。
在嵌套循环中,每次执行外部循环时,内部循环都将执行到完成。这意味着scanf
将被调用 8 * 8 = 64 次。 scanf
从控制台获取输入,因此这意味着您必须在打印之前将 64 个值输入控制台。
也许尝试将数组的大小从 8 * 8 减小到更易于管理的大小,例如 3 * 3 或 4 * 4 - 这样你就不必花一两分钟来测试它。
#include<stdio.h>
void printBoard(int board[8][8]);
int main(){
int i, j;
int board[8][8];
for(i = 0; i<8; i++)
{
for(j = 0; j<8; j++)
{
scanf("%d", &board[i][j]);
}
}
return 0;
}
void printBoard(int board[8][8])
{
int i,j;
for(i = 0; i<8; i++)
{
for(j = 0; j<8; j++)
{
printf("%d ", board[i][j]);
}
printf("n");
}
}
在您的 i
for 循环中它是行j
循环是列,因此循环将 8 行和 8 列,因此它将运行 64 次,然后需要 64 个输入,之后扫描将完成。
所以我一开始就输入了这样的值:
0000000000100000000010000000101001010000000200000000000000000000
这似乎不起作用。然后,我尝试了:
0 0 0 0 0 0 00 0
0 0 1 0 0 0 00 0
0 0 0 01 0 0 0
0 0 0 0 1 01 0
0 1 0 1 0 00 0
0 0 0 2 0 00 0
0 0 0 0 0 0 00 0
0 0 0 0 0 0 00 0
它奏效了。我想它以这种方式计算了 64 个单独的值。谢谢!