在C语言编程中,如何实现一个函数来逆时针旋转给定的矩阵?
时间: 2024-10-19 08:16:51 浏览: 42
在C语言中,要实现一个函数来逆时针旋转给定的矩阵,你可以采用两步策略:首先将整个矩阵顺时针旋转90度,然后再水平反转这个新矩阵。这是一个经典的算法问题,通常使用临时变量或数组来辅助操作。
下面是一个简单的示例,假设我们有一个二维数组`matrix`:
```c
#include <stdio.h>
// 定义矩阵大小
#define ROWS matrix.GetLength()
#define COLS matrix.GetLength()[0]
void rotateMatrix(int matrix[ROWS][COLS]) {
// 创建一个新的临时矩阵temp
int temp[ROWS][COLS];
// 顺时针旋转90度
for (int i = 0; i < ROWS; i++) {
for (int j = 0; j < COLS - 1; j++) {
temp[j][ROWS - 1 - i] = matrix[i][j]; // 将左下角元素复制到临时矩阵上角
}
temp[j][ROWS - 1] = matrix[i][COLS - 1]; // 处理右下角元素
}
// 水平反转临时矩阵
for (int i = 0; i < ROWS; i++) {
for (int j = 0; j < COLS / 2; j++) {
int tempTemp = temp[i][j];
temp[i][j] = temp[i][COLS - 1 - j];
temp[i][COLS - 1 - j] = tempTemp;
}
}
// 更新原矩阵
for (int i = 0; i < ROWS; i++) {
for (int j = 0; j < COLS; j++) {
matrix[i][j] = temp[i][j];
}
}
}
// 示例矩阵
int main() {
int matrix[4][4] = {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}, {13, 14, 15, 16}};
rotateMatrix(matrix);
// 现在矩阵已经被逆时针旋转了
// 打印结果
for (int i = 0; i < ROWS; i++) {
for (int j = 0; j < COLS; j++) {
printf("%d ", matrix[i][j]);
}
printf("\n");
}
return 0;
}
阅读全文