输入一个N*M的矩阵,要求将这个矩阵右转90度后输出。 例如矩阵:A B C 右转90度后变成: D A D E F E B F C
时间: 2024-01-21 18:02:55 浏览: 63
好的,这个问题可以用代码来解决。以下是一个Python的实现:
```python
def rotate(matrix):
n = len(matrix)
m = len(matrix[0])
rotated_matrix = [[0] * n for _ in range(m)]
for i in range(n):
for j in range(m):
rotated_matrix[j][n-i-1] = matrix[i][j]
return rotated_matrix
```
这个函数接受一个二维列表作为输入,表示一个N*M的矩阵。它首先创建一个新的M*N的矩阵`rotated_matrix`,然后通过两个循环遍历原始矩阵中的每个元素,将其旋转到新的矩阵中。具体来说,对于原始矩阵中的元素`matrix[i][j]`,它被旋转到新矩阵中的位置`rotated_matrix[j][n-i-1]`。最后,函数返回旋转后的矩阵`rotated_matrix`。
你可以像这样使用这个函数:
```python
matrix = [['A', 'B', 'C'], ['D', 'E', 'F']]
rotated_matrix = rotate(matrix)
for row in rotated_matrix:
print(row)
```
这将输出:
```
['D', 'A']
['E', 'B']
['F', 'C']
```
这正是右转90度后的矩阵。
相关问题
用c语言实现输入一个N*M的矩阵,要求将这个矩阵右转90度后输出
好的,针对你的问题,我可以给出如下的C语言代码实现:
```c
#include <stdio.h>
#define MAX_N 100
#define MAX_M 100
int main() {
int n, m;
int matrix[MAX_N][MAX_M];
// 读入矩阵的大小
scanf("%d %d", &n, &m);
// 读入矩阵的元素
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
scanf("%d", &matrix[i][j]);
}
}
// 将矩阵右转90度
for (int j = 0; j < m; j++) {
for (int i = n - 1; i >= 0; i--) {
printf("%d ", matrix[i][j]);
}
printf("\n");
}
return 0;
}
```
这段代码中,我们首先读入了矩阵的大小和元素,然后通过两层循环将矩阵右转90度,并输出结果。其中,我们使用了一个二维数组 `matrix` 来存储矩阵,定义了两个常量 `MAX_N` 和 `MAX_M` 来限制矩阵的大小,避免内存溢出。
希望这个代码可以帮到你,如果还有其他问题,请随时问我。
c语言输入一个N*M的矩阵,要求将这个矩阵右转90度后输出。 例如矩阵:A B C 右转90度后变成: D A D E F E B F C 输入 第一行包含两个参数n和m,表示矩阵有n行m列,1<=n,m<=10 接下来输入n行数据,每行包含m个元素,每个元素用字母表示 输出 输出右转90度后的矩阵
下面是一个C语言的示例代码:
```c
#include <stdio.h>
#define MAX_N 10
#define MAX_M 10
int main() {
int n, m;
char matrix[MAX_N][MAX_M]; // 定义一个二维字符数组,存储矩阵
scanf("%d %d", &n, &m); // 输入矩阵的行数和列数
for (int i = 0; i < n; i++) {
scanf("%s", matrix[i]); // 输入每一行的数据
}
for (int j = 0; j < m; j++) {
for (int i = n - 1; i >= 0; i--) { // 从下往上遍历每一行
printf("%c", matrix[i][j]); // 输出右转90度后的字符
}
printf("\n"); // 每输出完一列换行
}
return 0;
}
```
输入样例:
```
3 3
ABC
DEF
GHI
```
输出样例:
```
GDA
HEB
IFC
```
阅读全文