读入一个矩阵,输出该矩阵以第一行第一列数字为中心,顺时针旋转90度后的新矩阵
时间: 2024-11-20 21:30:03 浏览: 20
当你有一个矩阵,例如是一个二维数组,你可以通过以下几个步骤将其顺时针旋转90度:
1. **创建新矩阵**:首先,创建一个新的矩阵,其尺寸等于原矩阵的列数乘以行数。
2. **填充新矩阵**:从原矩阵的第一行开始,按照左上到右下的顺序,将每个元素依次填入新矩阵对应的位置。对于原矩阵中的元素 (i, j),它在新矩阵中的位置将是 (j, n - i - 1),其中n是原矩阵的行数。
举例来说,如果你有矩阵 `[[1, 2], [3, 4]]`,旋转后的矩阵应该是 `[[3, 1], [4, 2]]`。
这里是一个简单的Python示例:
```python
def rotate_matrix(matrix):
n = len(matrix)
rotated = [[0] * n for _ in range(n)] # 创建新矩阵
# 将原矩阵的元素按顺时针顺序放入新矩阵
for i in range(n):
for j in range(n):
rotated[j][n - i - 1] = matrix[i][j]
return rotated
# 测试
matrix = [[1, 2], [3, 4]]
rotated_matrix = rotate_matrix(matrix)
print(rotated_matrix) # 输出:[[3, 1], [4, 2]]
```
相关问题
编写一个程序,读入一个短阵,输出该矩阵以第一行第一列数字为中心,顺时针旋转90度后的新矩阵
要编写一个程序实现矩阵顺时针旋转90度,你可以按照以下步骤操作:
1. **输入矩阵**[^1]:
使用提供的输入方式读取矩阵的行数`m`和列数`n`,以及实际的矩阵元素。
2. **创建临时二维数组**:
初始化一个新的二维数组来存储旋转后的矩阵。由于是以第一行第一列作为中心旋转,所以新矩阵的大小将是`n`乘以`m`。
3. **填充新矩阵**:
从原始矩阵的第一行开始,将每一行逆序添加到新矩阵对应列上。这相当于顺时针旋转了90度。
以下是Python代码示例:
```python
def rotate_matrix(matrix):
m, n = len(matrix), len(matrix[0]) # 获取矩阵的行数和列数
rotated = [[0] * m for _ in range(n)] # 创建新的空矩阵
# 以第一行第一列为中心顺时针旋转
for i in range(m):
for j in range(i, n): # 注意这里是从i到n而不是n-1
rotated[j][i] = matrix[i][j]
return rotated
# 示例
input_matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
rotated_matrix = rotate_matrix(input_matrix)
for row in rotated_matrix:
print(row)
```
运行上述代码,会得到输入矩阵顺时针旋转90度后的结果。
用C++编写一个程序,读入一个短阵,输出该矩阵以第一行第一列数字为中心,顺时针旋转90度后的新矩阵,
要使用C++编写一个程序来实现矩阵顺时针旋转90度,你可以参考以下代码:
```cpp
#include <iostream>
using namespace std;
#define N 3
void rotateMatrix(int a[N][N]) {
// 创建新矩阵b用于存储旋转后的结果
int b[N][N];
// 顺时针旋转矩阵
for (int i = 0; i < N; ++i) {
for (int j = 0; j < N; ++j) {
// 将原矩阵的对角线元素复制到新矩阵
b[j][N - i] = a[i][j];
}
}
// 打印旋转后的矩阵
for (int i = 0; i < N; ++i) {
for (int j = 0; j < N; ++j) {
cout << b[i][j] << " ";
}
cout << endl;
}
}
int main() {
int a[N][N];
// 读取输入矩阵
for (int i = 0; i < N; ++i) {
for (int j = 0; j < N; ++j) {
cin >> a[i][j];
}
}
// 旋转并打印矩阵
rotateMatrix(a);
return 0;
}
```
这个程序定义了一个`rotateMatrix`函数,它接受一个二维数组作为参数,然后通过两层嵌套循环实现矩阵的顺时针旋转,并将结果保存在另一个二维数组`b`中。最后,在主函数中读取输入矩阵并调用`rotateMatrix`函数显示旋转后的矩阵。
阅读全文