写一个C语言函数,形参是一个一维整型数组和数组的长度,功能是返回该数组中不同元素的个数。
时间: 2024-03-07 12:49:30 浏览: 20
可以使用一个哈希表来实现,遍历数组,将每个元素作为哈希表的键,值设为1,表示该元素出现过。最后统计哈希表中值为1的个数即可。
以下是实现代码:
```c
int countDistinct(int arr[], int n) {
int count = 0;
int hash[10000] = {0}; // 哈希表,初始值为0
for (int i = 0; i < n; i++) {
if (hash[arr[i]] == 0) { // 如果该元素还未出现过
count++; // 不同元素个数加1
hash[arr[i]] = 1; // 标记该元素出现过
}
}
return count;
}
```
其中,哈希表的大小可以根据实际情况调整。这里假设元素的取值范围在10000以内。
相关问题
写一个C语言函数,形参是一个一维整型数组和数组的长度,将每一个元素像后面对比,如果相同,则将两个元素中靠右的元素的右边一个元素向左赋值,长度也减一。然后输出长度。
好的,下面是一个满足要求的C语言函数:
```c
int removeDuplicate(int arr[], int len) {
int i, j;
for (i = 0; i < len; i++) {
for (j = i + 1; j < len; j++) {
if (arr[i] == arr[j]) {
int k;
for (k = j + 1; k < len; k++) {
arr[k - 1] = arr[k];
}
len--;
j--;
}
}
}
printf("长度为:%d\n", len);
return len;
}
```
这个函数接受一个一维整型数组和数组的长度作为参数。它使用两个循环来比较数组中的每个元素,并在发现重复元素时将靠右的元素向左移动,然后将数组的长度减一。最后,它将长度输出并返回。
编写一函数,其形参为一个字符数组和一个整型数组
好的,以下是一个接受一个字符数组和一个整型数组的函数示例:
```c++
void myFunction(char charArray[], int intArray[], int size) {
for(int i=0; i<size; i++) {
// 对 charArray 和 intArray 进行操作
}
}
```
函数名为 `myFunction`,接受三个参数:一个字符数组 `charArray`,一个整型数组 `intArray`,以及一个整型变量 `size`,表示数组的长度。在函数体内,我们可以使用循环语句来遍历数组并对其进行操作。请注意,这里的数组名 `charArray` 和 `intArray` 实际上是指向数组首元素的指针。