7-4 h0028. 数组翻转
时间: 2024-09-26 18:09:37 浏览: 25
数组翻转是指将一个数组元素顺序颠倒过来的过程。例如,如果你有一个整数数组 [1, 2, 3, 4, 5],经过数组翻转后,它会变成 [5, 4, 3, 2, 1]。这通常通过遍历数组并将每个元素与其相邻位置的元素交换来实现。在大多数编程语言中,你可以采用循环或递归的方式来完成这个操作。
以下是用Python的一个简单示例:
```python
def reverse_array(arr):
start = 0
end = len(arr) - 1
while start < end:
arr[start], arr[end] = arr[end], arr[start] # 交换开始和结束位置的元素
start += 1
end -= 1
return arr
# 测试
input_arr = [1, 2, 3, 4, 5]
reversed_arr = reverse_array(input_arr)
print("Original array:", input_arr)
print("Reversed array:", reversed_arr)
```
相关问题
编写函数将一个nxn的二维数组按“次对角线”翻转。例如:翻转前的数组翻转后的数组C语言
### 回答1:
可以使用下面的函数来实现这个功能:
```
void flip_secondary_diagonal(int n, int arr[n][n]) {
// 循环遍历数组的每一对元素
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
// 如果两个元素在次对角线上,就交换它们
if (i + j == n - 1) {
int temp = arr[i][j];
arr[i][j] = arr[j][i];
arr[j][i] = temp;
}
}
}
}
```
这个函数接受一个 `n` 行 `n` 列的二维数组 `arr` 和它的行数 `n`,并将数组按次对角线翻转。
例如,如果你传递了下面的数组:
```
1 2 3
4 5 6
7 8 9
```
那么经过翻转后,数组会变成这样:
```
3 2 1
6 5 4
9 8 7
```
### 回答2:
题目要求编写一个函数,将一个nxn的二维数组按“次对角线”翻转。下面是一个用C语言编写的函数示例:
```c
#include<stdio.h>
void flipMatrix(int mat[][100], int n) {
for (int i = 0; i < n; i++) {
for (int j = 0; j < n-i-1; j++) {
int temp = mat[i][j];
mat[i][j] = mat[n-j-1][n-i-1];
mat[n-j-1][n-i-1] = temp;
}
}
}
int main() {
int n;
printf("请输入矩阵的维度n:");
scanf("%d", &n);
int matrix[100][100];
printf("请输入矩阵的元素:\n");
for(int i=0; i<n; i++){
for(int j=0; j<n; j++){
scanf("%d", &matrix[i][j]);
}
}
flipMatrix(matrix, n);
printf("翻转后的矩阵为:\n");
for(int i=0; i<n; i++){
for(int j=0; j<n; j++){
printf("%d ", matrix[i][j]);
}
printf("\n");
}
return 0;
}
```
首先,在函数`flipMatrix`中,我们使用两个嵌套循环来遍历输入的二维数组。利用`temp`变量来交换每个元素,从而实现按“次对角线”翻转。
接下来,在`main`函数中,我们首先从用户输入中获取矩阵的维度`n`,然后依次输入矩阵的元素。然后调用`flipMatrix`函数对矩阵进行翻转操作。最后,将翻转后的矩阵打印出来。
这样,我们就完成了按“次对角线”翻转的函数编写,并通过一个简单的示例测试了函数的功能。
请用【c语言】帮我实现数组翻转,并帮我讲解下实现逻辑
在 C 语言中,你可以使用两个指针,一个指向数组的开始,另一个指向结束,然后交换它们指向的元素,然后将两个指针向中间移动,直到它们相遇。以下是一个简单的实现:
```c
#include <stdio.h>
void reverse_array(int arr[], int size) {
int start = 0; // 指向数组开头
int end = size - 1; // 指向数组结尾
while (start < end) {
// 交换 start 和 end 指向的元素
int temp = arr[start];
arr[start] = arr[end];
arr[end] = temp;
// 移动指针
start++;
end--;
}
}
int main() {
int arr[] = {1, 2, 3, 4, 5};
int n = sizeof(arr) / sizeof(arr[0]);
printf("Original array: ");
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
reverse_array(arr, n);
printf("\nReversed array: ");
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
return 0;
}
```
这个实现逻辑简单明了:
1. `reverse_array` 函数接受一个整数数组和它的长度作为参数。
2. 初始化两个指针 start 和 end 分别指向数组的第一个和最后一个元素。
3. 在一个循环中,当 start 小于 end 时,就交换 start 和 end 的值,然后分别将 start 向右移动一位,end 向左移动一位。
4. 循环结束后,数组就被成功地反转了。
阅读全文