c - 使用函数打印二维数组


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 0

0 0

0 0 1 0 0 0 0

0 0

0 0 0 0

1 0 0 0

0 0 0 0 1 0

1 0

0 1 0 1 0 0

0 0

0 0 0 2 0 0

0 0

0 0 0 0 0 0 0

0 0

0 0 0 0 0 0 0

0 0

它奏效了。我想它以这种方式计算了 64 个单独的值。谢谢!

相关内容

  • 没有找到相关文章

最新更新