用c语言写一个三元组的转置矩阵代码
时间: 2024-12-10 19:31:40 浏览: 22
在C语言中,由于三元组通常不是标准的数据结构,我们一般会使用数组或者结构体来表示矩阵的元素。这里假设你有一个二维数组来表示矩阵,那么转置矩阵可以按照以下步骤编写:
```c
#include <stdio.h>
// 定义一个结构体代表矩阵的元素
typedef struct {
int val; // 值
} MatrixTriple;
// 用于存储矩阵数据
MatrixTriple matrix[ROW][COL]; // ROW 和 COL 是矩阵的实际行数和列数
// 转置矩阵函数
void transpose(int row, int col) {
int transposedRow = ROW - 1; // 新的行数等于原来的列数
for (int i = 0; i < row; i++) { // 遍历原矩阵每一行
for (int j = 0; j < col; j++) { // 遍历原矩阵每一列
// 交换原矩阵(i, j)位置的值和新矩阵(transposedRow, j)位置的值
int temp = matrix[i][j].val;
matrix[transposedRow][j] = (MatrixTriple){temp}; // 存储转置后的值
}
transposedRow--;
}
}
// 示例:创建矩阵并打印转置后的矩阵
#define ROW 3
#define COL 3
int main() {
// 初始化矩阵
for (int i = 0; i < ROW; i++)
for (int j = 0; j < COL; j++)
matrix[i][j].val = (i * COL + j);
printf("Original matrix:\n");
for (int i = 0; i < ROW; i++) {
for (int j = 0; j < COL; j++) {
printf("%d ", matrix[i][j].val);
}
printf("\n");
}
transpose(ROW, COL); // 转置矩阵
printf("\nTransposed matrix:\n");
for (int i = 0; i < ROW; i++) {
for (int j = 0; j < COL; j++) {
printf("%d ", matrix[i][j].val);
}
printf("\n");
}
return 0;
}
阅读全文