删去数组中重复的数字,使之只剩一个。数组中的数字已按由小到大的顺序排列,C语言
时间: 2024-12-10 18:29:48 浏览: 17
在C语言中,删除数组中重复的元素可以采用多种方法,这里提供一种简单直接的方式,即遍历数组,并使用两个指针指向待处理区间的首尾。如果首尾元素相等,移动尾指针;否则,将首尾元素交换然后移动首指针。以下是示例代码:
```c
#include <stdio.h>
void removeDuplicates(int arr[], int n) {
if (n == 0 || n == 1)
return; // 如果数组只有一个元素或者为空,则无需处理
int i = 0; // 首部指针
for (int j = 1; j < n; ++j) { // 从第二个元素开始比较
if (arr[i] != arr[j]) {
arr[++i] = arr[j]; // 非重复元素移到有效范围内
}
}
// 确保数组大小适应新的元素数量
arr[i+1] = '\0'; // 用'\0'表示数组结束
}
// 测试函数
void printArray(int arr[], int size) {
for (int i = 0; arr[i] != '\0'; ++i)
printf("%d ", arr[i]);
printf("\n");
}
int main() {
int arr[] = {1, 2, 2, 3, 4, 4, 4, 5};
int n = sizeof(arr) / sizeof(arr[0]);
removeDuplicates(arr, n);
printf("Array after removing duplicates:\n");
printArray(arr, n);
return 0;
}
```
在这个例子中,`removeDuplicates` 函数会修改原数组 `arr`,删除重复元素。`printArray` 函数则用于打印处理后的数组。运行此程序,将会得到 "1 2 3 4 5" 的输出。
阅读全文