我尝试使用int类型的嵌套数组创建一个2d网格。网格中的每个元素都将设置为介于-9和15之间的随机值。但是,放置在网格中的整数将显示为ASCII等效项。此外,每个元素都是相同的随机int,而不是完全随机的。我该如何解决这些问题?谢谢你的帮助!
#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");
}
}
答案 0 :(得分:1)
您将game_board [ROWS] [COLUMNS]声明为整数数组,然后在使用printf时使用%c。
您可以将其声明为字符数组,并保留%c(但是您必须更改函数为每个数字生成ASCII字符),或者您可以将display_board最里面的循环中的printf更改为% d。
另外,正如之前的一张海报所说,你只是随机调用一次并将其分配给所有细胞。为每个单独的小区随机调用。