用C语言编写一个程序,输入一个数n,一个数组含有2n项,输出一个数组的前半部分为输入数组的后半部分,后半部分等于输入数组的前半部分
时间: 2024-10-14 20:09:10 浏览: 0
要编写一个C语言程序,满足这个条件,首先我们需要从用户那里获取数字`n`,然后创建一个长度为`2n`的数组。接下来,我们将数组分为两半,交换它们的内容。这里是完整的代码:
```c
#include <stdio.h>
#define ARRAY_SIZE 2 * sizeof(int) // 假设数组元素类型为int
void swap(int arr[], int start, int end) {
int temp;
while (start < end) {
temp = arr[start];
arr[start] = arr[end];
arr[end] = temp;
start++;
end--;
}
}
void reverse_half(int arr[], int n) {
int half = n; // 后半部分的起点
if (half % 2 == 0) { // 如果数组长度偶数,则减一,保证后半部分恰好占一半
half--;
}
// 交换前半部分和后半部分
swap(arr, 0, half - 1);
swap(arr, 0, n - 1); // 再次交换以覆盖原始后半部分
}
int main() {
int n, i;
printf("Enter a number n: ");
scanf("%d", &n);
// 创建一个长度为2n的数组
int arr[ARRAY_SIZE / sizeof(int)];
printf("Enter elements for the array of size 2n:\n");
for (i = 0; i < 2 * n; i++) {
scanf("%d", &arr[i]);
}
printf("Original array:\n");
for (i = 0; i < 2 * n; i++) {
printf("%d ", arr[i]);
}
printf("\n");
reverse_half(arr, n);
printf("Array after reversing the halves:\n");
for (i = 0; i < 2 * n; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
```
运行此程序后,用户将被要求输入一个整数`n`以及`2n`个数组元素。程序将首先显示原始数组,然后交换前后半部分并显示结果。