题目:要求如下,求出一给定矩阵顺时针旋转90度后的矩阵。原矩阵和旋转后的矩阵如图所示。原矩阵 旋转后矩阵 2 3 5 7 89 并输出 原矩阵存储在二维数组a中,将旋转后的矩阵存储在二维数组中, ****不可删除 *******Begin*** ***End*****
时间: 2024-05-06 13:13:31 浏览: 78
要求将给定的矩阵顺时针旋转90度后,可以按照以下步骤进行操作:
1. 创建一个新的二维数组b,用于存储旋转后的矩阵。
2. 获取原矩阵的行数和列数,分别记为rows和cols。
3. 遍历原矩阵的每个元素,将其放置到旋转后的位置上。具体操作如下:
- 对于原矩阵中的元素a[i][j],在旋转后的矩阵中,它的新位置为b[j][rows-i-1]。
- 即原矩阵中的第i行第j列元素,在旋转后的矩阵中的位置为第j行第(rows-i-1)列。
4. 遍历完所有元素后,旋转后的矩阵b即为所求。
下面是一种可能的实现方式:
```c
#include <stdio.h>
#define MAX_ROWS 100
#define MAX_COLS 100
void rotateMatrix(int a[MAX_ROWS][MAX_COLS], int rows, int cols, int b[MAX_COLS][MAX_ROWS]) {
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
b[j][rows - i - 1] = a[i][j];
}
}
}
int main() {
int a[MAX_ROWS][MAX_COLS] = {{2, 3}, {5, 7}, {8, 9}};
int rows = 3;
int cols = 2;
int b[MAX_COLS][MAX_ROWS];
rotateMatrix(a, rows, cols, b);
printf("原矩阵:\n");
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
printf("%d ", a[i][j]);
}
printf("\n");
}
printf("旋转后的矩阵:\n");
for (int i = 0; i < cols; i++) {
for (int j = 0; j < rows; j++) {
printf("%d ", b[i][j]);
}
printf("\n");
}
return 0;
}
```
运行以上代码,将会输出如下结果:
```
原矩阵:
2 3
5 7
8 9
旋转后的矩阵:
8 5 2
9 7 3
```
阅读全文