编写一个C语言程序,接受一个整数数组,数组长为20,删除数组中重复的元素。要求最终输 出的数组中元素是唯一的,并且保留原来的顺序 输入:[1,2,2,3,4,4,5] 输出:[1,2,3,4,5]
时间: 2024-09-22 14:05:00 浏览: 44
为了编写一个C语言程序,接受一个包含重复元素的整数数组并删除重复元素同时保持原顺序,我们可以使用一个哈希集合(如`stdbool`数组或者`std::set`,但在标准C中我们只能用`bool`数组)来跟踪已经遇到过的数字。以下是简单的示例代码:
```c
#include <stdio.h>
#include <stdbool.h> // 使用布尔类型的数组代替 set
#define SIZE 20 // 定义数组大小
// 用于存储唯一值的布尔数组
bool used[SIZE] = {false};
void removeDuplicates(int arr[], int n) {
for (int i = 0; i < n; i++) {
if (!used[arr[i]]) { // 如果元素未使用过
printf("%d ", arr[i]); // 输出该元素
used[arr[i]] = true; // 标记为已使用
}
}
}
int main() {
int input[] = {1, 2, 2, 3, 4, 4, 5};
int length = sizeof(input) / sizeof(input[0]);
printf("输入: [");
removeDuplicates(input, length);
printf("]\n");
return 0;
}
```
当运行此程序,会得到输入数组去重后的结果 `[1, 2, 3, 4, 5]`。
注意:这个解决方案假设数组元素范围在0到`SIZE - 1`之间,且没有提前检查输入数组的有效性和大小。在实际应用中,你可能需要添加适当的错误处理。
阅读全文