2017-06-29 47 views
-2

有人可以帮我做到这一点 我想只填写第一行然后是最后一行 我怎么能这样做这就是我所拥有的到目前为止:C++二维数组填充只有顶行然后底行

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 
      */ 
     }  
    } 

在这种情况下:可以说,我们不知道阵列请,如果有人可以帮助

+0

对(INT J = 0;Ĵ<列; J ++){ 网格 [0] [j] = 1; grid [row-1] [j] = 1; } – user1438832

回答

3

行和列 我是在C初学者++和数量有没有需要两个循环甚至2D循环。既然你事先知道你只填充了两行,你可以遍历列并指定单个循环内的行。

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

可以说我们不知道有两行6列 – craftx27

+0

@ craftx27变量已被使用。这将适用于任意数量的行和列,因为'0'总是第一行,'rows - 1'总是最后一行。 – Charles

+0

这实际上是非常好的 – craftx27

1

你在做的那段代码是在你的数组上迭代两次。最早的时候,发生了什么,是数组中的每个项设置为1,这是因为你的变量i去从0rows,并j去从0cols。因此,在做grid[i][j]时,如果有意义的话,这将最终经历所有可能性(array[0][0],array[0][1] ... array[1][0]array[1][1] ...)。

然后,你正在做同样的事情,除了用2 s填充你的整个阵列。这似乎不是你想要的。相反,应该这样做:

for (int i = 0; i < rows; i++) { 
    for (int j = 0; j < cols; j++) { 
     grid[i][j] = i+1; 
    } 
} 
+0

这编辑了所有的行; OP不希望这样。他只想要第一行和最后一行。 – Charles

+0

虽然这个例子只有两行的事实可能会令人困惑... – Charles

+1

是的,所以在这种情况下,你的答案做他想做的事:) –