在C语言中 如果我想将一个数组从中间截断 使数组的第五个元素变为第一个元素 第六个元素变为第二个元素……应如何实现?
时间: 2024-09-25 12:16:56 浏览: 23
在C语言中,如果你想通过某种手段改变数组元素的顺序,使其看起来像是从中间截断并重新排列的,但实际上并没有真正地移动数据(因为数组是连续存储在内存中的),你可以创建一个新的数组,然后按照新的顺序复制原数组的内容。这里是一个简单的示例:
```c
#include <stdio.h>
#define SIZE 10 // 假设原始数组有10个元素
void reverse_array(int arr[], int start, int end) {
while (start < end) {
int temp = arr[start]; // 交换开始位置和结束位置的元素
arr[start] = arr[end];
arr[end] = temp;
start++; // 移动到下一个需要交换的位置
end--;
}
}
int main() {
int original[SIZE] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; // 原始数组
int rearranged[SIZE]; // 新的数组用于保存排序后的结果
// 假设我们想让第五个元素变成第一个,第六个元素变成第二个...
int pivot_index = 4; // 我们想要"跳过"的元素索引
for (int i = 0; i < SIZE; i++) {
if (i < pivot_index) {
rearranged[i] = original[i];
} else {
rearranged[pivot_index + (i - pivot_index)] = original[i]; // 将元素移到新数组的新位置
}
}
// 输出原数组和新数组(只是为了展示效果,实际操作时不需要打印)
printf("Original array: ");
for (int i = 0; i < SIZE; i++) {
printf("%d ", original[i]);
}
printf("\nReversed array: ");
for (int i = 0; i < SIZE; i++) {
printf("%d ", rearranged[i]);
}
return 0;
}
```
阅读全文