C语言编程 定义一个包含十个整数的数组,找出数组中重复的元素并删除
时间: 2024-10-06 07:00:49 浏览: 30
在C语言中,你可以使用数组、循环以及哈希表或者集合数据结构(如`<stdbool.h>`库中的`bool`类型)来完成这个任务。下面是一个简单的示例,我们将使用`stdbool.h`库,并遍历数组来查找和删除重复的元素:
```c
#include <stdio.h>
#include <stdbool.h>
#define SIZE 10
void removeDuplicates(int arr[], int n) {
bool isDuplicate[SIZE] = {false}; // 初始化一个布尔数组记录每个元素是否已见过
for (int i = 0; i < n; i++) {
if (isDuplicate[arr[i]]) { // 如果元素已经存在
printf("重复元素: %d\n", arr[i]); // 打印重复元素
} else {
isDuplicate[arr[i]] = true; // 标记当前元素为已见
}
}
// 删除重复元素
int j = 0;
for (int i = 0; i < n; i++) {
if (!isDuplicate[arr[i]]) {
arr[j++] = arr[i]; // 将未重复的元素移到数组前面
}
}
arr[j] = '\0'; // 结束数组
}
int main() {
int arr[SIZE] = {5, 2, 7, 3, 2, 8, 9, 5, 6, 4}; // 示例数组
int n = sizeof(arr) / sizeof(arr[0]);
printf("原始数组:\n");
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
removeDuplicates(arr, n);
printf("\n去重后的数组:\n");
for (int i = 0; arr[i] != '\0'; i++) {
printf("%d ", arr[i]);
}
return 0;
}
```
在这个程序中,我们首先创建一个布尔数组`isDuplicate`来跟踪每个元素是否已出现过。然后,遍历输入数组,如果某个元素已被标记为重复,则打印它;否则,将其添加到结果数组中。最后,输出处理后的数组。
阅读全文