矩阵转置,用指针方式完成

(矩阵的转置)编写两个函数fun和display,功能分别是完成矩阵的转置和输出矩阵;在主函数中完成从键盘上输入矩阵行数和列数,用随机函数产生矩阵的元素(取值范围为[0- 100)的整数),存放于二维数组a中并调用

dispaly输出a,接着调用fum函数阵b。

以下是用指针方式完成矩阵转置的 C 语言代码:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

#define MAX_ROW 10
#define MAX_COL 10

// 矩阵转置函数
void fun(int *a, int *b, int row, int col) {
    int i, j;
    for (i = 0; i < row; i++) {
        for (j = 0; j < col; j++) {
            *(b + j * row + i) = *(a + i * col + j);
        }
    }
}

// 输出矩阵函数
void display(int *a, int row, int col) {
    int i, j;
    for (i = 0; i < row; i++) {
        for (j = 0; j < col; j++) {
            printf("%d ", *(a + i * col + j));
        }
        printf("\n");
    }
}

int main() {
    int a[MAX_ROW][MAX_COL], b[MAX_ROW][MAX_COL];
    int row, col, i, j;
    srand(time(NULL)); // 初始化随机数生成器

    printf("请输入矩阵的行数和列数:");
    scanf("%d%d", &row, &col);

    // 生成随机矩阵
    for (i = 0; i < row; i++) {
        for (j = 0; j < col; j++) {
            a[i][j] = rand() % 100; // 产生0-99之间的随机数
        }
    }

    printf("原矩阵为:\n");
    display(&a[0][0], row, col);

    // 转置矩阵
    fun(&a[0][0], &b[0][0], row, col);

    printf("转置矩阵为:\n");
    display(&b[0][0], col, row);

    return 0;
}

在这个代码中,我们用 int *aint *b 来表示矩阵,其中 a 表示原矩阵,b 表示转置后的矩阵。在 fun 函数中,我们使用指针的方式来访问矩阵元素,例如 *(a + i * col + j) 表示矩阵中第 i 行第 j 列的元素。在 display 函数中,我们同样使用指针的方式来访问矩阵元素。在主函数中,我们使用二维数组 ab 来存储矩阵元素,然后将它们的首地址传递给 fun 函数和 display 函数。