在整型数组中删除所有值为x的元素用C语言
时间: 2024-11-07 08:23:47 浏览: 22
在C语言中,如果你想要从整型数组中删除所有值为`x`的元素,可以创建一个新的数组并只将非`x`的元素复制过去。这里有一个简单的示例:
```c
#include <stdio.h>
#include <stdlib.h>
void remove_x(int arr[], int size, int x) {
// 计算新数组的大小,不包括`x`
int newSize = 0;
for (int i = 0; i < size; ++i) {
if (arr[i] != x) {
newSize++;
}
}
// 重新分配内存
int* newArr = malloc(newSize * sizeof(int));
// 复制非`x`的元素到新数组
int j = 0;
for (int i = 0; i < size; ++i) {
if (arr[i] != x) {
newArr[j++] = arr[i];
}
}
// 结束时关闭旧数组,并释放内存
free(arr);
arr = newArr;
// 输出新数组的长度(注意:这个不是实际数组的大小,而是保留元素的数量)
printf("Array with elements not equal to %d has %d elements.\n", x, newSize);
}
int main() {
int arr[] = {1, 2, 3, 4, 5, 2, 6, 7, 2};
int size = sizeof(arr) / sizeof(arr[0]);
int x = 2;
remove_x(arr, size, x);
// 打印新数组
for (int i = 0; i < size; ++i) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
```
阅读全文