有一个一维数组,里面的元素都是数,统计里面的数有重复数字的数字个数,就比如这个数组{121,21324,123,234,4546}里面121、21324、4546有重复数字,所以结果是3,怎么用c语言代码实现
时间: 2024-10-19 15:12:32 浏览: 33
在C语言中,你可以使用哈希表(如`unordered_set`)或者布尔数组来检查每个数字是否已出现过。这里是一个简单的示例,使用布尔数组来实现:
```c
#include <stdio.h>
#include <stdbool.h>
int count_duplicates(int arr[], int n) {
bool is_duplicate[10001]; // 假设整数范围在-10000到10000之间,可根据实际情况调整大小
int duplicate_count = 0;
for (int i = 0; i < n; i++) {
if (arr[i] > 10000 || arr[i] < -10000) { // 如果超出预设范围,则跳过
continue;
}
if (is_duplicate[arr[i]]) { // 数字已经遇到过,增加计数
duplicate_count++;
} else { // 数字首次遇到,标记为已见过
is_duplicate[arr[i]] = true;
}
}
return duplicate_count;
}
int main() {
int arr[] = {121, 21324, 123, 234, 4546};
int n = sizeof(arr) / sizeof(arr[0]);
printf("重复数字的个数: %d\n", count_duplicates(arr, n));
return 0;
}
```
这段代码首先初始化一个布尔数组,然后遍历输入数组,如果某个数字之前已经被标记为已存在,则计数器加一;否则,将该数字标记为已存在。最后返回重复数字的个数。
阅读全文