用c语言编写题:具有n个元素的整型数组a中存在重复数据,编写函数int set(int a[ ],int n),删除数组中所有的重复元素,使数组变成一个合集,函数返回集合中元素的个数。
时间: 2024-02-24 17:55:42 浏览: 18
好的,以下是一个可能的解法:
```c
#include <stdio.h>
int set(int a[], int n) {
int i, j, k;
for (i = 0; i < n; i++) {
for (j = i + 1; j < n; ) {
if (a[j] == a[i]) {
for (k = j; k < n - 1; k++) {
a[k] = a[k + 1];
}
n--;
} else {
j++;
}
}
}
return n;
}
int main() {
int a[] = {1, 2, 3, 2, 4, 3, 5};
int n = sizeof(a) / sizeof(a[0]);
int i, cnt;
printf("Original array: ");
for (i = 0; i < n; i++) {
printf("%d ", a[i]);
}
cnt = set(a, n);
printf("\nSet array: ");
for (i = 0; i < cnt; i++) {
printf("%d ", a[i]);
}
printf("\n");
return 0;
}
```
函数`set`的实现过程:
1. 使用两个嵌套的循环,对于数组中的每一个元素a[i],在后面的元素中查找是否有相同的元素a[j],如果有则删除a[j],即把后面的元素依次前移,n减1。
2. 如果后面的元素不相同,则继续查找,直到搜索完整个数组。
3. 返回处理后的数组元素个数。
在主函数中,我们首先输出原始数组,然后调用函数`set`,再输出处理后的数组。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)