c ++ 2D数组仅填充顶行然后填充底行

时间:2017-06-29 04:57:33

标签: c++ arrays multidimensional-array

有人可以帮助我这样做  我想先填入第一行,然后填入底行 我怎么能这样做这是我到目前为止所做的:

    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 ++和数组的初学者,如果有人可以提供帮助

2 个答案:

答案 0 :(得分:3)

不需要两个循环甚至2D循环。由于您事先知道只填充了两行,因此可以遍历列并在单循环中指定行。

for (int i = 0; i < columns; ++i) {
    grid[0][i] = 1;
    grid[rows - 1][i] = 2;
}

答案 1 :(得分:1)

你在这段代码中所做的是迭代你的数组两次。第一次,正在发生的事情是,数组中的每个项都设置为1.这是因为您的变量i0变为rowsj0转到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;
    }
}