50、请编写函数fun, 函数的功能是: 删去一维数组中所有相同的数, 使之只剩一个。数组中的数已按由小到大的顺序排列,函数返回删除后数组中数据的个数。 50、请编写函数fun, 函数的功能是: 删去一维数组中所有相同的数, 使之只剩一个。数组中的数已按由小到大的顺序排列,函数返回删除后数组中数据的个数。 例如, 一维数组中的数据是: 2 2 2 3 4 4 5 6 6 6 6 7 7 8 9 9 10 10 10。删除后,数组中的内容应该是: 2 3 4 5 6 7 8 9 10。
时间: 2024-03-16 16:41:15 浏览: 53
这是一个删除一维数组中重复元素的问题,以下是一种简单的实现方法:
```c
int fun(int arr[], int n) {
if (n == 0) return 0; // 数组为空的情况
int i = 0, j = 1; // i 和 j 分别指向当前不重复的数的位置和下一个数的位置
while (j < n) {
if (arr[j] != arr[i]) {
i++; // 将当前不重复的数的位置后移一位
arr[i] = arr[j]; // 将下一个不重复的数放到新的位置
}
j++; // 下一个数的位置后移一位
}
return i + 1; // 返回不重复的数的个数
}
```
使用示例:
```c
int main() {
int arr[] = {2, 2, 2, 3, 4, 4, 5, 6, 6, 6, 6, 7, 7, 8, 9, 9, 10, 10, 10};
int len = sizeof(arr) / sizeof(arr[0]); // 数组长度
int newLen = fun(arr, len);
printf("删除重复数后的数组:");
for (int i = 0; i < newLen; i++) {
printf("%d ", arr[i]);
}
printf("\n数组长度为:%d\n", newLen);
return 0;
}
```
输出结果:
```
删除重复数后的数组:2 3 4 5 6 7 8 9 10
数组长度为:9
```
另外,如果你需要删除重复元素后的数组,可以在函数中加入一个新的数组作为输出参数,将不重复的数依次放入其中。
阅读全文