编写一个函数并调用,以一个整数数组和数组的长度作为参数。要求函数将数组中所有重复元素删除,只保留第一次出现的元素,并且保持原有的元素顺序不变,最后返回处理后数组的新长度C语言
时间: 2024-10-29 20:18:07 浏览: 78
C++通过自定义函数找出一个整数数组中第二大数的方法
5星 · 资源好评率100%
在C语言中,你可以创建一个名为`removeDuplicates`的函数,它接受一个整数数组`arr`和它的长度`n`作为输入参数,然后通过遍历数组,利用临时数组来存储不重复的元素。以下是这个函数的一个实现:
```c
#include <stdio.h>
size_t removeDuplicates(int arr[], size_t n) {
// 如果数组为空或者只有一个元素,无需处理
if (n <= 1) {
return n;
}
int unique[] = {arr[0]]; // 初始化一个新的数组存放不重复的元素
size_t unique_size = 1; // unique数组的新长度
for (size_t i = 1; i < n; ++i) {
if (arr[i] != unique[unique_size - 1]) {
unique[unique_size++] = arr[i]; // 如果当前元素不同,添加到unique数组
}
}
// 返回新数组的独特元素个数(即去重后的长度)
return unique_size;
}
int main() {
int arr[] = {1, 2, 3, 2, 4, 5, 3};
size_t original_length = sizeof(arr) / sizeof(arr[0]);
size_t new_length = removeDuplicates(arr, original_length);
printf("原数组: ");
for (size_t i = 0; i < original_length; ++i) {
if (i < new_length) {
printf("%d ", arr[i]);
} else {
break;
}
}
printf("\n新数组(去重后): %zu\n", new_length);
return 0;
}
```
当你运行这个程序,它会打印出原始数组以及去重后的数组长度。
阅读全文