如何反转此阵列?

时间:2014-03-12 21:18:46

标签: c

char Chessboard[8][8] = {'r', 'n', 'b', 'q', 'k', 'b', 'n', 'r', '*', '*', '*', '*', '*', '*', '*', '*',\
    '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', \
    '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '+', '+', '+', '+', '+', '+', '+', '+',\
    'R', 'N', 'B', 'Q', 'K', 'B', 'N', 'R'}; //Initializing board

所以,我有这个棋盘,我想把它转过来让它面对对手,也就是倒转阵列,这样价值就会颠倒过来。我只需要一个程序来反转这个数组并将它存储在数组Chessboard中,这样它就不仅仅是一个printf函数。

有人可以帮助我吗?

2 个答案:

答案 0 :(得分:1)

真的很简单。这不是逆转,而是旋转180度。就坐标而言,您只需将i,j映射到7-i,7-j

你为董事会制作了一个类型:

typedef char Board[8][8];

然后你会使用这个功能:

Board reversed(const Board board)
{
    Board result;
    for (int i=0; i<8; i++)
        for (int j=0; j<8; j++)
            result[i,j] = board[7-i,7-j];
    return result;
}

答案 1 :(得分:0)

这听起来像某人的CS家庭作业一样令人怀疑....祝你在嵌套循环测试中好运: - )

int i, j;
for(i=0;i<4;i++){
  //just give each entry the value of its mirror by doing a swap
  for(j=0;j<8;j++){
    char tmp = Chessboard[i][j];
    Chessboard[i][j] = Chessboard[7-i][7-j];
    Chessboard[7-i][7-j] = tmp;
  }
}