使用函数打印二维数组

时间:2016-08-07 12:57:09

标签: c for-loop multidimensional-array

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函数不能打印二维数组?它只是继续要求输入。我试过它没有这个功能,它仍然无法正常工作。

我们本来打算将它作为家庭作业的一部分。有人可以解释如何解决这个问题吗?

5 个答案:

答案 0 :(得分:0)

您的main正在循环scanf,这是一个要求用户输入64次的功能。您需要在达到printBoard()语句之前输入64个值。

答案 1 :(得分:0)

首先,您的printBoard函数不会打印所有数组。 当你解决这个问题时(第8个函数中的第一个循环而不是2个)你会得到你想要的东西,但我建议尝试使用更小的数组,因为你需要输入64个值。

答案 2 :(得分:0)

在嵌套循环中,每次外循环执行时,内循环将执行完成。这意味着scanf将被称为8 * 8 = 64次。 scanf从控制台获取输入,这意味着您必须在打印之前将64个值输入控制台。

也许尝试将阵列的大小从8 * 8缩小到更易于管理的东西,比如3 * 3或4 * 4 - 这样你就不必花费一两分钟就可以测试数字

答案 3 :(得分:0)

public class MainActivity extends AppCompatActivity
    implements NavigationView.OnNavigationItemSelectedListener {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main); // line 70

        // ...
    }

    // ...
}

#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"); } } for循环中,它是行,i循环是列,因此循环将是8行和8列,因此它将运行64次,然后它将需要64个输入,并且在scanf完成之后。

答案 4 :(得分:-1)

所以我开始输入这样的值:

00000000 00100000 00001000 00001010 01010000 00020000 00000000 00000000

这似乎不起作用。 然后,我试过了:

0 0 0 0 0 0 0 0

0 0 1 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

它有效。我想这样就算了64个单独的值。 谢谢!

相关问题