提供一个将二维数组m x n旋转90,180,270的C函数
时间: 2024-03-02 08:49:29 浏览: 72
以下是一个将m x n的二维数组旋转90度、180度和270度的C函数:
```c
void rotate(int matrix[][n], int m, int n, int degree) {
int temp[m][n];
switch (degree) {
case 90:
// 顺时针旋转90度
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
temp[j][m - 1 - i] = matrix[i][j];
}
}
break;
case 180:
// 顺时针旋转180度
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
temp[m - 1 - i][n - 1 - j] = matrix[i][j];
}
}
break;
case 270:
// 顺时针旋转270度
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
temp[n - 1 - j][i] = matrix[i][j];
}
}
break;
default:
// 错误的角度
printf("Invalid degree\n");
return;
}
// 将旋转后的数组复制回原数组
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
matrix[i][j] = temp[i][j];
}
}
}
```
该函数接收旋转角度作为参数,根据角度进行不同的处理,最后将结果复制回原数组。注意,该函数只支持90度、180度和270度的旋转。如果需要支持其他角度的旋转,需要修改函数实现。
阅读全文