在这段代码中,我使用的是整数数组,因为我觉得如果它们是整数,我正在处理的项目会更容易。在这个数组中,我将每个位置分配给46(ASCII为'。')并打印出该ASCII的(char)版本。我制作棋盘的原因是因为我将在这个棋盘上放置数字,但我想保持'。'我打印。
当前输出:
. . . . .
. . . . .
. . . . .
. . . . .
☺ . . . .
期望的输出:
. . . . .
. . . . .
. . . . .
. . . . .
1 . . . .
使用(char)进行转换将打印'。' (ASCII 46)就好了,但是我的数字会随着当前输出的指示而变化。
我该如何解决这个问题?我一直在盯着这个。
我的代码:
using namespace std;
#include <stdlib.h>
#include <iostream>
#include <time.h>
#include <math.h>
void addRandomNumberToBoard(int *board, int &arrSize)
{
srand ((int)time(0)); //seed random
int destination;
do destination= rand() % (arrSize-1);
while ( board[destination] != '.'); // place on a random spot on the board
int randomNumber=rand() < RAND_MAX / 2 ? 1 : 2; //generate number 1 or 2
board[ destination] = randomNumber; //place the number there
}
int printBoard(int &i, int &arrSize, int *board)
{
for(i=0; i<arrSize; i++)
{
if( i % 5 == 0 && i!=0) //after every 5 positions print a new line
cout<<"\n\n";
cout<<" "<<(char)board[i]; //this MIGHT be the problem
}
}
int main()
{
int i;
int arrSize=25;
int board[arrSize];
for(i=0; i<arrSize; i++) //declare all positions as ASCII '.'
board[i]='.'; //this MIGHT be the other problem
addRandomNumberToBoard(board,arrSize);
printBoard(i, arrSize, board);
}
答案 0 :(得分:0)
为什么你没有使用char数组?我觉得这样会更容易。
如果我能
,我会发表评论答案 1 :(得分:0)
数字1
的ascii编号为49
。如果您要打印数字1
,则必须发送49
的ascii值。对于0
:
0 - 48
1 - 49
2 - 50
3 - 51
4 - 52
5 - 53
6 - 54
7 - 55
8 - 56
9 - 57
因此,您只需为任何数字添加48即可。但这仅适用于个位数。
我建议你使用一个字符数组,因为你可以看到这很复杂,收效甚微。
检查此ascii表here。
答案 2 :(得分:0)
只需在您的值中添加48即可。即。
board[destination] = randomNumber + 48; // Ascii 49 is '1', 50 is '2'.
有关可打印字符的小数值,请参阅ascii chart。