c语言数组删除重复元素
时间: 2023-11-12 08:09:01 浏览: 154
C语言中,可以通过遍历数组,判断相邻元素是否相同,若相同则将后面的元素前移一位,最终实现删除重复元素的功能。以下是一个示例代码:
```
#include <stdio.h>
int removeDuplicates(int arr[], int n) {
int i, j, k;
for (i = 0; i < n; i++) {
for (j = i + 1; j < n;) {
if (arr[j] == arr[i]) {
for (k = j; k < n; k++) {
arr[k] = arr[k + 1];
}
n--;
} else {
j++;
}
}
}
return n;
}
int main() {
int arr[] = {2, 2, 3, 3, 3, 4, 5, 5, 5};
int n = sizeof(arr) / sizeof(arr[0]);
printf("Original array: ");
for (int i =
相关问题
c语言用数组删除重复元素
可以使用双重循环来实现C语言中数组删除重复元素的功能。具体实现方法如下:
```
#include <stdio.h>
#define N 12
int main() {
int i, j, k, n = N;
int num[N] = {1, 1, 2, 7, 3, 2, 3, 4, 5, 8, 7, 7};
for (i = 0; i < n - 1; ++i) {
for (j = i + 1; j < n; ++j) {
if (num[i] == num[j]) {
for (k = j; k < n - 1; ++k) {
num[k] = num[k + 1];
}
--n;
--j;
}
}
}
for (i = 0; i < n - 1; ++i) {
printf("%d,", num[i]);
}
printf("%d", num[i]);
return 0;
}
```
该程序使用了三重循环,第一重循环用于遍历数组中的每一个元素,第二重循环用于比较当前元素与后面的元素是否相同,第三重循环用于将后面的元素前移一位。最后输出的数组即为删除重复元素后的结果。
c语言数组重复元素怎么删除
在C语言中,直接删除数组中的重复元素不是一种常见的操作,因为数组一旦声明,其大小和内容是固定的,不能动态修改。但是,如果你需要保留数组中不重复的元素,可以创建一个新的数组或者利用其他数据结构(如哈希表、集合等)来辅助。
这里是一个简单的例子,假设你想在一个整数数组中去除重复元素,你可以先遍历数组,然后将不重复的元素插入到新数组中:
```c
#include <stdio.h>
#include <stdbool.h>
// 假设我们的数组名为arr,大小为n
int arr[] = {1, 2, 2, 3, 4, 4, 5};
size_t n = sizeof(arr) / sizeof(arr[0]);
// 新建一个大小为n的数组用于存放不重复的元素
int unique_arr[n];
size_t unique_count = 0;
void remove_duplicates(int* input, int* output, size_t len) {
for (size_t i = 0; i < len; ++i) {
bool is_unique = true;
for (size_t j = 0; j < unique_count; ++j) {
if (input[i] == output[j]) {
is_unique = false;
break;
}
}
if (is_unique) {
output[unique_count++] = input[i];
}
}
}
int main() {
remove_duplicates(arr, unique_arr, n);
// 打印去重后的数组
printf("去重后的数组: ");
for (size_t i = 0; i < unique_count; ++i) {
printf("%d ", unique_arr[i]);
}
return 0;
}
```
运行上述代码后,你会得到去重后的数组。如果你想在原地修改数组并删除重复元素,这通常是不可能的,除非对数组进行排序(例如通过冒泡排序),然后再复制非重复元素回原数组,但这会改变原始元素的顺序,而不是删除它们。
阅读全文