找出两段长度为n的数组中相同的数字,并计数,C语言
时间: 2024-09-26 08:07:18 浏览: 39
在C语言中,找出两个长度为n的整型数组中的相同数字并计算它们出现的次数,可以使用哈希表(如`unordered_map`或`std::map`)来存储每个元素及其出现的次数。这里是一个简单的示例:
```c
#include <stdio.h>
#include <unordered_map>
// 定义函数用于查找相同数字并计数
void find_common(int arr1[], int n, int arr2[], int m) {
std::unordered_map<int, int> countMap;
// 遍历第一个数组,更新计数
for (int i = 0; i < n; i++) {
if (countMap.find(arr1[i]) != countMap.end()) {
countMap[arr1[i]]++;
} else {
countMap[arr1[i]] = 1;
}
}
// 遍历第二个数组,检查是否在哈希表中有,如果存在则计数
int commonCount = 0;
for (int j = 0; j < m; j++) {
if (countMap.find(arr2[j]) != countMap.end()) {
printf("Number %d appears %d times in both arrays.\n", arr2[j], countMap[arr2[j]]);
commonCount += countMap[arr2[j]];
}
}
printf("Total number of common elements: %d\n", commonCount);
}
int main() {
int arr1[] = {1, 2, 3, 4, 5};
int n = sizeof(arr1) / sizeof(arr1[0]);
int arr2[] = {4, 5, 6, 7, 4};
int m = sizeof(arr2) / sizeof(arr2[0]);
find_common(arr1, n, arr2, m);
return 0;
}
```
这个程序首先遍历`arr1`,将每个元素添加到哈希表中并记录其出现次数。然后,它遍历`arr2`,检查每个元素是否在哈希表中,如果在就输出该元素的计数值并将计数增加。
阅读全文