整数显示为ascii?

时间:2012-09-09 04:36:23

标签: c arrays ascii

我尝试使用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");
    }
}

1 个答案:

答案 0 :(得分:1)

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

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

另外,正如之前的一张海报所说,你只是随机调用一次并将其分配给所有细胞。为每个单独的小区随机调用。