C语言实现数组中夹0数据去除
时间: 2025-01-06 09:47:31 浏览: 47
在C语言中,去除数组中所有0的数据,可以通过遍历数组并判断每个元素是否为0来完成。下面是一个简单的示例,它创建了一个新的数组,只包含非零元素:
```c
#include <stdio.h>
#include <stdlib.h>
int* removeZeros(int* arr, int n) {
int count = 0; // 记录非零元素的数量
for (int i = 0; i < n; i++) {
if (arr[i] != 0) {
count++;
}
}
// 动态分配内存,创建新数组
int* new_arr = malloc(count * sizeof(int));
if (new_arr == NULL) {
printf("Memory allocation failed.\n");
return NULL;
}
int j = 0; // 新数组的索引
for (int i = 0; i < n; i++) {
if (arr[i] != 0) {
new_arr[j++] = arr[i];
}
}
new_arr[count] = '\0'; // 添加空字符作为数组结束标志
return new_arr;
}
int main() {
int arr[] = {1, 0, 3, 0, 5, 0};
int size = sizeof(arr) / sizeof(arr[0]);
int* result = removeZeros(arr, size);
if (result != NULL) {
printf("New array with non-zero elements: ");
for (int i = 0; result[i] != '\0'; i++) {
printf("%d ", result[i]);
}
free(result); // 释放内存
}
return 0;
}
```
在这个程序里,`removeZeros`函数接收原始数组和其大小,然后计算出非零元素的数量,再动态创建一个新的数组存放它们。在`main`函数中,我们测试了这个过程,并打印结果。
阅读全文
相关推荐












