移动二维数组中的元素

Moving elements in 2d array

我有一个用随机数填充的二维数组。

例如:

#define d 4

int main(void)
{
int a[d][d];
int primary[d], secondary[d];
size_t i, j;

srand(time(NULL)); /* fill array with random numbers */
for (i = 0; i < d; i++)
  {for (j = 0; j < d; j++)
    a[i][j] = rand() % 100;
  }

如何改变对角线。例如:

1 0 0 0 2        2 0 0 0 1
0 3 0 4 0        0 4 0 3 0
0 0 5 0 0   to   0 0 5 0 0
0 6 0 7 0        0 7 0 6 0
8 0 0 0 9        9 0 0 0 8

任务是打印大小为 d 的随机矩阵,然后使用循环更改对角线位置并打印它again.However我不知道循环应该是什么样子。

感谢任何提示或示例。

循环 while j < d / 2 然后交换值:

for (i = 0; i < d; i++) {
    for (j = 0; j < d / 2; j++) {
        int temp = a[i][j];
        a[i][j] = a[i][d - j -1];
        a[i][d - j -1] = temp;
    }
}