用C语言编写将数组的前n个元素中,前端的 m 个元素和随后的n-m.个元素互换的程序。要求程序不另用其他工作数组
时间: 2024-10-27 19:11:46 浏览: 33
在C语言中,你可以通过两个指针,一个指向数组开始位置,另一个指向需要替换部分的起始位置,实现这个任务而不需要额外的工作数组。以下是一个简单的示例,假设我们有一个整数数组`arr[]`,并且知道`n`是数组长度,`m`是要交换的元素个数:
```c
#include <stdio.h>
void swapElements(int arr[], int n, int m) {
// 检查m是否在合法范围内
if (m > n || m <= 0) {
printf("Invalid input for m.\n");
return;
}
// 使用指针遍历并交换
int *start = arr; // 初始化为数组开头
int *end = start + n - m;
while (m--) { // 遍历m次,每次移动start指针到下一个待交换的位置
int temp = *start; // 保存当前元素值
*start++ = *end; // 把end处的元素放到start处
*end-- = temp; // 把start处的元素放到end处
}
}
int main() {
int arr[] = {1, 2, 3, 4, 5};
int n = sizeof(arr) / sizeof(arr[0]);
int m = 2;
printf("Before swapping:\n");
for (int i = 0; i < n; ++i) {
printf("%d ", arr[i]);
}
printf("\n");
swapElements(arr, n, m);
printf("After swapping elements %d to %d:\n", m, n - m);
for (int i = 0; i < n; ++i) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
```
运行这个程序,你会看到原数组的前m个元素和后面的(n-m)个元素已经被互换了。
阅读全文