先产生一个二维数组,然后沿对角线对调,输出对调后的数组?

如题所述

沿对角线对调即交换a[i][j]和a[j][i]

C语言代码为:

运行结果为:

输出符合要求,望采纳~

附源码:

#include <stdio.h>

#define N 4

void print(int a[][N]) { // 打印二维数组

    int i, j;

    for (i = 0; i < N; i++) {

        for (j = 0; j < N; j++)

            printf("%d ", a[i][j]);

        printf("\n");

    }

}

void rotate(int a[][N]) { // 对调,交换a[i][j]与a[j][i]

    int i, j, t;

    for (i = 0; i < N; i++) {

        for (j = 0; j < i; j++) {

            t = a[i][j];

            a[i][j] = a[j][i];

            a[j][i] = t;

        }

    }

}

int main() {

    int a[N][N], i, j;

    for (i = 0; i < N; i++) { // 输入二维数组

        for (j = 0; j < N; j++)

            scanf("%d", &a[i][j]);

    }

    printf("原数组:\n");

    print(a);

    rotate(a);

    printf("对调后:\n");

    print(a);

    return 0;

}

温馨提示:答案为网友推荐,仅供参考