使用c语言【问题描述】编写函数实现删除一维整型数组中指定元素,在主函数输入数组和输出数组(假设数组元素各不相同)。 【输入形式】输入删除前的元素个数和数组元素,输入待删除的元素 【输出形式】输出删除后的数组元素 【样例输入】 5 1 3 4 5 2 3 【样例输出】 after delete: 1 4 5 2 【样例说明】 【评分标准】
时间: 2023-11-28 15:05:15 浏览: 40
以下是一种可能的解法:
```c
#include <stdio.h>
void delete(int arr[], int n, int x) {
int i, j;
for (i = 0, j = 0; i < n; i++) {
if (arr[i] != x) {
arr[j++] = arr[i];
}
}
}
int main() {
int n, arr[100], x, i;
printf("输入元素个数:");
scanf("%d", &n);
printf("输入数组元素:");
for (i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
printf("输入待删除元素:");
scanf("%d", &x);
delete(arr, n, x);
printf("删除后的数组元素:");
for (i = 0; i < n - 1; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
```
函数 `delete` 接收一个整型数组 `arr`、数组长度 `n` 和待删除的元素 `x`,在原数组中删除所有等于 `x` 的元素,并将剩余元素前移。具体实现是使用两个指针 `i` 和 `j`,分别指向原数组的当前元素和目标数组的下一个空位。当 `arr[i]` 不等于 `x` 时,将其复制到 `arr[j]`,然后 `i` 和 `j` 都加 1;否则只将 `i` 加 1。最后目标数组的长度为 `j`,因为所有等于 `x` 的元素都被删除了。
在主函数中,先读入元素个数和数组元素,然后调用 `delete` 函数删除指定元素,最后输出删除后的数组元素。注意数组下标从 0 开始,所以输出时只需要输出前 `n - 1` 个元素即可。