在用 C 语言实现俄罗斯方 block 时,我试图将二维数组的内容向下移动。这是为了将 block 向下移动。该代码可以工作,但它不能仅移动元素一次,请参阅问题的图像(左上角的数字是确定 block 类型的随机数)。任何帮助表示赞赏。 下面是数组移位代码:
//Declare size of board
int board [22][10] = {};
//Shift down
for(i=2;i<20;i++)
{
for(z=1;z<10;z++)
{
board[i+1][z] = board[i][z];
}
}
最佳答案
每当移动数组的内容时,都必须按照与移动相反的方向进行操作。在您的情况下,您需要反转外循环的方向:
int board [22][10] = {};
for(i = 20; i-- > 2; ) {
for(z=1; z<9; z++) {
board[i+1][z] = board[i][z];
}
}
这使得未使用的值行像气泡一样在数组中上升。
<小时/>编辑:
编写上面的代码是为了匹配问题中发布的代码的明显预期行为。如果要移动整个数组,请使用以下代码:
for(i = sizeof(board)/sizeof(*board) - 1; i--; ) {
for(z = 0; z < sizeof(*board)/sizeof(**board); z++) {
board[i+1][z] = board[i][z];
}
}
关于c - 如何在C中向下移动二维数组元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23970721/