本文共 1806 字,大约阅读时间需要 6 分钟。
完整源码
#import
矩阵结构定义
typedef struct { int rows; // 矩阵的行数 int cols; // 矩阵的列数 int **matrix; // 矩阵数据存储 } Matrix; 矩阵初始化函数
Matrix createMatrix(int rows, int cols) { Matrix matrix; matrix.rows = rows; matrix.cols = cols; matrix.matrix = (int **)malloc(rows * cols); return matrix; } 矩阵转置函数
Matrix transposeMatrix(Matrix matrix) { int i, j, k; Matrix transposed; transposed.rows = matrix.cols; transposed.cols = matrix.rows; transposed.matrix = (int **)malloc(transposed.rows * transposed.cols); for (i = 0; i < transposed.rows; i++) { for (j = 0; j < transposed.cols; j++) { transposed.matrix[i * transposed.cols + j] = matrix.matrix[j * matrix.cols + i]; } } return transposed; } 测试示例
int main(int argc, const char *argv) { // 创建一个 2x3 的矩阵 Matrix matrix = createMatrix(2, 3); // 初始化矩阵数据 matrix.matrix[0][0] = 1; matrix.matrix[0][1] = 2; matrix.matrix[0][2] = 3; matrix.matrix[1][0] = 4; matrix.matrix[1][1] = 5; matrix.matrix[1][2] = 6; // 调用转置函数 Matrix transposed = transposeMatrix(matrix); // 输出原矩阵 printf("原矩阵:\n"); for (int i = 0; i < matrix.rows; i++) { for (int j = 0; j < matrix.cols; j++) { printf("%d ", matrix.matrix[i][j]); } printf("\n"); } // 输出转置后的矩阵 printf("转置后的矩阵:\n"); for (int i = 0; i < transposed.rows; i++) { for (int j = 0; j < transposed.cols; j++) { printf("%d ", transposed.matrix[i][j]); } printf("\n"); } return 0; } 代码解释
该程序首先定义了一个矩阵结构,包含矩阵的行数、列数以及矩阵数据的存储地址。接着定义了矩阵的初始化函数 createMatrix 和矩阵转置函数 transposeMatrix。createMatrix 函数用于创建指定大小的矩阵,并分配内存空间。transposeMatrix 函数则负责对矩阵进行转置操作。最后,main 函数用于测试代码,创建一个简单的矩阵并输出其转置结果。转载地址:http://oksfk.baihongyu.com/