矩阵转置
-
-
- C语言代码
- C++ 语言代码
- Java语言代码
- Python语言代码
-
|-----------------------------|
| 💐The Begin💐点点关注,收藏不迷路💐 |
输入一个n行m列的矩阵A,输出它的转置 A T A^T AT。
输入
第一行包含两个整数n和m,表示矩阵A的行数和列数。1 <= n <= 100,1 <= m <= 100。
接下来n行,每行m个整数,表示矩阵A的元素。相邻两个整数之间用单个空格隔开,每个元素均在1~1000之间。
输出
m行,每行n个整数,为矩阵A的转置。相邻两个整数之间用单个空格隔开。
样例输入
c
3 3
1 2 3
4 5 6
7 8 9
样例输出
c
1 4 7
2 5 8
3 6 9
先获取矩阵的行数和列数,接着读取原矩阵的元素内容,然后按照矩阵转置的规则(即将原矩阵的行元素变为转置矩阵的列元素,原矩阵的列元素变为转置矩阵的行元素)来构建转置矩阵,最后按照要求的格式输出转置后的矩阵。
C语言代码
c
#include <stdio.h>
int main() {
int n, m;
scanf("%d %d", &n, &m); // 读取矩阵的行数n和列数m
int matrix[n][m]; // 定义二维数组存储原矩阵元素
int transpose[m][n]; // 定义二维数组存储转置后的矩阵元素
// 1. 读取原矩阵元素
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
scanf("%d", &matrix[i][j]); // 逐行逐列读取原矩阵元素
}
}
// 2. 进行矩阵转置操作,将原矩阵元素赋值到转置矩阵对应位置
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
transpose[j][i] = matrix[i][j]; // 原矩阵的第i行第j列元素赋值到转置矩阵的第j行第i列
}
}
// 3. 输出转置后的矩阵
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
printf("%d ", transpose[i][j]); // 逐行逐列输出转置矩阵元素
}
printf("\n");
}
return 0;
}
C++ 语言代码
cpp
#include <iostream>
using namespace std;
int main() {
int n, m;
cin >> n >> m; // 输入矩阵的行数n和列数m
int matrix[n][m]; // 创建二维数组存储原矩阵元素
int transpose[m][n]; // 创建二维数组存储转置后的矩阵元素
// 1. 输入原矩阵元素
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
cin >> matrix[i][j]; // 逐行逐列输入原矩阵元素
}
}
// 2. 执行矩阵转置,把原矩阵元素按规则赋给转置矩阵
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
transpose[j][i] = matrix[i][j]; // 原矩阵的第i行第j列元素给到转置矩阵的第j行第i列
}
}
// 3. 输出转置后的矩阵
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
cout << transpose[i][j] << " "; // 逐行逐列输出转置矩阵元素
}
cout << endl;
}
return 0;
}
Java语言代码
java
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt(); // 获取矩阵的行数n
int m = scanner.nextInt(); // 获取矩阵的列数m
int[][] matrix = new int[n][m]; // 定义二维数组存储原矩阵元素
int[][] transpose = new int[m][n]; // 定义二维数组存储转置后的矩阵元素
// 1. 读取原矩阵元素
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
matrix[i][j] = scanner.nextInt(); // 逐行逐列读取原矩阵元素并存入数组
}
}
// 2. 进行矩阵转置,将原矩阵元素按对应位置赋给转置矩阵
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
transpose[j][i] = matrix[i][j]; // 原矩阵的第i行第j列元素赋值到转置矩阵的第j行第i列
}
}
// 3. 输出转置后的矩阵
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
System.out.print(transpose[i][j] + " "); // 逐行逐列输出转置矩阵元素
}
System.out.println();
}
}
}
Python语言代码
python
n, m = map(int, input().split()) # 获取输入矩阵的行数n和列数m
matrix = [list(map(int, input().split())) for _ in range(n)] # 获取原矩阵元素,构建二维列表
transpose = [[matrix[j][i] for j in range(n)] for i in range(m)] # 使用列表推导式进行矩阵转置操作
# 输出转置后的矩阵
for row in transpose:
print(" ".join(map(str, row))) # 将每行的整数列表转换为字符串,用空格连接后输出
|---------------------------|
| 💐The End💐点点关注,收藏不迷路💐 |