#include <stdio.h>
#include <stdlib.h>
void transpose(int **matrix, int rows, int cols) {
int **transposed = (int **)malloc(cols * sizeof(int *));
for (int i = 0; i < cols; i++) {
transposed[i] = (int *)malloc(rows * sizeof(int));
}
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
transposed[j][i] = matrix[i][j];
}
}
for (int i = 0; i < rows; i++) {
free(matrix[i]);
}
free(matrix);
matrix = transposed;
}
int main() {
int rows, cols;
printf("请输入矩阵的行数和列数: ");
scanf("%d %d", &rows, &cols);
int **matrix = (int **)malloc(rows * sizeof(int *));
for (int i = 0; i < rows; i++) {
matrix[i] = (int *)malloc(cols * sizeof(int));
}
printf("请输入矩阵元素:\n");
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
scanf("%d", &matrix[i][j]);
}
}
transpose(matrix, rows, cols);
printf("转置后的矩阵:\n");
for (int i = 0; i < cols; i++) {
for (int j = 0; j < rows; j++) {
printf("%d ", matrix[i][j]);
}
printf("\n");
}
for (int i = 0; i < cols; i++) {
free(matrix[i]);
}
free(matrix);
return 0;
}