繁体   English   中英

在C语言中使用“ for”循环的迭代变量时出现奇怪的输出

[英]Strange Output while using the iterating variable of a “for” loop in C

我目前正在为大学的第一次考试开发一个简单的海战游戏,但在游戏板上却得到了奇怪的输出……

游戏板

它应该迭代我的“ j”变量,但是我得到了那个奇怪的字符...

这是我的代码:

//CREATES COORDENATES OF THE GAMEBOARD
    //ATTRIBUTE ONE LETTER TO EACH TRAY LINE
        for (i=0;i<11;i++){
            tabuleiro[i][0] = letra[i-1];
        }
    //ATTRIBUTE ONE NUMBER TO EACH TRAY COLUMN
        for (j=1;j<11;j++){
            tabuleiro[0][j] = j;
        }

    //CREATES THE "SEA"
        for (i=1;i<11;i++){
            for (j=1;j<11;j++){
                tabuleiro[i][j] = '~';
            }
        }

我试图改变我的tabuleiro[0][j] = j; tabuleiro[0][j] = (j+'0'); 但是然后它只迭代到9并再次给我奇怪的字符...

游戏板_2

如果我没记错,我认为这与ASCII码有关(如果我记错了,请纠正我),但是我不知道如何解决此问题。

您能解释一下我该如何解决。

我建议对角色进行精确控制

tabuleiro[0][j] = "123456789T"[j];

这将从该字符串中选择第j个字符

顺便说一句,您得到':'的原因是因为':'是'9'之后的下一个ASCII字符-请参见http://www.asciitable.com/

问题是10 + '0' = 58的字符代码,这是':'的字符代码。 您可能会考虑从游戏数组中删除列名和行名。 它们只是标签,而不是游戏的一部分(我认为)。

#define board_size 10

// Create game board and initialize grid to '~', in main() possibly
// Game is 10x10 grid
char tabuleiro[board_size][board_size];
for (int row = 0; row < board_size; row++) {
    for (int col = 0; col < board_size; col++) {
        tabuleiro[row][col] = '~';
    }
}

具有绘制游戏板的功能:

void drawBoard(char tabuleiro[board_size][board_size]) {
    // Print top line
    printf("  ");
    for (int col = 0; col < board_size; col++) {
        printf(" %-2d", col+1);
    }
    printf("\n");

    // Print grid
    for (int row = 0; row < board_size; row++) {
        // Print letter
        printf("%c ", 'A' + row);
        // Print board
        for (int col = 0; col < board_size; col++) {
            printf(" %c ", tabuleiro[row][col]);
        }
        printf("\n");
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM