c语言旋转二维数组90度
时间: 2024-12-07 22:10:27 浏览: 28
二维数组旋转.zip
在C语言中,旋转一个二维数组90度可以分为两步:首先将整个数组顺时针旋转45度,然后再次顺时针旋转45度,实际上相当于转了90度。这里是一个简单的示例,假设我们有一个由整数构成的二维数组`arr`,行数为`n`,列数也为`n`:
```c
void rotateMatrix(int arr[n][n], int n) {
// Step 1: 首先顺时针旋转45度
for (int layer = 0; layer < n / 2; layer++) {
// 对每一层进行处理
for (int i = layer; i < n - layer - 1; i++) {
// 交换左上和右下元素
int temp = arr[i][layer];
arr[i][layer] = arr[n - 1 - i][n - 1 - layer]; // 右下
arr[n - 1 - i][n - 1 - layer] = arr[n - 1 - layer][i]; // 左下
arr[n - 1 - layer][i] = arr[layer][n - 1 - i]; // 上右
arr[layer][n - 1 - i] = temp; // 左上
}
}
// Step 2: 再次顺时针旋转45度(实际上不需要这个步骤,因为第一次已经完成了90度)
// 如果你还想保持完整,可以添加如下代码,但这不是必需的,因为45度+45度=90度
// for (int layer = 0; layer < n / 2; layer++) {
// // 重复上述过程
// }
}
```
注意:这个函数假设输入的二维数组是正方形的,即行数和列数相等。如果你的数组不是正方形,你需要稍微调整循环条件。
阅读全文