c++用一个函数将一个二维数组旋转90度
时间: 2023-04-23 10:06:13 浏览: 678
可以使用以下函数将一个二维数组旋转90度:
```c++
void rotateArray(int arr[][N], int n) {
// 先进行转置操作
for (int i = 0; i < n; i++) {
for (int j = i; j < n; j++) {
int temp = arr[i][j];
arr[i][j] = arr[j][i];
arr[j][i] = temp;
}
}
// 再进行列交换操作
for (int i = 0; i < n; i++) {
for (int j = 0; j < n / 2; j++) {
int temp = arr[i][j];
arr[i][j] = arr[i][n - j - 1];
arr[i][n - j - 1] = temp;
}
}
}
```
其中,`arr`表示要旋转的二维数组,`n`表示数组的大小(假设为`N*N`)。首先进行转置操作,即将数组中的行和列互换,然后再进行列交换操作,即将每一列的元素按照中心轴进行交换。最终得到的数组就是旋转后的结果。
相关问题
图像旋转。图像的灰度图在计算机中以二维矩阵的形式存储。图像的旋转就是对这个二维矩阵进行旋转操作。输入一个n行m列的矩阵,将它旋转180°后输出。要求用二维数组实现并包装为一个函数,并在主函数中输出旋转后的二维矩阵。用c++语音实现
以下是用C语言实现的代码:
```c
#include <stdio.h>
void rotate(int matrix[][100], int n, int m) {
int temp;
for (int i = 0; i < n / 2; i++) {
for (int j = 0; j < m; j++) {
temp = matrix[i][j];
matrix[i][j] = matrix[n - i - 1][m - j - 1];
matrix[n - i - 1][m - j - 1] = temp;
}
}
}
int main() {
int n, m;
int matrix[100][100];
printf("请输入矩阵的行数和列数:");
scanf("%d %d", &n, &m);
printf("请输入矩阵元素:\n");
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
scanf("%d", &matrix[i][j]);
}
}
rotate(matrix, n, m);
printf("旋转后的矩阵为:\n");
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
printf("%d ", matrix[i][j]);
}
printf("\n");
}
return 0;
}
```
在上述代码中,我们定义了一个 `rotate` 函数,用来对输入的二维矩阵进行旋转操作。在主函数中,首先输入矩阵的行数和列数,然后输入矩阵的元素。接下来调用 `rotate` 函数对矩阵进行旋转,并输出旋转后的矩阵。
用c++实现顺时针旋转90度二维矩阵
在C++中,可以使用数组或矩阵数据结构来实现二维矩阵的顺时针旋转90度。这里提供一种常见的矩阵转置后再翻转的方法:
```cpp
#include <iostream>
using namespace std;
void rotateMatrix(int matrix[4][4], int n) {
// 先做矩阵转置
for (int i = 0; i < n; ++i) {
for (int j = i; j < n; ++j) {
swap(matrix[i][j], matrix[j][i]);
}
}
// 再做矩阵翻转
for (int i = 0; i < n / 2; ++i) {
for (int j = 0; j < n; ++j) {
swap(matrix[i][j], matrix[n - 1 - j][i]);
}
}
}
// 测试函数
void printMatrix(int matrix[4][4]) {
for (int i = 0; i < 4; ++i) {
for (int j = 0; j < 4; ++j) {
cout << matrix[i][j] << " ";
}
cout << endl;
}
}
int main() {
int matrix[4][4] = {
{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12},
{13, 14, 15, 16}
};
int n = sizeof(matrix) / sizeof(matrix[0]);
rotateMatrix(matrix, n);
printMatrix(matrix);
return 0;
}
```
当你运行这个程序,输入的4x4矩阵将会被顺时针旋转90度。
阅读全文