编写一个程序实现查找重复数字的功能。数组a中存放了10个随机整数(1-10),要求用指针p和q分别指向需要比较的单元。c++
时间: 2024-12-16 07:28:10 浏览: 12
为了编写一个C++程序来查找数组`a`中重复的数字,我们可以创建一个哈希表来存储每个元素及其出现的次数,同时遍历数组。如果发现某个元素已经在哈希表中并且计数大于1,则表示这个数字是重复的。以下是简单的步骤:
```cpp
#include <iostream>
#include <unordered_map>
int findDuplicates(int arr[], int n) {
std::unordered_map<int, int> hashMap; // 哈希表
for (int i = 0; i < n; ++i) {
if (hashMap.find(arr[i]) != hashMap.end()) { // 如果元素已存在
hashMap[arr[i]]++; // 提示该元素再次出现
} else {
hashMap[arr[i]] = 1; // 首次遇到,计数为1
}
}
for (auto& pair : hashMap) {
if (pair.second > 1) { // 检查计数值是否大于1
std::cout << "重复数字:" << pair.first << std::endl;
}
}
return 0;
}
int main() {
const int size = 10;
int a[size] = { generateRandomNumbers(1, 10, size)}; // 填充随机数
findDuplicates(a, size);
return 0;
}
// 生成随机数的辅助函数
std::vector<int> generateRandomNumbers(int min, int max, int count) {
std::vector<int> result(count);
for (int i = 0; i < count; ++i)
result[i] = min + rand() % (max - min + 1); // 随机数范围
return result;
}
```
在这个例子中,我们首先创建了一个`findDuplicates`函数,它接受一个整数数组和其长度作为输入。然后,我们遍历数组,将每个元素添加到哈希表中,并更新它们的计数。最后,我们在主函数中生成一个随机数数组并调用`findDuplicates`函数。
阅读全文