0

我正在尝试使用 int 类型的嵌套数组创建一个二维网格。网格中的每个元素都将设置为 -9 到 15 之间的随机值。但是,放置在网格中的整数将显示为它们的 ASCII 等效值。此外,每个元素都是相同的随机整数,而不是完全随机的。我该如何解决这些问题?感谢你的帮助!

#define ROWS 5
#define COLS 5

int main(void)
{

    int game_board[ROWS][COLS] = {0};
    initialize_game_board(game_board);
    display_board(game_board);
}

void initialize_game_board (int board[ROWS][COLS])
{

    int rows = 0, columns = 0, rand_int = 0;
    srand( time(NULL) );
    rand_int = (rand() % 24) - 9;

    for (rows = 0; rows < ROWS; rows++)
    {
        for (columns = 0; columns < COLS; columns++)
        {
            board[rows][columns] = rand_int;
        }
    }
}


void display_board(int board[ROWS][COLS])
{

    int row = 0, column = 0;

    printf ("\n%3d", row);
    for (row = 1; row < ROWS; row++)
    {
        printf ("%2d", row);
    }
    printf ("\n");

    for (row = 0; row < ROWS; row++)
    {
        printf ("%-2d", row);
        for (column = 0; column < COLS; column++)
        {
            printf ("%-2c", board[row][column]);
        }
        printf ("\n");
    }
}
4

1 回答 1

1

您将 game_board[ROWS][COLUMNS] 声明为整数数组,然后在使用 printf 时使用 %c。

您可以将其声明为字符数组,并保留您的 %c(但您必须更改您的函数为每个数字生成 ASCII 字符),或者您可以将 display_board 最内层循环中的 printf 更改为 %d。

Also, as a previous poster said, you only called random once and assigned it to all cells. Call random for each individual cell.

于 2012-09-09T04:44:36.347 回答