6-1 过滤重复整数 分数 12 作者 徐镜春 单位 浙江大学 本题要求实现一个函数,删去给定整数数组中的重复整数,不重复的元素放于原数组中,不要改变原来的次序。该函数返回不重复的整数个数。 函数接口定义: 函数原型为: int Unique_Int ( int a[ ], int n ); 其中 a[ ] 是输入的整数数组, n 是整数个数(0<=n&&n<=100)。 函数须返回 a中不重复的整数个数,删除重复的整数(仅保留第一个),依然存于数组a中。 裁判测试程序样例: #include <stdio.h> int Unique_Int ( int a[ ], int n ); int main() { int a[100], n, k, count; scanf("%d", &n); for(k=0; k<n; k++) scanf("%d", &a[k]); count = Unique_Int (a, n); printf("%d ", count ); for(k=0; k<count; k++) printf("%d ", a[k] ); return 0; } /* 请在这里填写答案 */ 输入样例: 5 2 5 2 2 -1 输出样例: 3 2 5 -1 代码长度限制 16 KB 时间限制 400 ms 内存限制
时间: 2024-03-13 14:47:54 浏览: 140
下面是题目要求的函数实现:
```c
int Unique_Int(int a[], int n) {
int count = 0;
for (int i = 0; i < n; i++) {
int j;
for (j = 0; j < count; j++) {
// 如果当前元素已经出现过,则跳过
if (a[j] == a[i]) {
break;
}
}
// 如果当前元素是第一次出现,则将其存入数组中,并更新不重复元素的个数
if (j == count) {
a[count++] = a[i];
}
}
return count;
}
```
函数的实现思路是使用两重循环,外层循环用于遍历整个数组,内层循环用于检查当前元素是否已经出现过。如果当前元素已经出现过,则跳过;否则将其存入数组中,并更新不重复元素的个数。最后,返回不重复元素的个数即可。
注意,这个函数会改变传入的数组,因为题目要求不重复的元素放于原数组中。如果不需要改变原数组,可以在函数内部创建一个新的数组来存储不重复的元素。
阅读全文