有人可以帮助我这样做 我想先填入第一行,然后填入底行 我怎么能这样做这是我到目前为止所做的:
const int rows = 2;
const int columns = 6;
int grid[rows][columns] = { 0 }; /* 0 0 0 0 0 0
0 0 0 0 0 0
*/
for (int i = 0; i < rows; i++)
{
for (int j = 0; j < columns; j++)
{
grid[i][j] = 1; //fill the top row only
/* Output:
1 1 1 1 1 1
0 0 0 0 0 0
*/
}
}
for (int i = 0; i < rows; i++)
{
for (int j = 0; j < columns; j++)
{
grid[i][j] = 2; //fill the bottom row only
/* Output:
1 1 1 1 1 1
2 2 2 2 2 2
*/
}
}
在这种情况下:假设我们不知道行数和列数 我是c ++和数组的初学者,如果有人可以提供帮助
答案 0 :(得分:3)
不需要两个循环甚至2D循环。由于您事先知道只填充了两行,因此可以遍历列并在单循环中指定行。
for (int i = 0; i < columns; ++i) {
grid[0][i] = 1;
grid[rows - 1][i] = 2;
}
答案 1 :(得分:1)
你在这段代码中所做的是迭代你的数组两次。第一次,正在发生的事情是,数组中的每个项都设置为1.这是因为您的变量i
从0
变为rows
,j
从0
转到cols
。因此,在执行grid[i][j]
时,如果有意义的话,这将最终通过所有可能性(array[0][0]
,array[0][1]
... array[1][0]
,array[1][1]
...)
然后,除了用2
填充整个数组之外,你做了同样的事情。这似乎不是你想要的。相反,你应该做这样的事情:
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
grid[i][j] = i+1;
}
}