c语言输入长度为10的数组,删除数组中重复的数,输出
时间: 2024-12-08 07:24:45 浏览: 10
在C语言中,可以使用`qsort`函数配合自定义的比较函数来删除数组中的重复元素。这里给出一种简单的示例,假设我们有一个整型数组`arr[]`,并且允许数组中有重复值,我们可以创建一个辅助函数来完成去重操作:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 定义结构体并提供排序比较函数
typedef struct {
int data;
int index;
} Data;
int compare(const void *a, const void *b) {
const Data *da = (const Data *)a;
const Data *db = (const Data *)b;
return da->data - db->data; // 按升序排列
}
void removeDuplicates(int arr[], int n) {
if (n == 0 || n == 1) {
return; // 如果只有一个元素或无元素,无需处理
}
Data elements[n];
for (int i = 0; i < n; ++i) {
elements[i].data = arr[i];
elements[i].index = i;
}
qsort(elements, n, sizeof(Data), compare);
int writeIndex = 0;
for (int i = 1; i < n; ++i) {
if (elements[i].data != elements[writeIndex].data) {
arr[writeIndex] = elements[i].data;
writeIndex++;
}
}
arr[writeIndex] = '\0'; // 添加结束标志,这里假设数组是以空字符结尾的字符串
n = writeIndex + 1;
}
int main() {
int arr[] = {1, 5, 3, 2, 6, 3, 7, 8, 1, 9};
int n = sizeof(arr) / sizeof(arr[0]);
printf("Original array:\n");
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
removeDuplicates(arr, n);
printf("\nArray after removing duplicates:\n");
for (int i = 0; arr[i]; i++) {
printf("%d ", arr[i]);
}
return 0;
}
```
这个程序首先将数组转换为`Data`结构体数组,然后对它们排序,最后遍历排序后的数组,只保留第一次出现的元素。
阅读全文