在C中使用“for”循环的迭代变量时出现奇怪的输出
我目前正在为我大学的第一次考试开发一个简单的海战游戏,但我在游戏板上得到了一个奇怪的输出 它应该迭代我的j变量,但是我得到了那个奇怪的字符 这是我的密码:在C中使用“for”循环的迭代变量时出现奇怪的输出,c,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]; } /
//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] = '~';
}
}
我试图改变我的tabulero[0][j]=j;to tabuleiro[0][j]=j+'0';但它只会迭代到9,然后再次给我奇怪的字符
如果我没有错,我认为这与ASCII码有关。如果我错了,请纠正我,但我不知道如何解决这个问题
请你解释一下我该如何解决这个问题。为了精确控制我建议的角色
tabuleiro[0][j] = "123456789T"[j];
这将从该字符串中选取第j个字符
顺便说一句,您得到“:”的原因是因为“:”是“9”之后的下一个ascii字符-请参见“:”的字符代码是10+“0”=58的字符代码,这是“:”的字符代码。您可以考虑从游戏数组中删除列和行名称。他们只是标签,而不是我认为的游戏的一部分
#define board_size 10
及
具有绘制游戏板的功能:
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");
}
}
你需要发布一篇文章。你写道:我试图改变我的tabulero[0][j]=j;to tabuleiro[0][j]=j+'0';但它只会迭代到9,然后再次给我奇怪的字符。。。是:你提到的那个奇怪的角色?你期待什么来代替这个奇怪的角色?需要更多信息,但是tabuleiro[i][0]=letra[i-1];当i==0时,将得到一个负索引。可能不是您想要的。请不要将文本作为图形发布。因为这是一款基于文本的游戏,你完全可以将内容粘贴为文本。你想在第10列的顶部添加哪个字符?所以我不能只说tabuleiro[1][1]=~当我写printf%c时,tabuleiro[1][1]会将~字符打印回来?因为如果我这样做。。。它用单引号把我打印了5个字符。双引号用于字符串。建议使用字符数组,我认为这也是letra数组。字符算术是一个粗略的东西。不过,对于dez来说,可能要把它改成123456789D。但是:可能不是因为ASCII。更一般地说,这是因为编译器被告知使用或默认使用UTF-8的执行字符集,而终端的编码可能是CP860。从技术上讲,它们应该匹配,但如果程序用户在程序使用的字符上匹配,则可以通过。否-这是因为“:”是9之后的下一个字符,这里没有什么神秘之处
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");
}
}