请用c语言生成一段数组元素的多个区间删除
时间: 2024-10-18 07:15:28 浏览: 22
100个经典c语言例题带答案.doc
在 C 语言中,删除数组元素的某个区间通常涉及到原地修改数组内容或者创建新的数组。如果你只是想简单地从数组中移除特定范围的元素,而不考虑性能优化或内存分配问题,可以使用循环遍历数组并跳过指定范围内的元素。这里有一个简单的示例:
```c
#include <stdio.h>
// 删除指定区间 [start, end) 的元素
void remove_range(int arr[], size_t n, int start, int end) {
if (start >= end || start >= n || end > n) {
printf("Invalid range!\n");
return;
}
// 遍历数组,跳过区间[start, end)
for (size_t i = 0; i < n; ++i) {
if (i < start || i >= end) {
arr[i - start] = arr[i]; // 如果不在指定范围内,就将位置前移
}
}
// 更新数组长度,实际上已删除了[end - start]个元素
n -= end - start;
// 如果有空余空间,记得调整后面的元素索引
for (size_t i = n; i < sizeof(arr) / sizeof(arr[0]); ++i) {
arr[i] = 0; // 或者你可以选择其他处理方式
}
}
int main() {
int arr[] = {1, 2, 3, 4, 5, 6, 7, 8, 9};
size_t n = sizeof(arr) / sizeof(arr[0]);
int start = 3, end = 6; // 想要删除的区间
remove_range(arr, n, start, end);
// 打印新数组,注意区间已被删除
for (size_t i = 0; i < n; ++i) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
```
阅读全文