讲一个数组旋转90度c语言
时间: 2023-09-02 17:09:31 浏览: 203
假设要旋转的数组为`matrix`,且数组的大小为`n x n`,则可以使用以下代码来进行旋转:
```c
void rotate(int matrix[][n], int n) {
for (int i = 0; i < n / 2; i++) {
for (int j = i; j < n - i - 1; j++) {
int temp = matrix[i][j];
matrix[i][j] = matrix[n - j - 1][i];
matrix[n - j - 1][i] = matrix[n - i - 1][n - j - 1];
matrix[n - i - 1][n - j - 1] = matrix[j][n - i - 1];
matrix[j][n - i - 1] = temp;
}
}
}
```
这个函数中,我们使用了两个循环来遍历数组中需要旋转的元素。对于每个需要旋转的元素,我们使用一个`temp`变量来保存其值,然后按照顺时针旋转的方向将它和其他三个元素交换。最终,数组就被旋转了90度。
相关问题
二维数组旋转90度c语言
以下是C语言中二维数组顺时针旋转90度的代码实现:
```c
#include <stdio.h>
#define N 3
void rotate(int a[][N]) {
int b[N][N];
for (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++) {
b[i][j] = a[N - j - 1][i];
}
}
for (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++) {
a[i][j] = b[i][j];
}
}
}
int main() {
int a[N][N] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
printf("Before rotation:\n");
for (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++) {
printf("%d ", a[i][j]);
}
printf("\n");
}
rotate(a);
printf("After rotation:\n");
for (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++) {
printf("%d ", a[i][j]);
}
printf("\n");
}
return 0;
}
```
运行结果如下:
```
Before rotation:
1 2 3
4 5 6
7 8 9
After rotation:
7 4 1
8 5 2
9 6 3
```
c语言 三维数组旋转90度
可以通过以下步骤来旋转一个三维数组90度:
1. 定义一个新的三维数组,其维度与原数组旋转后的维度相同。
2. 使用三重循环,遍历原数组,将每个元素旋转并存储到新数组中。
3. 返回新数组。
以下是一个示例代码:
```c
#include <stdio.h>
void rotate(int arr[][3][3], int size) {
int new_arr[size][size][size];
for (int i = 0; i < size; i++) {
for (int j = 0; j < size; j++) {
for (int k = 0; k < size; k++) {
new_arr[k][j][size-i-1] = arr[i][j][k];
}
}
}
for (int i = 0; i < size; i++) {
for (int j = 0; j < size; j++) {
for (int k = 0; k < size; k++) {
arr[i][j][k] = new_arr[i][j][k];
}
}
}
}
int main() {
int arr[3][3][3] = {
{{1, 2, 3}, {4, 5, 6}, {7, 8, 9}},
{{10, 11, 12}, {13, 14, 15}, {16, 17, 18}},
{{19, 20, 21}, {22, 23, 24}, {25, 26, 27}}
};
rotate(arr, 3);
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
for (int k = 0; k < 3; k++) {
printf("%d ", arr[i][j][k]);
}
printf("\n");
}
printf("\n");
}
return 0;
}
```
这个程序定义了一个3x3x3的三维数组,然后将其旋转90度,并输出结果。对于更大的数组,只需要更改数组的维度即可。
阅读全文