如何用C语言实现数组元素的就地逆置,使得输出数组B={11,9,7,5,3,1}?
时间: 2024-09-20 17:17:59 浏览: 37
056 单链表就地逆置 C语言
5星 · 资源好评率100%
在C语言中,可以使用两个指针分别指向数组的首尾开始,然后交换它们指向的元素,直到两个指针相遇,实现数组元素的就地逆置。以下是简单的步骤:
1. 定义两个指针,一个`start`指向数组的第一个元素(即B[0]),另一个`end`指向数组的最后一个元素(即B[5])。
```c
int start = 0;
int end = 4; // 因为数组是从0开始的,所以长度减一,索引到5对应的是第6个位置
int B[] = {11, 9, 7, 5, 3, 1};
```
2. 使用一个循环,当`start < end`时继续交换元素:
```c
while (start < end) {
int temp = B[start]; // 临时存储起始位置的元素
B[start] = B[end]; // 将起始位置的元素移动到结束位置
B[end] = temp; // 将结束位置的元素移动到起始位置
start++; // 指针向右移动一位
end--; // 指针向左移动一位
}
```
3. 循环结束后,数组B就被逆置了。现在它应该是{1, 3, 5, 7, 9, 11}。
完整代码示例:
```c
#include <stdio.h>
void reverse_in_place(int arr[], int len) {
int start = 0;
int end = len - 1;
while (start < end) {
int temp = arr[start];
arr[start] = arr[end];
arr[end] = temp;
start++;
end--;
}
}
int main() {
int B[] = {11, 9, 7, 5, 3, 1};
int len = sizeof(B) / sizeof(B[0]);
printf("Original array: ");
for (int i = 0; i < len; i++) {
printf("%d ", B[i]);
}
reverse_in_place(B, len);
printf("\nReversed array: ");
for (int i = 0; i < len; i++) {
printf("%d ", B[i]);
}
return 0;
}
```
阅读全文