我是编程的新手,我正在尝试填充一个简单的2d数组,但是当我测试代码时,它显示为1d数组,包含我所需的2d数组的元素。
void clearBoard(int row, int col)
{
int grid[row][col];
for (int i = 0; i < row; i++) {
for (int j = 0; j < col;j++) {
grid[i][j] = 0;
cout << grid[i][j] << " ";
}
} cout << endl;
}
int main()
{
int row1 = 2;
int col1 = 2;
//int _row = atoi(argv[0]);
//int _col = atoi(argv[2]);
//int _grid[5][5];
//setBoard(row, col);
//cout << "enter the size of the board:";
//cin >> _row >> _col;
clearBoard(row1, col1);
这是输出:
0 0 0 0
我想得到我的输出:
0 0
0 0
如你所见,我注释掉了
int _row = atoi(argv[0]);
int _col = atoi(argv[2]);
cin >> _row >> _col;
是获得任何大小数组的正确方法吗?
谢谢你们。
答案 0 :(得分:3)
将你的cout << endl;
移动到你的for循环中(它实际上是两个都没有),因为除非你将它移动到主for循环中,否则它将打印所有结果而没有换行。:< / p>
注意:由于C ++中的数组必须具有常量大小,int grid[row][col]
将不起作用,因为row和col是非常量的参数。
void clearBoard(int row, int col)
{
int grid[row][col];
for (int i = 0; i < row; i++)
{
for (int j = 0; j < col;j++)
{
grid[i][j] = 0; cout << grid[i][j] << " ";
}
cout << endl;
}
}
对于常量大小错误的修复方法是使用std::vector<std::pair<int, int> >
代替,但这需要进行一些重写。
答案 1 :(得分:0)
这是因为您在外循环后打印 for (int i = 0; i < row; i++) {
for (int j = 0; j < col;j++) {
grid[i][j] = 0;
cout << grid[i][j] << " ";
}
cout << endl; //Print newline after printing a row
}
。
只需将其更改为:
const int rows = 5;
const int cols = 5;
是获得任何大小数组的正确方法吗?
与Java不同,您可以在运行时声明数组大小。在C ++中,如果要设置数组大小,则大小必须是常量。
你可以这样做:
identify