c统计数组内非0元素各自的出现次数
时间: 2024-09-19 17:09:07 浏览: 42
在C语言中,如果你有一个数组需要统计其中非零元素各自出现的次数,可以使用哈希表(如`std::unordered_map`在C++或类似的数据结构在其他C方言中)或者传统的计数排序算法。这里是一个简单的例子,我们将展示如何使用C++的`std::unordered_map`:
```cpp
#include <iostream>
#include <unordered_map>
void countNonZeros(int arr[], int size) {
std::unordered_map<int, int> counts;
// 遍历数组,更新每个非零元素的计数
for (int i = 0; i < size; ++i) {
if (arr[i] != 0) {
counts[arr[i]]++; // 如果元素不为0,增加对应的计数
}
}
// 输出每个非零元素及其出现次数
for (const auto& pair : counts) {
std::cout << "元素 " << pair.first << " 出现了 " << pair.second << " 次" << std::endl;
}
}
int main() {
int array[] = {1, 0, 2, 3, 4, 0, 2, 5, 6};
int array_size = sizeof(array) / sizeof(array[0]);
countNonZeros(array, array_size);
return 0;
}
```
这个程序会输出像这样的结果:
```
元素 1 出现了 1 次
元素 2 出现了 2 次
元素 3 出现了 1 次
元素 4 出现了 1 次
元素 5 出现了 1 次
元素 6 出现了 1 次
```
阅读全文